diff --git a/.eslintrc.json b/.eslintrc.json
index 355ff1839..e95ead59b 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,8 +1,7 @@
{
"env": {
"es6": true,
- "node": true,
- "mocha": true
+ "node": true
},
"extends": [
"eslint:recommended",
@@ -67,7 +66,6 @@
"unicorn/prefer-set-has": "off",
"unicorn/prefer-spread": "off",
"unicorn/prefer-string-replace-all": "error",
- "unicorn/unicorn/no-lonely-if": "off",
"arrow-body-style": ["error", "as-needed"],
"curly": "error",
"no-console": "error",
@@ -84,6 +82,7 @@
}
}
],
+ "jsdoc/require-param-type": "error",
"jsdoc/tag-lines": ["warn", "any", { "startLines": 1 }],
"spaced-comment": ["warn", "always", { "block": { "exceptions": ["*"], "balanced": true } }]
},
@@ -103,7 +102,8 @@
"extends": ["plugin:mocha/recommended"],
"plugins": ["mocha"],
"rules": {
- "mocha/no-mocha-arrows": "off"
+ "mocha/no-mocha-arrows": "off",
+ "mocha/no-pending-tests": "off"
}
}
]
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index c133ed59c..a5c9d99d7 100644
--- a/.github/ISSUE_TEMPLATE/bug.yml
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -39,6 +39,7 @@ body:
label: Version
description: What version of our software are you running? (mcdev --version)
options:
+ - 5.2.0
- 5.1.0
- 5.0.2
- 5.0.1
diff --git a/.github/workflows/coverage-develop-branch.yml b/.github/workflows/coverage-develop-branch.yml
index d14c5fbe3..6122489af 100644
--- a/.github/workflows/coverage-develop-branch.yml
+++ b/.github/workflows/coverage-develop-branch.yml
@@ -26,8 +26,6 @@ jobs:
- run: npm ci --ignore-scripts
- - run: npm run lint
-
- name: Run mcdev-tests with coverage
run: npm run coverage
diff --git a/.github/workflows/coverage-main-branch.yml b/.github/workflows/coverage-main-branch.yml
index 9aa2b1ff3..00f3883ec 100644
--- a/.github/workflows/coverage-main-branch.yml
+++ b/.github/workflows/coverage-main-branch.yml
@@ -26,8 +26,6 @@ jobs:
- run: npm ci --ignore-scripts
- - run: npm run lint
-
- name: Run mcdev-tests with coverage
run: npm run coverage
diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml
index 82d75fb38..81689ff67 100644
--- a/.github/workflows/coverage.yml
+++ b/.github/workflows/coverage.yml
@@ -23,8 +23,6 @@ jobs:
- run: npm ci --ignore-scripts
- - run: npm run lint
-
- name: Run mcdev-tests with coverage
run: npm run coverage
diff --git a/.husky/post-checkout b/.husky/post-checkout
index 2607e40f5..5bf2cfe67 100644
--- a/.husky/post-checkout
+++ b/.husky/post-checkout
@@ -32,6 +32,7 @@ if [[ ${PACKAGES[@]} ]]; then
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
diff --git a/.husky/post-merge b/.husky/post-merge
index 06f668cd4..a5b4e597b 100644
--- a/.husky/post-merge
+++ b/.husky/post-merge
@@ -16,6 +16,7 @@ if [[ ${PACKAGES[@]} ]]; then
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
\ No newline at end of file
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 1228879f3..a71f41ad1 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -15,6 +15,10 @@
"editorconfig.editorconfig",
"esbenp.prettier-vscode",
+ // mcdev tests
+ "hbenl.vscode-mocha-test-adapter",
+ "IBM.output-colorizer",
+
// Markdown / Readme.md
"joernberkefeld.markdown-preview-bitbucket-innersource"
]
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 8027e7538..8a2189b07 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -17,6 +17,9 @@ Source and target business units are also compared before the deployment to appl
AttributeGroup ⇐ MetadataType
AttributeGroup MetadataType
+AttributeSet ⇐ MetadataType
+AttributeSet MetadataType
+
Automation ⇐ MetadataType
Automation MetadataType
@@ -105,9 +108,6 @@ Provides default functionality that can be overwritten by child metadata type cl
SendClassification ⇐ MetadataType
SendClassification MetadataType
-SetDefinition ⇐ MetadataType
-SetDefinition MetadataType
-
TransactionalEmail ⇐ TransactionalMessage
TransactionalEmail MetadataType
@@ -186,11 +186,38 @@ Provides default functionality that can be overwritten by child metadata type cl
csvToArray(csv) ⇒ Array.<string>
helper to convert CSVs into an array. if only one value was given, it's also returned as an array
+Mcdev.(methodName, businessUnit, [selectedType], [keys]) ⇒ Promise.<Object.<string, Array.<string>>>
+run a method across BUs
+
+Mcdev.(methodName, cred, bu, [type], keyArr) ⇒ Promise.<Array.<string>>
+helper for Mcdev.#runMethod
+
+Mcdev.(selectedType, buObject) ⇒ Array.<string>
+helper for Mcdev.#runOnBU
+
+Mcdev.(cred, bu, type, [keyArr]) ⇒ Promise.<Array.<string>>
+Updates the key to match the name field
+
+Automation.(metadata) ⇒ boolean
+helper for postRetrieveTasks and execute
+
+Automation.(metadataMap, key) ⇒ Promise.<{key:string, response:object}>
+helper for execute
+
+Automation.(metadataEntry) ⇒ Promise.<{key:string, response:object}>
+helper for execute
+
+Automation.(metadata) ⇒ Promise.<{key:string, response:object}>
+helper for pause
+
+Automation.(metadata)
+helper for preDeployTasks and execute
+
Automation.(metadataMap, key) ⇒ Promise.<void>
helper for postDeployTasks
-Automation.(metadataMap, originalMetadataMap, key)
-helper for postDeployTasks
+Automation.(metadataMap, originalMetadataMap, key, [oldKey]) ⇒ Promise.<{key:string, response:object}>
+helper for postDeployTasks
getUserName(userList, item, fieldname) ⇒ string
@@ -371,10 +398,10 @@ Source and target business units are also compared before the deployment to appl
* [new Deployer(properties, buObject)](#new_Deployer_new)
* _instance_
* [.metadata](#Deployer+metadata) : TYPE.MultiMetadataTypeMap
- * [._deploy([typeArr], [keyArr], [fromRetrieve], [isRefresh])](#Deployer+_deploy) ⇒ Promise.<TYPE.MultiMetadataTypeMap>
+ * [._deploy([typeArr], [keyArr])](#Deployer+_deploy) ⇒ Promise.<TYPE.MultiMetadataTypeMap>
* _static_
- * [.deploy(businessUnit, [selectedTypesArr], [keyArr], [fromRetrieve])](#Deployer.deploy) ⇒ Promise.<Object.<string, TYPE.MultiMetadataTypeMap>>
- * [._deployBU(cred, bu, properties, [typeArr], [keyArr], [fromRetrieve])](#Deployer._deployBU) ⇒ Promise.<TYPE.MultiMetadataTypeMap>
+ * [.deploy(businessUnit, [selectedTypesArr], [keyArr])](#Deployer.deploy) ⇒ Promise.<Object.<string, TYPE.MultiMetadataTypeMap>>
+ * [._deployBU(cred, bu, properties, [typeArr], [keyArr])](#Deployer._deployBU) ⇒ Promise.<TYPE.MultiMetadataTypeMap>
* [.readBUMetadata(deployDir, [typeArr], [listBadKeys])](#Deployer.readBUMetadata) ⇒ TYPE.MultiMetadataTypeMap
* [.createFolderDefinitions(deployDir, metadata, metadataTypeArr)](#Deployer.createFolderDefinitions) ⇒ void
@@ -395,7 +422,7 @@ Creates a Deployer, uses v2 auth if v2AuthOptions are passed.
**Kind**: instance property of [Deployer
](#Deployer)
-### deployer.\_deploy([typeArr], [keyArr], [fromRetrieve], [isRefresh]) ⇒ Promise.<TYPE.MultiMetadataTypeMap>
+### deployer.\_deploy([typeArr], [keyArr]) ⇒ Promise.<TYPE.MultiMetadataTypeMap>
Deploy all metadata that is located in the deployDir
**Kind**: instance method of [Deployer
](#Deployer)
@@ -405,12 +432,10 @@ Deploy all metadata that is located in the deployDir
| --- | --- | --- |
| [typeArr] | Array.<TYPE.SupportedMetadataTypes>
| limit deployment to given metadata type (can include subtype) |
| [keyArr] | Array.<string>
| limit deployment to given metadata keys |
-| [fromRetrieve] | boolean
| if true, no folders will be updated/created |
-| [isRefresh] | boolean
| optional flag to indicate that triggeredSend should be refreshed after deployment of assets |
-### Deployer.deploy(businessUnit, [selectedTypesArr], [keyArr], [fromRetrieve]) ⇒ Promise.<Object.<string, TYPE.MultiMetadataTypeMap>>
+### Deployer.deploy(businessUnit, [selectedTypesArr], [keyArr]) ⇒ Promise.<Object.<string, TYPE.MultiMetadataTypeMap>>
Deploys all metadata located in the 'deploy' directory to the specified business unit
**Kind**: static method of [Deployer
](#Deployer)
@@ -421,12 +446,11 @@ Deploys all metadata located in the 'deploy' directory to the specified business
| businessUnit | string
| references credentials from properties.json |
| [selectedTypesArr] | Array.<TYPE.SupportedMetadataTypes>
| limit deployment to given metadata type |
| [keyArr] | Array.<string>
| limit deployment to given metadata keys |
-| [fromRetrieve] | boolean
| optionally deploy whats defined via selectedTypesArr + keyArr directly from retrieve folder instead of from deploy folder |
-### Deployer.\_deployBU(cred, bu, properties, [typeArr], [keyArr], [fromRetrieve]) ⇒ Promise.<TYPE.MultiMetadataTypeMap>
-helper for [deploy](deploy)
+### Deployer.\_deployBU(cred, bu, properties, [typeArr], [keyArr]) ⇒ Promise.<TYPE.MultiMetadataTypeMap>
+helper for [deploy](#Deployer.deploy)
**Kind**: static method of [Deployer
](#Deployer)
**Returns**: Promise.<TYPE.MultiMetadataTypeMap>
- ensure that BUs are worked on sequentially
@@ -438,7 +462,6 @@ helper for [deploy](deploy)
| properties | TYPE.Mcdevrc
| General configuration to be used in retrieve |
| [typeArr] | Array.<TYPE.SupportedMetadataTypes>
| limit deployment to given metadata type |
| [keyArr] | Array.<string>
| limit deployment to given metadata keys |
-| [fromRetrieve] | boolean
| optionally deploy whats defined via selectedTypesArr + keyArr directly from retrieve folder instead of from deploy folder |
@@ -448,11 +471,11 @@ Returns metadata of a business unit that is saved locally
**Kind**: static method of [Deployer
](#Deployer)
**Returns**: TYPE.MultiMetadataTypeMap
- Metadata of BU in local directory
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| deployDir | string
| | root directory of metadata. |
-| [typeArr] | Array.<string>
| | limit deployment to given metadata type |
-| [listBadKeys] | boolean
| false
| do not print errors, used for badKeys() |
+| Param | Type | Description |
+| --- | --- | --- |
+| deployDir | string
| root directory of metadata. |
+| [typeArr] | Array.<string>
| limit deployment to given metadata type |
+| [listBadKeys] | boolean
| do not print errors, used for badKeys() |
@@ -483,7 +506,7 @@ main class
* [.explainTypes()](#Mcdev.explainTypes) ⇒ Array.<object>
* [.upgrade()](#Mcdev.upgrade) ⇒ Promise.<boolean>
* [.retrieve(businessUnit, [selectedTypesArr], [keys], [changelogOnly])](#Mcdev.retrieve) ⇒ Promise.<object>
- * [.deploy(businessUnit, [selectedTypesArr], [keyArr], [fromRetrieve])](#Mcdev.deploy) ⇒ Promise.<Object.<string, TYPE.MultiMetadataTypeMap>>
+ * [.deploy(businessUnit, [selectedTypesArr], [keyArr])](#Mcdev.deploy) ⇒ Promise.<Object.<string, TYPE.MultiMetadataTypeMap>>
* [.initProject([credentialsName])](#Mcdev.initProject) ⇒ Promise.<void>
* [.joinProject()](#Mcdev.joinProject) ⇒ Promise.<void>
* [.findBUs(credentialsName)](#Mcdev.findBUs) ⇒ Promise.<void>
@@ -496,8 +519,10 @@ main class
* [.buildDefinition(businessUnit, selectedType, name, market)](#Mcdev.buildDefinition) ⇒ Promise.<void>
* [.buildDefinitionBulk(listName, type, name)](#Mcdev.buildDefinitionBulk) ⇒ Promise.<void>
* [.getFilesToCommit(businessUnit, selectedType, keyArr)](#Mcdev.getFilesToCommit) ⇒ Promise.<Array.<string>>
- * [.execute(businessUnit, [selectedTypesArr], keys)](#Mcdev.execute) ⇒ Promise.<boolean>
- * [._executeBU(cred, bu, [selectedTypesArr], keyArr)](#Mcdev._executeBU) ⇒ Promise.<boolean>
+ * [.schedule(businessUnit, [selectedType], [keys])](#Mcdev.schedule) ⇒ Promise.<Object.<string, Array.<string>>>
+ * [.execute(businessUnit, [selectedType], [keys])](#Mcdev.execute) ⇒ Promise.<Object.<string, Array.<string>>>
+ * [.pause(businessUnit, [selectedType], [keys])](#Mcdev.pause) ⇒ Promise.<Object.<string, Array.<string>>>
+ * [.fixKeys(businessUnit, selectedType, [keys])](#Mcdev.fixKeys) ⇒ Promise.<Object.<string, Array.<string>>>
@@ -582,18 +607,17 @@ Retrieve all metadata from the specified business unit into the local file syste
-### Mcdev.deploy(businessUnit, [selectedTypesArr], [keyArr], [fromRetrieve]) ⇒ Promise.<Object.<string, TYPE.MultiMetadataTypeMap>>
+### Mcdev.deploy(businessUnit, [selectedTypesArr], [keyArr]) ⇒ Promise.<Object.<string, TYPE.MultiMetadataTypeMap>>
Deploys all metadata located in the 'deploy' directory to the specified business unit
**Kind**: static method of [Mcdev
](#Mcdev)
**Returns**: Promise.<Object.<string, TYPE.MultiMetadataTypeMap>>
- deployed metadata per BU (first key: bu name, second key: metadata type)
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| businessUnit | string
| | references credentials from properties.json |
-| [selectedTypesArr] | Array.<TYPE.SupportedMetadataTypes>
| | limit deployment to given metadata type |
-| [keyArr] | Array.<string>
| | limit deployment to given metadata keys |
-| [fromRetrieve] | boolean
| false
| optionally deploy whats defined via selectedTypesArr + keyArr directly from retrieve folder instead of from deploy folder |
+| Param | Type | Description |
+| --- | --- | --- |
+| businessUnit | string
| references credentials from properties.json |
+| [selectedTypesArr] | Array.<TYPE.SupportedMetadataTypes>
| limit deployment to given metadata type |
+| [keyArr] | Array.<string>
| limit deployment to given metadata keys |
@@ -750,34 +774,61 @@ Build a specific metadata file based on a template using a list of bu-market com
| selectedType | string
| supported metadata type |
| keyArr | Array.<string>
| customerkey of the metadata |
+
+
+### Mcdev.schedule(businessUnit, [selectedType], [keys]) ⇒ Promise.<Object.<string, Array.<string>>>
+Schedule an item (shortcut for execute --schedule)
+
+**Kind**: static method of [Mcdev
](#Mcdev)
+**Returns**: Promise.<Object.<string, Array.<string>>>
- key: business unit name, value: list of scheduled item keys
+
+| Param | Type | Description |
+| --- | --- | --- |
+| businessUnit | string
| name of BU |
+| [selectedType] | TYPE.SupportedMetadataTypes
| limit to given metadata types |
+| [keys] | Array.<string>
| customerkey of the metadata |
+
-### Mcdev.execute(businessUnit, [selectedTypesArr], keys) ⇒ Promise.<boolean>
-Start an item (query)
+### Mcdev.execute(businessUnit, [selectedType], [keys]) ⇒ Promise.<Object.<string, Array.<string>>>
+Start/execute an item
**Kind**: static method of [Mcdev
](#Mcdev)
-**Returns**: Promise.<boolean>
- true if all started successfully, false if not
+**Returns**: Promise.<Object.<string, Array.<string>>>
- key: business unit name, value: list of executed item keys
| Param | Type | Description |
| --- | --- | --- |
| businessUnit | string
| name of BU |
-| [selectedTypesArr] | Array.<TYPE.SupportedMetadataTypes>
| limit to given metadata types |
-| keys | Array.<string>
| customerkey of the metadata |
+| [selectedType] | TYPE.SupportedMetadataTypes
| limit to given metadata types |
+| [keys] | Array.<string>
| customerkey of the metadata |
-
+
-### Mcdev.\_executeBU(cred, bu, [selectedTypesArr], keyArr) ⇒ Promise.<boolean>
-helper for [execute](execute)
+### Mcdev.pause(businessUnit, [selectedType], [keys]) ⇒ Promise.<Object.<string, Array.<string>>>
+pause an item
**Kind**: static method of [Mcdev
](#Mcdev)
-**Returns**: Promise.<boolean>
- true if all items were executed, false otherwise
+**Returns**: Promise.<Object.<string, Array.<string>>>
- key: business unit name, value: list of paused item keys
| Param | Type | Description |
| --- | --- | --- |
-| cred | string
| name of Credential |
-| bu | string
| name of BU |
-| [selectedTypesArr] | Array.<TYPE.SupportedMetadataTypes>
| limit execution to given metadata type |
-| keyArr | Array.<string>
| customerkey of the metadata |
+| businessUnit | string
| name of BU |
+| [selectedType] | TYPE.SupportedMetadataTypes
| limit to given metadata types |
+| [keys] | Array.<string>
| customerkey of the metadata |
+
+
+
+### Mcdev.fixKeys(businessUnit, selectedType, [keys]) ⇒ Promise.<Object.<string, Array.<string>>>
+Updates the key to match the name field
+
+**Kind**: static method of [Mcdev
](#Mcdev)
+**Returns**: Promise.<Object.<string, Array.<string>>>
- key: business unit name, value: list of paused item keys
+
+| Param | Type | Description |
+| --- | --- | --- |
+| businessUnit | string
| name of BU |
+| selectedType | TYPE.SupportedMetadataTypes
| limit to given metadata types |
+| [keys] | Array.<string>
| customerkey of the metadata |
@@ -798,7 +849,7 @@ FileTransfer MetadataType
* [._retrieveExtendedFile(metadata, subType, retrieveDir)](#Asset._retrieveExtendedFile) ⇒ Promise.<void>
* [._readExtendedFileFromFS(metadata, subType, deployDir, [pathOnly])](#Asset._readExtendedFileFromFS) ⇒ Promise.<string>
* [.postRetrieveTasks(metadata)](#Asset.postRetrieveTasks) ⇒ TYPE.CodeExtractItem
- * [.postDeployTasks(metadata, _, createdUpdated, [isRefresh])](#Asset.postDeployTasks) ⇒ Promise.<void>
+ * [.postDeployTasks(metadata, _, createdUpdated)](#Asset.postDeployTasks) ⇒ Promise.<void>
* [.preDeployTasks(metadata, deployDir)](#Asset.preDeployTasks) ⇒ Promise.<TYPE.AssetItem>
* [._getMainSubtype(extendedSubType)](#Asset._getMainSubtype) ⇒ string
* [.buildDefinitionForNested(templateDir, targetDir, metadata, templateVariables, templateName)](#Asset.buildDefinitionForNested) ⇒ Promise.<void>
@@ -931,7 +982,7 @@ This method retrieves these and saves them alongside the metadata json
### Asset.\_readExtendedFileFromFS(metadata, subType, deployDir, [pathOnly]) ⇒ Promise.<string>
-helper for [preDeployTasks](preDeployTasks)
+helper for [preDeployTasks](#Asset.preDeployTasks)
Some metadata types store their actual content as a separate file, e.g. images
This method reads these from the local FS stores them in the metadata object allowing to deploy it
@@ -959,7 +1010,7 @@ manages post retrieve steps
-### Asset.postDeployTasks(metadata, _, createdUpdated, [isRefresh]) ⇒ Promise.<void>
+### Asset.postDeployTasks(metadata, _, createdUpdated) ⇒ Promise.<void>
Gets executed after deployment of metadata type
**Kind**: static method of [Asset
](#Asset)
@@ -970,7 +1021,6 @@ Gets executed after deployment of metadata type
| metadata | TYPE.MetadataTypeMap
| metadata mapped by their keyField |
| _ | TYPE.MetadataTypeMap
| originalMetadata to be updated (contains additioanl fields) |
| createdUpdated | Object
| counter representing successful creates/updates |
-| [isRefresh] | boolean
| optional flag to indicate that triggeredSend should be refreshed after deployment of assets |
@@ -1078,7 +1128,7 @@ Asset-specific script that retrieves the folder ID from cache and updates the gi
### Asset.\_mergeCode(metadata, deployDir, subType, [templateName], [fileListOnly]) ⇒ Promise.<Array.<TYPE.CodeExtract>>
-helper for [preDeployTasks](preDeployTasks) that loads extracted code content back into JSON
+helper for [preDeployTasks](#Asset.preDeployTasks) that loads extracted code content back into JSON
**Kind**: static method of [Asset
](#Asset)
**Returns**: Promise.<Array.<TYPE.CodeExtract>>
- fileList for templating (disregarded during deployment)
@@ -1094,7 +1144,7 @@ helper for [preDeployTasks](preDeployTasks) that loads extracted code content ba
### Asset.\_mergeCode\_slots(prefix, metadataSlots, readDirArr, subtypeExtension, subDirArr, fileList, customerKey, [templateName], [fileListOnly]) ⇒ Promise.<void>
-helper for [preDeployTasks](preDeployTasks) that loads extracted code content back into JSON
+helper for [preDeployTasks](#Asset.preDeployTasks) that loads extracted code content back into JSON
**Kind**: static method of [Asset
](#Asset)
**Returns**: Promise.<void>
- -
@@ -1114,7 +1164,7 @@ helper for [preDeployTasks](preDeployTasks) that loads extracted code content ba
### Asset.\_extractCode(metadata) ⇒ TYPE.CodeExtractItem
-helper for [postRetrieveTasks](postRetrieveTasks) that finds code content in JSON and extracts it
+helper for [postRetrieveTasks](#Asset.postRetrieveTasks) that finds code content in JSON and extracts it
to allow saving that separately and formatted
**Kind**: static method of [Asset
](#Asset)
@@ -1201,6 +1251,7 @@ AttributeGroup MetadataType
* [AttributeGroup](#AttributeGroup) ⇐ [MetadataType
](#MetadataType)
* [.retrieve(retrieveDir, [_], [__], [key])](#AttributeGroup.retrieve) ⇒ Promise.<TYPE.MetadataTypeMapObj>
* [.retrieveForCache()](#AttributeGroup.retrieveForCache) ⇒ Promise.<TYPE.MetadataTypeMapObj>
+ * [.postRetrieveTasks(metadata)](#AttributeGroup.postRetrieveTasks) ⇒ TYPE.MetadataTypeItem
@@ -1224,6 +1275,87 @@ Retrieves Metadata of schema attribute groups for caching.
**Kind**: static method of [AttributeGroup
](#AttributeGroup)
**Returns**: Promise.<TYPE.MetadataTypeMapObj>
- Promise of metadata
+
+
+### AttributeGroup.postRetrieveTasks(metadata) ⇒ TYPE.MetadataTypeItem
+manages post retrieve steps
+
+**Kind**: static method of [AttributeGroup
](#AttributeGroup)
+**Returns**: TYPE.MetadataTypeItem
- metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | TYPE.MetadataTypeItem
| a single metadata |
+
+
+
+## AttributeSet ⇐ [MetadataType
](#MetadataType)
+AttributeSet MetadataType
+
+**Kind**: global class
+**Extends**: [MetadataType
](#MetadataType)
+
+* [AttributeSet](#AttributeSet) ⇐ [MetadataType
](#MetadataType)
+ * [.retrieve(retrieveDir, [_], [__], [key])](#AttributeSet.retrieve) ⇒ Promise.<TYPE.MetadataTypeMapObj>
+ * [.retrieveForCache()](#AttributeSet.retrieveForCache) ⇒ Promise.<TYPE.MetadataTypeMapObj>
+ * [.parseResponseBody(body, [singleRetrieve])](#AttributeSet.parseResponseBody) ⇒ TYPE.MetadataTypeMap
+ * [.postRetrieveTasks(metadata)](#AttributeSet.postRetrieveTasks) ⇒ TYPE.MetadataTypeItem
+ * [._getSystemValueDefinitions()](#AttributeSet._getSystemValueDefinitions) ⇒ Array.<object>
+
+
+
+### AttributeSet.retrieve(retrieveDir, [_], [__], [key]) ⇒ Promise.<TYPE.MetadataTypeMapObj>
+Retrieves Metadata of schema set Definitions.
+
+**Kind**: static method of [AttributeSet
](#AttributeSet)
+**Returns**: Promise.<TYPE.MetadataTypeMapObj>
- Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | string
| Directory where retrieved metadata directory will be saved |
+| [_] | void
| unused parameter |
+| [__] | void
| unused parameter |
+| [key] | string
| customer key of single item to retrieve |
+
+
+
+### AttributeSet.retrieveForCache() ⇒ Promise.<TYPE.MetadataTypeMapObj>
+Retrieves Metadata of schema set definitions for caching.
+
+**Kind**: static method of [AttributeSet
](#AttributeSet)
+**Returns**: Promise.<TYPE.MetadataTypeMapObj>
- Promise
+
+
+### AttributeSet.parseResponseBody(body, [singleRetrieve]) ⇒ TYPE.MetadataTypeMap
+Builds map of metadata entries mapped to their keyfields
+
+**Kind**: static method of [AttributeSet
](#AttributeSet)
+**Returns**: TYPE.MetadataTypeMap
- keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| body | object
| json of response body |
+| [singleRetrieve] | string
\| number
| key of single item to filter by |
+
+
+
+### AttributeSet.postRetrieveTasks(metadata) ⇒ TYPE.MetadataTypeItem
+manages post retrieve steps
+
+**Kind**: static method of [AttributeSet
](#AttributeSet)
+**Returns**: TYPE.MetadataTypeItem
- metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | TYPE.MetadataTypeItem
| a single metadata |
+
+
+
+### AttributeSet.\_getSystemValueDefinitions() ⇒ Array.<object>
+helper for [postRetrieveTasks](#AttributeSet.postRetrieveTasks)
+
+**Kind**: static method of [AttributeSet
](#AttributeSet)
+**Returns**: Array.<object>
- all system value definitions
## Automation ⇐ [MetadataType
](#MetadataType)
@@ -1238,7 +1370,10 @@ Automation MetadataType
* [.retrieveForCache()](#Automation.retrieveForCache) ⇒ Promise.<TYPE.AutomationMapObj>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Automation.retrieveAsTemplate) ⇒ Promise.<TYPE.AutomationItemObj>
* [.postRetrieveTasks(metadata)](#Automation.postRetrieveTasks) ⇒ TYPE.AutomationItem
\| void
- * [.deploy(metadata, targetBU, retrieveDir, [isRefresh])](#Automation.deploy) ⇒ Promise.<TYPE.AutomationMap>
+ * [.execute(keyArr)](#Automation.execute) ⇒ Promise.<Array.<string>>
+ * [.getErrorsREST(ex)](#Automation.getErrorsREST) ⇒ Array.<string>
\| void
+ * [.pause(keyArr)](#Automation.pause) ⇒ Promise.<Array.<string>>
+ * [.deploy(metadata, targetBU, retrieveDir)](#Automation.deploy) ⇒ Promise.<TYPE.AutomationMap>
* [.create(metadata)](#Automation.create) ⇒ Promise
* [.update(metadata, metadataBefore)](#Automation.update) ⇒ Promise
* [.preDeployTasks(metadata)](#Automation.preDeployTasks) ⇒ Promise.<TYPE.AutomationItem>
@@ -1308,9 +1443,45 @@ manages post retrieve steps
| --- | --- | --- |
| metadata | TYPE.AutomationItem
| a single automation |
+
+
+### Automation.execute(keyArr) ⇒ Promise.<Array.<string>>
+a function to start query execution via API
+
+**Kind**: static method of [Automation
](#Automation)
+**Returns**: Promise.<Array.<string>>
- Returns list of keys that were executed
+
+| Param | Type | Description |
+| --- | --- | --- |
+| keyArr | Array.<string>
| customerkey of the metadata |
+
+
+
+### Automation.getErrorsREST(ex) ⇒ Array.<string>
\| void
+Standardizes a check for multiple messages but adds query specific filters to error texts
+
+**Kind**: static method of [Automation
](#Automation)
+**Returns**: Array.<string>
\| void
- formatted Error Message
+
+| Param | Type | Description |
+| --- | --- | --- |
+| ex | object
| response payload from REST API |
+
+
+
+### Automation.pause(keyArr) ⇒ Promise.<Array.<string>>
+a function to start query execution via API
+
+**Kind**: static method of [Automation
](#Automation)
+**Returns**: Promise.<Array.<string>>
- Returns list of keys that were paused
+
+| Param | Type | Description |
+| --- | --- | --- |
+| keyArr | Array.<string>
| customerkey of the metadata |
+
-### Automation.deploy(metadata, targetBU, retrieveDir, [isRefresh]) ⇒ Promise.<TYPE.AutomationMap>
+### Automation.deploy(metadata, targetBU, retrieveDir) ⇒ Promise.<TYPE.AutomationMap>
Deploys automation - the saved file is the original one due to large differences required for deployment
**Kind**: static method of [Automation
](#Automation)
@@ -1321,7 +1492,6 @@ Deploys automation - the saved file is the original one due to large differences
| metadata | TYPE.AutomationMap
| metadata mapped by their keyField |
| targetBU | string
| name/shorthand of target businessUnit for mapping |
| retrieveDir | string
| directory where metadata after deploy should be saved |
-| [isRefresh] | boolean
| optional flag - so far not used by automation |
@@ -1869,7 +2039,7 @@ Retrieves all records for caching
### DataExtensionField.convertToSortedArray(fieldsObj) ⇒ Array.<TYPE.DataExtensionFieldItem>
-helper for [DataExtension._retrieveFieldsForSingleDe](DataExtension._retrieveFieldsForSingleDe) that sorts the fields into an array
+helper for DataExtension.retrieveFieldsForSingleDe that sorts the fields into an array
**Kind**: static method of [DataExtensionField
](#DataExtensionField)
**Returns**: Array.<TYPE.DataExtensionFieldItem>
- sorted array of field objects
@@ -2335,7 +2505,7 @@ Event MetadataType
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Event.retrieveAsTemplate) ⇒ Promise.<TYPE.MetadataTypeItemObj>
* [.postRetrieveTasks(eventDef)](#Event.postRetrieveTasks) ⇒ TYPE.MetadataTypeItem
* [.deleteByKey(key)](#Event.deleteByKey) ⇒ Promise.<boolean>
- * [.deploy(metadata, deployDir, retrieveDir, [isRefresh])](#Event.deploy) ⇒ Promise.<TYPE.MetadataTypeMap>
+ * [.deploy(metadata, deployDir, retrieveDir)](#Event.deploy) ⇒ Promise.<TYPE.MetadataTypeMap>
* [.create(metadata)](#Event.create) ⇒ Promise
* [.update(metadataEntry)](#Event.update) ⇒ Promise
* [.preDeployTasks(metadata)](#Event.preDeployTasks) ⇒ TYPE.MetadataTypeItem
@@ -2405,7 +2575,7 @@ Delete a metadata item from the specified business unit
-### Event.deploy(metadata, deployDir, retrieveDir, [isRefresh]) ⇒ Promise.<TYPE.MetadataTypeMap>
+### Event.deploy(metadata, deployDir, retrieveDir) ⇒ Promise.<TYPE.MetadataTypeMap>
Deploys metadata - merely kept here to be able to print [logBeta](#Util.logBeta) once per deploy
**Kind**: static method of [Event
](#Event)
@@ -2416,7 +2586,6 @@ Deploys metadata - merely kept here to be able to print [logBeta](#Util.logBeta)
| metadata | TYPE.MetadataTypeMap
| metadata mapped by their keyField |
| deployDir | string
| directory where deploy metadata are saved |
| retrieveDir | string
| directory where metadata after deploy should be saved |
-| [isRefresh] | boolean
| optional flag - so far not used by eventDefinition |
@@ -2747,10 +2916,10 @@ Returns file contents mapped to their filename without '.json' ending
**Kind**: static method of [Folder
](#Folder)
**Returns**: TYPE.MetadataTypeMap
- fileName => fileContent map
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| dir | string
| | directory that contains '.json' files to be read |
-| [listBadKeys] | boolean
| false
| do not print errors, used for badKeys() |
+| Param | Type | Description |
+| --- | --- | --- |
+| dir | string
| directory that contains '.json' files to be read |
+| [listBadKeys] | boolean
| do not print errors, used for badKeys() |
@@ -2923,7 +3092,7 @@ definitionId: A unique UUID provided by Salesforce Marketing Cloud. Each version
* [Journey](#Journey) ⇐ [MetadataType
](#MetadataType)
* [.retrieve(retrieveDir, [_], [__], [key])](#Journey.retrieve) ⇒ Promise.<TYPE.MetadataTypeMapObj>
* [.deleteByKey(key)](#Journey.deleteByKey) ⇒ Promise.<boolean>
- * [.deploy(metadata, deployDir, retrieveDir, [isRefresh])](#Journey.deploy) ⇒ Promise.<TYPE.MetadataTypeMap>
+ * [.deploy(metadata, deployDir, retrieveDir)](#Journey.deploy) ⇒ Promise.<TYPE.MetadataTypeMap>
* [.update(metadata)](#Journey.update) ⇒ Promise
* [.create(metadata)](#Journey.create) ⇒ Promise
* [.saveResults(results, retrieveDir, [overrideType], [templateVariables])](#Journey.saveResults) ⇒ Promise.<TYPE.MetadataTypeMap>
@@ -2961,7 +3130,7 @@ Delete a metadata item from the specified business unit
-### Journey.deploy(metadata, deployDir, retrieveDir, [isRefresh]) ⇒ Promise.<TYPE.MetadataTypeMap>
+### Journey.deploy(metadata, deployDir, retrieveDir) ⇒ Promise.<TYPE.MetadataTypeMap>
Deploys metadata - merely kept here to be able to print [logBeta](#Util.logBeta) once per deploy
**Kind**: static method of [Journey
](#Journey)
@@ -2972,7 +3141,6 @@ Deploys metadata - merely kept here to be able to print [logBeta](#Util.logBeta)
| metadata | TYPE.MetadataTypeMap
| metadata mapped by their keyField |
| deployDir | string
| directory where deploy metadata are saved |
| retrieveDir | string
| directory where metadata after deploy should be saved |
-| [isRefresh] | boolean
| optional flag - so far not used by interaction |
@@ -3016,7 +3184,7 @@ Helper for writing Metadata to disk, used for Retrieve and deploy
### Journey.\_postRetrieveTasksBulk(metadataMap)
-helper for Journey's [saveResults](saveResults). Gets executed after retreive of metadata type and
+helper for Journey's [saveResults](#Journey.saveResults). Gets executed after retreive of metadata type and
**Kind**: static method of [Journey
](#Journey)
@@ -3155,8 +3323,8 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.buObject](#MetadataType.buObject) : TYPE.BuObject
* [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ TYPE.MetadataTypeMap
* [.getFieldNamesToRetrieve([additionalFields], [isCaching])](#MetadataType.getFieldNamesToRetrieve) ⇒ Array.<string>
- * [.deploy(metadata, deployDir, retrieveDir, [isRefresh])](#MetadataType.deploy) ⇒ Promise.<TYPE.MetadataTypeMap>
- * [.postDeployTasks(upsertResults, originalMetadata, createdUpdated, [isRefresh])](#MetadataType.postDeployTasks) ⇒ void
+ * [.deploy(metadata, deployDir, retrieveDir)](#MetadataType.deploy) ⇒ Promise.<TYPE.MetadataTypeMap>
+ * [.postDeployTasks(upsertResults, originalMetadata, createdUpdated)](#MetadataType.postDeployTasks) ⇒ void
* [.postCreateTasks(metadataEntry, apiResponse)](#MetadataType.postCreateTasks) ⇒ void
* [.postUpdateTasks(metadataEntry, apiResponse)](#MetadataType.postUpdateTasks) ⇒ void
* [.postDeployTasks_legacyApi(metadataEntry, apiResponse)](#MetadataType.postDeployTasks_legacyApi) ⇒ Promise.<void>
@@ -3174,9 +3342,10 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.update(metadata, [metadataBefore])](#MetadataType.update) ⇒ void
* [.refresh()](#MetadataType.refresh) ⇒ void
* [.execute()](#MetadataType.execute) ⇒ void
+ * [.pause()](#MetadataType.pause) ⇒ void
* [.hasChanged(cachedVersion, metadata, [fieldName])](#MetadataType.hasChanged) ⇒ boolean
* [.hasChangedGeneric(cachedVersion, metadata, [fieldName], [silent])](#MetadataType.hasChangedGeneric) ⇒ boolean
- * [.upsert(metadataMap, deployDir, [isRefresh])](#MetadataType.upsert) ⇒ Promise.<TYPE.MetadataTypeMap>
+ * [.upsert(metadataMap, deployDir)](#MetadataType.upsert) ⇒ Promise.<TYPE.MetadataTypeMap>
* [.createOrUpdate(metadataMap, metadataKey, hasError, metadataToUpdate, metadataToCreate)](#MetadataType.createOrUpdate) ⇒ 'create'
\| 'update'
\| 'skip'
* [.createREST(metadataEntry, uri)](#MetadataType.createREST) ⇒ Promise.<object>
\| null
* [.createSOAP(metadataEntry, [handleOutside])](#MetadataType.createSOAP) ⇒ Promise.<object>
\| null
@@ -3186,7 +3355,8 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.getSOAPErrorMsg(ex)](#MetadataType.getSOAPErrorMsg) ⇒ string
* [.retrieveSOAP(retrieveDir, [requestParams], [singleRetrieve], [additionalFields])](#MetadataType.retrieveSOAP) ⇒ Promise.<TYPE.MetadataTypeMapObj>
* [.retrieveREST(retrieveDir, uri, [templateVariables], [singleRetrieve])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata: (TYPE.MetadataTypeMap\|TYPE.MetadataTypeItem), type: string}>
- * [.executeREST(uri, key)](#MetadataType.executeREST) ⇒ Promise.<string>
+ * [.executeREST(uri, key)](#MetadataType.executeREST) ⇒ Promise.<{key:string, response:string}>
+ * [.executeSOAP([metadataEntry])](#MetadataType.executeSOAP) ⇒ Promise.<{key:string, response:object}>
* [.runDocumentOnRetrieve([singleRetrieve], metadataMap)](#MetadataType.runDocumentOnRetrieve) ⇒ Promise.<void>
* [.parseResponseBody(body, [singleRetrieve])](#MetadataType.parseResponseBody) ⇒ TYPE.MetadataTypeMap
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
@@ -3204,7 +3374,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.findSubType(templateDir, templateName)](#MetadataType.findSubType) ⇒ Promise.<string>
* [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ object
* [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<TYPE.MetadataTypeMapObj>
- * [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ Array.<string>
\| void
+ * [.getErrorsREST(ex)](#MetadataType.getErrorsREST) ⇒ Array.<string>
\| void
* [.document([metadata], [isDeploy])](#MetadataType.document) ⇒ void
* [.deleteByKey(customerKey)](#MetadataType.deleteByKey) ⇒ boolean
* [.postDeleteTasks(customerKey, [additionalExtensions])](#MetadataType.postDeleteTasks) ⇒ Promise.<void>
@@ -3212,6 +3382,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.deleteByKeyREST(url, key, [handleOutside])](#MetadataType.deleteByKeyREST) ⇒ boolean
* [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ object
* [.getFilesToCommit(keyArr)](#MetadataType.getFilesToCommit) ⇒ Promise.<Array.<string>>
+ * [.getKeysForFixing(metadataMap)](#MetadataType.getKeysForFixing) ⇒ Array.<string>
@@ -3237,10 +3408,10 @@ Returns file contents mapped to their filename without '.json' ending
**Kind**: static method of [MetadataType
](#MetadataType)
**Returns**: TYPE.MetadataTypeMap
- fileName => fileContent map
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| dir | string
| | directory that contains '.json' files to be read |
-| [listBadKeys] | boolean
| false
| do not print errors, used for badKeys() |
+| Param | Type | Description |
+| --- | --- | --- |
+| dir | string
| directory that contains '.json' files to be read |
+| [listBadKeys] | boolean
| do not print errors, used for badKeys() |
@@ -3257,7 +3428,7 @@ Returns fieldnames of Metadata Type. 'this.definition.fields' variable only set
-### MetadataType.deploy(metadata, deployDir, retrieveDir, [isRefresh]) ⇒ Promise.<TYPE.MetadataTypeMap>
+### MetadataType.deploy(metadata, deployDir, retrieveDir) ⇒ Promise.<TYPE.MetadataTypeMap>
Deploys metadata
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3268,11 +3439,10 @@ Deploys metadata
| metadata | TYPE.MetadataTypeMap
| metadata mapped by their keyField |
| deployDir | string
| directory where deploy metadata are saved |
| retrieveDir | string
| directory where metadata after deploy should be saved |
-| [isRefresh] | boolean
| optional flag to indicate that triggeredSend should be refreshed after deployment of assets |
-### MetadataType.postDeployTasks(upsertResults, originalMetadata, createdUpdated, [isRefresh]) ⇒ void
+### MetadataType.postDeployTasks(upsertResults, originalMetadata, createdUpdated) ⇒ void
Gets executed after deployment of metadata type
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3282,12 +3452,11 @@ Gets executed after deployment of metadata type
| upsertResults | TYPE.MetadataTypeMap
| metadata mapped by their keyField as returned by update/create |
| originalMetadata | TYPE.MetadataTypeMap
| metadata to be updated (contains additioanl fields) |
| createdUpdated | Object
| counter representing successful creates/updates |
-| [isRefresh] | boolean
| optional flag to indicate that triggeredSend should be refreshed after deployment of assets |
### MetadataType.postCreateTasks(metadataEntry, apiResponse) ⇒ void
-helper for [createREST](createREST)
+helper for [createREST](#MetadataType.createREST)
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3299,7 +3468,7 @@ helper for [createREST](createREST)
### MetadataType.postUpdateTasks(metadataEntry, apiResponse) ⇒ void
-helper for [updateREST](updateREST)
+helper for [updateREST](#MetadataType.updateREST)
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3311,7 +3480,7 @@ helper for [updateREST](updateREST)
### MetadataType.postDeployTasks\_legacyApi(metadataEntry, apiResponse) ⇒ Promise.<void>
-helper for [createREST](createREST) when legacy API endpoints as these do not return the created item but only their new id
+helper for [createREST](#MetadataType.createREST) when legacy API endpoints as these do not return the created item but only their new id
**Kind**: static method of [MetadataType
](#MetadataType)
**Returns**: Promise.<void>
- -
@@ -3492,6 +3661,12 @@ Abstract refresh method that needs to be implemented in child metadata type
### MetadataType.execute() ⇒ void
Abstract execute method that needs to be implemented in child metadata type
+**Kind**: static method of [MetadataType
](#MetadataType)
+
+
+### MetadataType.pause() ⇒ void
+Abstract pause method that needs to be implemented in child metadata type
+
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3524,7 +3699,7 @@ test if metadata was actually changed or not to potentially skip it during deplo
-### MetadataType.upsert(metadataMap, deployDir, [isRefresh]) ⇒ Promise.<TYPE.MetadataTypeMap>
+### MetadataType.upsert(metadataMap, deployDir) ⇒ Promise.<TYPE.MetadataTypeMap>
MetadataType upsert, after retrieving from target and comparing to check if create or update operation is needed.
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3534,7 +3709,6 @@ MetadataType upsert, after retrieving from target and comparing to check if crea
| --- | --- | --- |
| metadataMap | TYPE.MetadataTypeMap
| metadata mapped by their keyField |
| deployDir | string
| directory where deploy metadata are saved |
-| [isRefresh] | boolean
| optional flag to indicate that triggeredSend should be refreshed after deployment of assets |
@@ -3590,7 +3764,7 @@ Updates a single metadata entry via REST
| --- | --- | --- | --- |
| metadataEntry | TYPE.MetadataTypeItem
| | a single metadata Entry |
| uri | string
| | rest endpoint for PATCH |
-| [httpMethod] | 'patch'
\| 'post'
\| 'put'
| 'patch'
| defaults to 'patch'; some update requests require PUT instead of PATCH |
+| [httpMethod] | 'patch'
\| 'post'
\| 'put'
| patch
| defaults to 'patch'; some update requests require PUT instead of PATCH |
@@ -3620,7 +3794,7 @@ Updates a single metadata entry via fuel-soap (generic lib not wrapper)
### MetadataType.getSOAPErrorMsg(ex) ⇒ string
-helper for [_handleSOAPErrors](_handleSOAPErrors)
+helper for [_handleSOAPErrors](#MetadataType._handleSOAPErrors)
**Kind**: static method of [MetadataType
](#MetadataType)
**Returns**: string
- error message
@@ -3661,21 +3835,33 @@ Retrieves Metadata for Rest Types
-### MetadataType.executeREST(uri, key) ⇒ Promise.<string>
+### MetadataType.executeREST(uri, key) ⇒ Promise.<{key:string, response:string}>
Used to execute a query/automation etc.
**Kind**: static method of [MetadataType
](#MetadataType)
-**Returns**: Promise.<string>
- 'OK' if started execution successfully, otherwise - 'Error'
+**Returns**: Promise.<{key:string, response:string}>
- metadata key and API response (OK or error)
| Param | Type | Description |
| --- | --- | --- |
| uri | string
| REST endpoint where the POST request should be sent |
| key | string
| item key |
+
+
+### MetadataType.executeSOAP([metadataEntry]) ⇒ Promise.<{key:string, response:object}>
+Used to execute a query/automation etc.
+
+**Kind**: static method of [MetadataType
](#MetadataType)
+**Returns**: Promise.<{key:string, response:object}>
- metadata key and API response
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [metadataEntry] | TYPE.MetadataTypeItem
| single metadata entry |
+
### MetadataType.runDocumentOnRetrieve([singleRetrieve], metadataMap) ⇒ Promise.<void>
-helper for [retrieveREST](retrieveREST) and [retrieveSOAP](retrieveSOAP)
+helper for [retrieveREST](#MetadataType.retrieveREST) and [retrieveSOAP](#MetadataType.retrieveSOAP)
**Kind**: static method of [MetadataType
](#MetadataType)
**Returns**: Promise.<void>
- -
@@ -3769,10 +3955,10 @@ checks if the current metadata entry should be saved on retrieve or not
**Kind**: static method of [MetadataType
](#MetadataType)
**Returns**: boolean
- true: skip saving == filtered; false: continue with saving
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| metadataEntry | TYPE.MetadataTypeItem
| | metadata entry |
-| [include] | boolean
| false
| true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | TYPE.MetadataTypeItem
| metadata entry |
+| [include] | boolean
| true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
@@ -3782,10 +3968,10 @@ optionally filter by what folder something is in
**Kind**: static method of [MetadataType
](#MetadataType)
**Returns**: boolean
- true: filtered == do NOT save; false: not filtered == do save
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| metadataEntry | object
| | metadata entry |
-| [include] | boolean
| false
| true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | object
| metadata entry |
+| [include] | boolean
| true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
@@ -3805,7 +3991,7 @@ Helper for writing Metadata to disk, used for Retrieve and deploy
### MetadataType.applyTemplateValues(code, templateVariables) ⇒ string
-helper for [buildDefinitionForNested](buildDefinitionForNested)
+helper for [buildDefinitionForNested](#MetadataType.buildDefinitionForNested)
searches extracted file for template variable names and applies the market values
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3819,7 +4005,7 @@ searches extracted file for template variable names and applies the market value
### MetadataType.applyTemplateNames(code, templateVariables) ⇒ string
-helper for [buildTemplateForNested](buildTemplateForNested)
+helper for [buildTemplateForNested](#MetadataType.buildTemplateForNested)
searches extracted file for template variable values and applies the market variable names
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3833,7 +4019,7 @@ searches extracted file for template variable values and applies the market vari
### MetadataType.buildDefinitionForNested(templateDir, targetDir, metadata, variables, templateName) ⇒ Promise.<Array.<Array.<string>>>
-helper for [buildDefinition](buildDefinition)
+helper for [buildDefinition](#MetadataType.buildDefinition)
handles extracted code if any are found for complex types (e.g script, asset, query)
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3850,7 +4036,7 @@ handles extracted code if any are found for complex types (e.g script, asset, qu
### MetadataType.buildTemplateForNested(templateDir, targetDir, metadata, templateVariables, templateName) ⇒ Promise.<Array.<Array.<string>>>
-helper for [buildTemplate](buildTemplate)
+helper for [buildTemplate](#MetadataType.buildTemplate)
handles extracted code if any are found for complex types
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3910,9 +4096,9 @@ parsing is required (for example scripts & queries)
| templateName | string
| name of the metadata file |
| variables | TYPE.TemplateMap
| variables to be replaced in the metadata |
-
+
-### MetadataType.checkForErrors(ex) ⇒ Array.<string>
\| void
+### MetadataType.getErrorsREST(ex) ⇒ Array.<string>
\| void
Standardizes a check for multiple messages
**Kind**: static method of [MetadataType
](#MetadataType)
@@ -3995,11 +4181,11 @@ Returns metadata of a business unit that is saved locally
**Kind**: static method of [MetadataType
](#MetadataType)
**Returns**: object
- Metadata of BU in local directory
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| readDir | string
| | root directory of metadata. |
-| [listBadKeys] | boolean
| false
| do not print errors, used for badKeys() |
-| [buMetadata] | object
| | Metadata of BU in local directory |
+| Param | Type | Description |
+| --- | --- | --- |
+| readDir | string
| root directory of metadata. |
+| [listBadKeys] | boolean
| do not print errors, used for badKeys() |
+| [buMetadata] | object
| Metadata of BU in local directory |
@@ -4014,6 +4200,16 @@ additionally, the documentation for dataExtension and automation should be retur
| --- | --- | --- |
| keyArr | Array.<string>
| customerkey of the metadata |
+
+
+### MetadataType.getKeysForFixing(metadataMap) ⇒ Array.<string>
+**Kind**: static method of [MetadataType
](#MetadataType)
+**Returns**: Array.<string>
- list of keys
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataMap | TYPE.MetadataTypeMap
| metadata mapped by their keyField |
+
## MobileCode ⇐ [MetadataType
](#MetadataType)
@@ -4190,7 +4386,7 @@ manages post retrieve steps
### MobileKeyword.prepExtractedCode(metadataScript) ⇒ Object
-helper for [parseMetadata](parseMetadata) and [_buildForNested](_buildForNested)
+helper for [postRetrieveTasks](#MobileKeyword.postRetrieveTasks) and [_buildForNested](#MobileKeyword._buildForNested)
**Kind**: static method of [MobileKeyword
](#MobileKeyword)
**Returns**: Object
- returns found extension and file content
@@ -4240,7 +4436,7 @@ scripts are saved as 1 json and 1 ssjs file. both files need to be run through t
### MobileKeyword.\_buildForNested(templateDir, targetDir, metadata, templateVariables, templateName, mode) ⇒ Promise.<Array.<Array.<string>>>
-helper for [buildTemplateForNested](buildTemplateForNested) / [buildDefinitionForNested](buildDefinitionForNested)
+helper for [buildTemplateForNested](#MobileKeyword.buildTemplateForNested) / [buildDefinitionForNested](#MobileKeyword.buildDefinitionForNested)
handles extracted code if any are found for complex types
**Kind**: static method of [MobileKeyword
](#MobileKeyword)
@@ -4271,7 +4467,7 @@ prepares an event definition for deployment
### MobileKeyword.postCreateTasks(metadataEntry, apiResponse) ⇒ void
-helper for [createREST](createREST)
+helper for [createREST](#MetadataType.createREST)
**Kind**: static method of [MobileKeyword
](#MobileKeyword)
@@ -4283,7 +4479,7 @@ helper for [createREST](createREST)
### MobileKeyword.postUpdateTasks(metadataEntry, apiResponse) ⇒ void
-helper for [updateREST](updateREST)
+helper for [updateREST](#MetadataType.updateREST)
**Kind**: static method of [MobileKeyword
](#MobileKeyword)
@@ -4295,7 +4491,7 @@ helper for [updateREST](updateREST)
### MobileKeyword.\_mergeCode(metadata, deployDir, [templateName]) ⇒ Promise.<string>
-helper for [preDeployTasks](preDeployTasks) that loads extracted code content back into JSON
+helper for [preDeployTasks](#MobileKeyword.preDeployTasks) that loads extracted code content back into JSON
**Kind**: static method of [MobileKeyword
](#MobileKeyword)
**Returns**: Promise.<string>
- content for metadata.script
@@ -4423,7 +4619,7 @@ Creates a single item
### MobileMessage.\_mergeCode(metadata, deployDir, [templateName]) ⇒ Promise.<string>
-helper for [preDeployTasks](preDeployTasks) that loads extracted code content back into JSON
+helper for [preDeployTasks](#MobileMessage.preDeployTasks) that loads extracted code content back into JSON
**Kind**: static method of [MobileMessage
](#MobileMessage)
**Returns**: Promise.<string>
- code
@@ -4437,7 +4633,7 @@ helper for [preDeployTasks](preDeployTasks) that loads extracted code content ba
### MobileMessage.prepExtractedCode(code) ⇒ Object
-helper for [parseMetadata](parseMetadata) and [_buildForNested](_buildForNested)
+helper for [postRetrieveTasks](#MobileMessage.postRetrieveTasks) and [_buildForNested](#MobileMessage._buildForNested)
**Kind**: static method of [MobileMessage
](#MobileMessage)
**Returns**: Object
- returns found extension and file content
@@ -4487,7 +4683,7 @@ prepares an event definition for deployment
### MobileMessage.postCreateTasks(metadataEntry, apiResponse) ⇒ void
-helper for [createREST](createREST)
+helper for [createREST](#MetadataType.createREST)
**Kind**: static method of [MobileMessage
](#MobileMessage)
@@ -4499,7 +4695,7 @@ helper for [createREST](createREST)
### MobileMessage.postUpdateTasks(metadataEntry, apiResponse) ⇒ void
-helper for [updateREST](updateREST)
+helper for [updateREST](#MetadataType.updateREST)
**Kind**: static method of [MobileMessage
](#MobileMessage)
@@ -4549,7 +4745,7 @@ scripts are saved as 1 json and 1 ssjs file. both files need to be run through t
### MobileMessage.\_buildForNested(templateDir, targetDir, metadata, templateVariables, templateName, mode) ⇒ Promise.<Array.<Array.<string>>>
-helper for [buildTemplateForNested](buildTemplateForNested) / [buildDefinitionForNested](buildDefinitionForNested)
+helper for [buildTemplateForNested](#MobileMessage.buildTemplateForNested) / [buildDefinitionForNested](#MobileMessage.buildDefinitionForNested)
handles extracted code if any are found for complex types
**Kind**: static method of [MobileMessage
](#MobileMessage)
@@ -4587,7 +4783,7 @@ Query MetadataType
* [Query](#Query) ⇐ [MetadataType
](#MetadataType)
* [.retrieve(retrieveDir, [_], [__], [key])](#Query.retrieve) ⇒ Promise.<{metadata: TYPE.QueryMap, type: string}>
- * [.execute(keyArr)](#Query.execute) ⇒ Promise.<boolean>
+ * [.execute(keyArr)](#Query.execute) ⇒ Promise.<Array.<string>>
* [.retrieveForCache()](#Query.retrieveForCache) ⇒ Promise.<{metadata: TYPE.QueryMap, type: string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Query.retrieveAsTemplate) ⇒ Promise.<{metadata: Query, type: string}>
* [.postRetrieveTasks(metadata)](#Query.postRetrieveTasks) ⇒ TYPE.CodeExtractItem
@@ -4598,9 +4794,10 @@ Query MetadataType
* [.buildDefinitionForNested(templateDir, targetDir, metadata, templateVariables, templateName)](#Query.buildDefinitionForNested) ⇒ Promise.<Array.<Array.<string>>>
* [.buildTemplateForNested(templateDir, targetDir, metadata, templateVariables, templateName)](#Query.buildTemplateForNested) ⇒ Promise.<Array.<Array.<string>>>
* [.getFilesToCommit(keyArr)](#Query.getFilesToCommit) ⇒ Array.<string>
- * [.checkForErrors(ex)](#Query.checkForErrors) ⇒ Array.<string>
\| void
+ * [.getErrorsREST(ex)](#Query.getErrorsREST) ⇒ Array.<string>
\| void
* [.deleteByKey(customerKey)](#Query.deleteByKey) ⇒ boolean
* [.postDeleteTasks(customerKey)](#Query.postDeleteTasks) ⇒ void
+ * [.postDeployTasks(upsertResults)](#Query.postDeployTasks)
@@ -4619,11 +4816,11 @@ Retrieves Metadata of queries
-### Query.execute(keyArr) ⇒ Promise.<boolean>
+### Query.execute(keyArr) ⇒ Promise.<Array.<string>>
a function to start query execution via API
**Kind**: static method of [Query
](#Query)
-**Returns**: Promise.<boolean>
- Returns true if all items were executed successfully, otherwise false
+**Returns**: Promise.<Array.<string>>
- Returns list of keys that were executed successfully
| Param | Type | Description |
| --- | --- | --- |
@@ -4702,7 +4899,7 @@ prepares a Query for deployment
### Query.applyTemplateValues(code, templateVariables) ⇒ string
-helper for [buildDefinitionForNested](buildDefinitionForNested)
+helper for [buildDefinitionForNested](#Query.buildDefinitionForNested)
searches extracted SQL file for template variables and applies the market values
**Kind**: static method of [Query
](#Query)
@@ -4764,9 +4961,9 @@ additionally, the documentation for dataExtension and automation should be retur
| --- | --- | --- |
| keyArr | Array.<string>
| customerkey of the metadata |
-
+
-### Query.checkForErrors(ex) ⇒ Array.<string>
\| void
+### Query.getErrorsREST(ex) ⇒ Array.<string>
\| void
Standardizes a check for multiple messages but adds query specific filters to error texts
**Kind**: static method of [Query
](#Query)
@@ -4799,6 +4996,17 @@ clean up after deleting a metadata item
| --- | --- | --- |
| customerKey | string
| Identifier of metadata item |
+
+
+### Query.postDeployTasks(upsertResults)
+Gets executed after deployment of metadata type
+
+**Kind**: static method of [Query
](#Query)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| upsertResults | TYPE.MetadataTypeMap
| metadata mapped by their keyField as returned by update/create |
+
## Role ⇐ [MetadataType
](#MetadataType)
@@ -4992,7 +5200,7 @@ Creates a single Script
### Script.\_mergeCode(metadata, deployDir, [templateName]) ⇒ Promise.<string>
-helper for [preDeployTasks](preDeployTasks) that loads extracted code content back into JSON
+helper for [preDeployTasks](#Script.preDeployTasks) that loads extracted code content back into JSON
**Kind**: static method of [Script
](#Script)
**Returns**: Promise.<string>
- content for metadata.script
@@ -5057,7 +5265,7 @@ scripts are saved as 1 json and 1 ssjs file. both files need to be run through t
### Script.\_buildForNested(templateDir, targetDir, metadata, templateVariables, templateName, mode) ⇒ Promise.<Array.<Array.<string>>>
-helper for [buildTemplateForNested](buildTemplateForNested) / [buildDefinitionForNested](buildDefinitionForNested)
+helper for [buildTemplateForNested](#Script.buildTemplateForNested) / [buildDefinitionForNested](#Script.buildDefinitionForNested)
handles extracted code if any are found for complex types
**Kind**: static method of [Script
](#Script)
@@ -5087,7 +5295,7 @@ Splits the script metadata into two parts and parses in a standard manner
### Script.prepExtractedCode(metadataScript, metadataName) ⇒ Object
-helper for [parseMetadata](parseMetadata) and [_buildForNested](_buildForNested)
+helper for [parseMetadata](#Script.parseMetadata) and [_buildForNested](#Script._buildForNested)
**Kind**: static method of [Script
](#Script)
**Returns**: Object
- returns found extension and file content
@@ -5132,40 +5340,6 @@ Retrieves SOAP based metadata of metadata type into local filesystem. executes c
| [__] | void
| unused parameter |
| [key] | string
| customer key of single item to retrieve |
-
-
-## SetDefinition ⇐ [MetadataType
](#MetadataType)
-SetDefinition MetadataType
-
-**Kind**: global class
-**Extends**: [MetadataType
](#MetadataType)
-
-* [SetDefinition](#SetDefinition) ⇐ [MetadataType
](#MetadataType)
- * [.retrieve(retrieveDir, [_], [__], [key])](#SetDefinition.retrieve) ⇒ Promise.<TYPE.MetadataTypeMapObj>
- * [.retrieveForCache()](#SetDefinition.retrieveForCache) ⇒ Promise.<TYPE.MetadataTypeMapObj>
-
-
-
-### SetDefinition.retrieve(retrieveDir, [_], [__], [key]) ⇒ Promise.<TYPE.MetadataTypeMapObj>
-Retrieves Metadata of schema set Definitions.
-
-**Kind**: static method of [SetDefinition
](#SetDefinition)
-**Returns**: Promise.<TYPE.MetadataTypeMapObj>
- Promise
-
-| Param | Type | Description |
-| --- | --- | --- |
-| retrieveDir | string
| Directory where retrieved metadata directory will be saved |
-| [_] | void
| unused parameter |
-| [__] | void
| unused parameter |
-| [key] | string
| customer key of single item to retrieve |
-
-
-
-### SetDefinition.retrieveForCache() ⇒ Promise.<TYPE.MetadataTypeMapObj>
-Retrieves Metadata of schema set definitions for caching.
-
-**Kind**: static method of [SetDefinition
](#SetDefinition)
-**Returns**: Promise.<TYPE.MetadataTypeMapObj>
- Promise
## TransactionalEmail ⇐ [TransactionalMessage
](#TransactionalMessage)
@@ -5371,7 +5545,7 @@ prepares for deployment
### TransactionalSMS.\_mergeCode(metadata, deployDir, [templateName]) ⇒ Promise.<string>
-helper for [preDeployTasks](preDeployTasks) that loads extracted code content back into JSON
+helper for [preDeployTasks](#TransactionalSMS.preDeployTasks) that loads extracted code content back into JSON
**Kind**: static method of [TransactionalSMS
](#TransactionalSMS)
**Returns**: Promise.<string>
- content for metadata.script
@@ -5397,7 +5571,7 @@ manages post retrieve steps
### TransactionalSMS.prepExtractedCode(metadataScript) ⇒ Object
-helper for [parseMetadata](parseMetadata) and [_buildForNested](_buildForNested)
+helper for [postRetrieveTasks](#TransactionalSMS.postRetrieveTasks) and [_buildForNested](#TransactionalSMS._buildForNested)
**Kind**: static method of [TransactionalSMS
](#TransactionalSMS)
**Returns**: Object
- returns found extension and file content
@@ -5409,7 +5583,7 @@ helper for [parseMetadata](parseMetadata) and [_buildForNested](_buildForNested)
### TransactionalSMS.buildDefinitionForNested(templateDir, targetDir, metadata, templateVariables, templateName) ⇒ Promise.<Array.<Array.<string>>>
-helper for [buildDefinition](#MetadataType.buildDefinition)
+helper for [TransactionalMessage.buildDefinition](TransactionalMessage.buildDefinition)
handles extracted code if any are found for complex types
**Kind**: static method of [TransactionalSMS
](#TransactionalSMS)
@@ -5426,7 +5600,7 @@ handles extracted code if any are found for complex types
### TransactionalSMS.buildTemplateForNested(templateDir, targetDir, metadata, templateVariables, templateName) ⇒ Promise.<Array.<Array.<string>>>
-helper for [buildTemplate](#MetadataType.buildTemplate)
+helper for [TransactionalMessage.buildTemplate](TransactionalMessage.buildTemplate)
handles extracted code if any are found for complex types
**Kind**: static method of [TransactionalSMS
](#TransactionalSMS)
@@ -5447,7 +5621,7 @@ scripts are saved as 1 json and 1 ssjs file. both files need to be run through t
### TransactionalSMS.\_buildForNested(templateDir, targetDir, metadata, templateVariables, templateName, mode) ⇒ Promise.<Array.<Array.<string>>>
-helper for [buildTemplateForNested](buildTemplateForNested) / [buildDefinitionForNested](buildDefinitionForNested)
+helper for [buildTemplateForNested](#TransactionalSMS.buildTemplateForNested) / [buildDefinitionForNested](#TransactionalSMS.buildDefinitionForNested)
handles extracted code if any are found for complex types
**Kind**: static method of [TransactionalSMS
](#TransactionalSMS)
@@ -5500,13 +5674,11 @@ MessageSendActivity MetadataType
* [.create(metadata)](#TriggeredSend.create) ⇒ Promise
* [.update(metadata)](#TriggeredSend.update) ⇒ Promise
* [.deleteByKey(customerKey)](#TriggeredSend.deleteByKey) ⇒ Promise.<boolean>
- * [.postRetrieveTasks(metadata)](#TriggeredSend.postRetrieveTasks) ⇒ TYPE.MetadataTypeItem
- * [.setFolderPath(metadata)](#TriggeredSend.setFolderPath)
- * [.parseMetadata(metadata)](#TriggeredSend.parseMetadata) ⇒ TYPE.MetadataTypeItem
\| void
+ * [.postRetrieveTasks(metadata)](#TriggeredSend.postRetrieveTasks) ⇒ TYPE.MetadataTypeItem
\| void
* [.preDeployTasks(metadata)](#TriggeredSend.preDeployTasks) ⇒ TYPE.MetadataTypeItem
* [.refresh([keyArr], [checkKey])](#TriggeredSend.refresh) ⇒ Promise.<void>
* [.getKeysForValidTSDs(metadata)](#TriggeredSend.getKeysForValidTSDs) ⇒ Promise.<Array.<string>>
- * [.findRefreshableItems()](#TriggeredSend.findRefreshableItems) ⇒ Promise.<TYPE.MetadataTypeMapObj>
+ * [.findRefreshableItems([assetLoaded])](#TriggeredSend.findRefreshableItems) ⇒ Promise.<TYPE.MetadataTypeMapObj>
* [._refreshItem(key, checkKey)](#TriggeredSend._refreshItem) ⇒ Promise.<boolean>
@@ -5562,30 +5734,7 @@ Delete a metadata item from the specified business unit
-### TriggeredSend.postRetrieveTasks(metadata) ⇒ TYPE.MetadataTypeItem
-manages post retrieve steps
-
-**Kind**: static method of [TriggeredSend
](#TriggeredSend)
-**Returns**: TYPE.MetadataTypeItem
- Array with one metadata object and one query string
-
-| Param | Type | Description |
-| --- | --- | --- |
-| metadata | TYPE.MetadataTypeItem
| a single query |
-
-
-
-### TriggeredSend.setFolderPath(metadata)
-generic script that retrieves the folder path from cache and updates the given metadata with it after retrieve
-
-**Kind**: static method of [TriggeredSend
](#TriggeredSend)
-
-| Param | Type | Description |
-| --- | --- | --- |
-| metadata | TYPE.MetadataTypeItem
| a single script activity definition |
-
-
-
-### TriggeredSend.parseMetadata(metadata) ⇒ TYPE.MetadataTypeItem
\| void
+### TriggeredSend.postRetrieveTasks(metadata) ⇒ TYPE.MetadataTypeItem
\| void
parses retrieved Metadata before saving
**Kind**: static method of [TriggeredSend
](#TriggeredSend)
@@ -5593,7 +5742,7 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | TYPE.MetadataTypeItem
| a single query activity definition |
+| metadata | TYPE.MetadataTypeItem
| a single item |
@@ -5623,7 +5772,7 @@ TSD-specific refresh method that finds active TSDs and refreshes them
### TriggeredSend.getKeysForValidTSDs(metadata) ⇒ Promise.<Array.<string>>
-helper for [refresh](refresh) that extracts the keys from the TSD item map and eli
+helper for [refresh](#TriggeredSend.refresh) that extracts the keys from the TSD item map and eli
**Kind**: static method of [TriggeredSend
](#TriggeredSend)
**Returns**: Promise.<Array.<string>>
- keyArr
@@ -5634,15 +5783,20 @@ helper for [refresh](refresh) that extracts the keys from the TSD item map and e
-### TriggeredSend.findRefreshableItems() ⇒ Promise.<TYPE.MetadataTypeMapObj>
-helper for [refresh](refresh) that finds active TSDs on the server and filters it by the same rules that [retrieve](retrieve) is using to avoid refreshing TSDs with broken dependencies
+### TriggeredSend.findRefreshableItems([assetLoaded]) ⇒ Promise.<TYPE.MetadataTypeMapObj>
+helper for [refresh](#TriggeredSend.refresh) that finds active TSDs on the server and filters it by the same rules that [retrieve](#TriggeredSend.retrieve) is using to avoid refreshing TSDs with broken dependencies
**Kind**: static method of [TriggeredSend
](#TriggeredSend)
**Returns**: Promise.<TYPE.MetadataTypeMapObj>
- Promise of TSD item map
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| [assetLoaded] | boolean
| false
| if run after Asset.deploy via --refresh option this will skip caching assets |
+
### TriggeredSend.\_refreshItem(key, checkKey) ⇒ Promise.<boolean>
-helper for [refresh](refresh) that pauses, publishes and starts a triggered send
+helper for [refresh](#TriggeredSend.refresh) that pauses, publishes and starts a triggered send
**Kind**: static method of [TriggeredSend
](#TriggeredSend)
**Returns**: Promise.<boolean>
- true if refresh was successful
@@ -5862,7 +6016,7 @@ Retrieve metadata of specified types into local file system and Retriever.metada
### retriever.\_getTypeDependencies(metadataTypes) ⇒ Array.<TYPE.SupportedMetadataTypes>
-helper for [retrieve](retrieve) to get all dependencies of the given types
+helper for [Retriever.retrieve](Retriever.retrieve) to get all dependencies of the given types
**Kind**: instance method of [Retriever
](#Retriever)
**Returns**: Array.<TYPE.SupportedMetadataTypes>
- unique list dependent metadata types
@@ -5897,6 +6051,7 @@ CLI entry for SFMC DevTools
* [.metadataLogger(level, type, method, payload, [source])](#Util.metadataLogger) ⇒ void
* [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ string
\| object
* [.inverseGet(objs, val)](#Util.inverseGet) ⇒ string
+ * [.getDependentMetadata(fixedType)](#Util.getDependentMetadata) ⇒ Array.<string>
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Object.<string, Array.<string>>
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.execSync(cmd, [args], [hideOutput])](#Util.execSync) ⇒ string
\| void
@@ -5908,6 +6063,9 @@ CLI entry for SFMC DevTools
* [.getKeysString(keyArr, [isId])](#Util.getKeysString) ⇒ string
* [.sleep(ms)](#Util.sleep) ⇒ Promise.<void>
* [.getSsjs(code)](#Util.getSsjs) ⇒ string
+ * [.stringLike(testString, search)](#Util.stringLike) ⇒ boolean
+ * [.fieldsLike(metadata, [filters])](#Util.fieldsLike) ⇒ boolean
+ * [.capitalizeFirstLetter(str)](#Util.capitalizeFirstLetter) ⇒ string
@@ -5992,7 +6150,8 @@ used to ensure the program tells surrounding software that an unrecoverable erro
### Util.isTrue(attrValue) ⇒ boolean
-SFMC accepts multiple true values for Boolean attributes for which we are checking here
+SFMC accepts multiple true values for Boolean attributes for which we are checking here.
+The same problem occurs when evaluating boolean CLI flags
**Kind**: static method of [Util
](#Util)
**Returns**: boolean
- attribute value == true ? true : false
@@ -6004,7 +6163,8 @@ SFMC accepts multiple true values for Boolean attributes for which we are checki
### Util.isFalse(attrValue) ⇒ boolean
-SFMC accepts multiple false values for Boolean attributes for which we are checking here
+SFMC accepts multiple false values for Boolean attributes for which we are checking here.
+The same problem occurs when evaluating boolean CLI flags
**Kind**: static method of [Util
](#Util)
**Returns**: boolean
- attribute value == false ? true : false
@@ -6016,7 +6176,7 @@ SFMC accepts multiple false values for Boolean attributes for which we are check
### Util.\_isValidType(selectedType, [handleOutside]) ⇒ boolean
-helper for [retrieve](#Mcdev.retrieve), [retrieveAsTemplate](#Mcdev.retrieveAsTemplate) and [deploy](#Mcdev.deploy)
+helper for Mcdev.retrieve, Mcdev.retrieveAsTemplate and Mcdev.deploy
**Kind**: static method of [Util
](#Util)
**Returns**: boolean
- type ok or not
@@ -6053,9 +6213,9 @@ wrapper around our standard winston logging to console and logfile
**Kind**: static method of [Util
](#Util)
**Returns**: object
- initiated logger for console and file
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| [noLogFile] | boolean
| false
| optional flag to indicate if we should log to file; CLI logs are always on |
+| Param | Type | Description |
+| --- | --- | --- |
+| [noLogFile] | boolean
| optional flag to indicate if we should log to file; CLI logs are always on |
@@ -6064,10 +6224,10 @@ initiate winston logger
**Kind**: static method of [Util
](#Util)
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| [restart] | boolean
| false
| if true, logger will be restarted; otherwise, an existing logger will be used |
-| [noLogFile] | boolean
| false
| if false, logger will log to file; otherwise, only to console |
+| Param | Type | Description |
+| --- | --- | --- |
+| [restart] | boolean
| if true, logger will be restarted; otherwise, an existing logger will be used |
+| [noLogFile] | boolean
| if false, logger will log to file; otherwise, only to console |
@@ -6111,6 +6271,18 @@ get key of an object based on the first matching value
| objs | object
| object of objects to be searched |
| val | string
| value to be searched for |
+
+
+### Util.getDependentMetadata(fixedType) ⇒ Array.<string>
+helper for Mcdev.fixKeys. Retrieve dependent metadata
+
+**Kind**: static method of [Util
](#Util)
+**Returns**: Array.<string>
- array of types that depend on the given type
+
+| Param | Type | Description |
+| --- | --- | --- |
+| fixedType | string
| type of the metadata passed as a parameter to fixKeys function |
+
### Util.getMetadataHierachy(metadataTypes) ⇒ Object.<string, Array.<string>>
@@ -6240,7 +6412,7 @@ pause execution of code; useful when multiple server calls are dependent on each
### Util.getSsjs(code) ⇒ string
-helper for [_extractCode](#Asset._extractCode) and [prepExtractedCode](#Script.prepExtractedCode) to determine if a code block is a valid SSJS block
+helper for Asset.extractCode and Script.prepExtractedCode to determine if a code block is a valid SSJS block
**Kind**: static method of [Util
](#Util)
**Returns**: string
- the SSJS code if code block is a valid SSJS block, otherwise null
@@ -6264,6 +6436,44 @@ the following is invalid:
// 3
```
+
+
+### Util.stringLike(testString, search) ⇒ boolean
+allows us to filter just like with SQL's LIKE operator
+
+**Kind**: static method of [Util
](#Util)
+**Returns**: boolean
- true if testString matches search
+
+| Param | Type | Description |
+| --- | --- | --- |
+| testString | string
| field value to test |
+| search | string
| search string in SQL LIKE format |
+
+
+
+### Util.fieldsLike(metadata, [filters]) ⇒ boolean
+returns true if no LIKE filter is defined or if all filters match
+
+**Kind**: static method of [Util
](#Util)
+**Returns**: boolean
- true if no LIKE filter is defined or if all filters match
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | TYPE.MetadataTypeItem
| a single metadata item |
+| [filters] | object
| only used in recursive calls |
+
+
+
+### Util.capitalizeFirstLetter(str) ⇒ string
+helper used by SOAP methods to ensure the type always uses an upper-cased first letter
+
+**Kind**: static method of [Util
](#Util)
+**Returns**: string
- str with first letter capitalized
+
+| Param | Type | Description |
+| --- | --- | --- |
+| str | string
| string to capitalize |
+
## MetadataTypeDefinitions
@@ -6327,6 +6537,7 @@ CLI helper class
* [Cli](#Cli)
* [.initMcdevConfig()](#Cli.initMcdevConfig) ⇒ Promise.<boolean>
* [.addExtraCredential(properties)](#Cli.addExtraCredential) ⇒ Promise.<(boolean\|string)>
+ * [.postFixKeysReretrieve(type, dependentTypes)](#Cli.postFixKeysReretrieve) ⇒ Promise.<boolean>
* [.logExistingCredentials(properties)](#Cli.logExistingCredentials) ⇒ void
* [.updateCredential(properties, credName)](#Cli.updateCredential) ⇒ Promise.<boolean>
* [.getCredentialObject(properties, target, [isCredentialOnly], [allowAll])](#Cli.getCredentialObject) ⇒ Promise.<TYPE.BuObject>
@@ -6357,6 +6568,17 @@ Extends template file for properties.json
| --- | --- | --- |
| properties | TYPE.Mcdevrc
| config file's json |
+
+
+### Cli.postFixKeysReretrieve(type, dependentTypes) ⇒ Promise.<boolean>
+**Kind**: static method of [Cli
](#Cli)
+**Returns**: Promise.<boolean>
- true if user wants to continue with retrieve
+
+| Param | Type | Description |
+| --- | --- | --- |
+| type | TYPE.SupportedMetadataTypes
| limit execution to given metadata type |
+| dependentTypes | Array.<TYPE.SupportedMetadataTypes>
| types that depent on type |
+
### Cli.logExistingCredentials(properties) ⇒ void
@@ -6801,12 +7023,12 @@ reads file from local file system.
**Kind**: static method of [File
](#File)
**Returns**: Promise.<string>
\| void
- file contents; void on error
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| directory | string
\| Array.<string>
| | directory where the file is stored |
-| filename | string
| | name of the file without '.json' ending |
-| filetype | string
| | filetype suffix |
-| [encoding] | string
| "'utf8'"
| read file with encoding (defaults to utf-8) |
+| Param | Type | Description |
+| --- | --- | --- |
+| directory | string
\| Array.<string>
| directory where the file is stored |
+| filename | string
| name of the file without '.json' ending |
+| filetype | string
| filetype suffix |
+| [encoding] | string
| read file with encoding (defaults to utf-8) |
@@ -6869,9 +7091,9 @@ Initalises Prettier formatting lib async.
**Kind**: static method of [File
](#File)
**Returns**: Promise.<boolean>
- success of config load
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| [filetype] | string
| "'html'"
| filetype ie. JSON or SSJS |
+| Param | Type | Description |
+| --- | --- | --- |
+| [filetype] | string
| filetype ie. JSON or SSJS |
@@ -6897,7 +7119,6 @@ CLI helper class
* [._initMarkets()](#Init._initMarkets)
* [._downloadAllBUs(bu, gitStatus)](#Init._downloadAllBUs) ⇒ Promise.<void>
* [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<boolean>
- * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<string>
* [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<boolean>
* [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: object, author: string, license: string}>
@@ -7057,18 +7278,6 @@ wrapper around npm dependency & configuration file setup
| [initial] | boolean
| print message if not part of initial setup |
| [repoName] | string
| if git URL was provided earlier, the repo name was extracted to use it for npm init |
-
-
-### Init.\_getMissingCredentials(properties) ⇒ Array.<string>
-finds credentials that are set up in config but not in auth file
-
-**Kind**: static method of [Init
](#Init)
-**Returns**: Array.<string>
- list of credential names
-
-| Param | Type | Description |
-| --- | --- | --- |
-| properties | TYPE.Mcdevrc
| javascript object in .mcdevrc.json |
-
### Init.installDependencies([repoName]) ⇒ Promise.<boolean>
@@ -7119,7 +7328,6 @@ CLI helper class
* [._initMarkets()](#Init._initMarkets)
* [._downloadAllBUs(bu, gitStatus)](#Init._downloadAllBUs) ⇒ Promise.<void>
* [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<boolean>
- * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<string>
* [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<boolean>
* [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: object, author: string, license: string}>
@@ -7279,18 +7487,6 @@ wrapper around npm dependency & configuration file setup
| [initial] | boolean
| print message if not part of initial setup |
| [repoName] | string
| if git URL was provided earlier, the repo name was extracted to use it for npm init |
-
-
-### Init.\_getMissingCredentials(properties) ⇒ Array.<string>
-finds credentials that are set up in config but not in auth file
-
-**Kind**: static method of [Init
](#Init)
-**Returns**: Array.<string>
- list of credential names
-
-| Param | Type | Description |
-| --- | --- | --- |
-| properties | TYPE.Mcdevrc
| javascript object in .mcdevrc.json |
-
### Init.installDependencies([repoName]) ⇒ Promise.<boolean>
@@ -7341,7 +7537,6 @@ CLI helper class
* [._initMarkets()](#Init._initMarkets)
* [._downloadAllBUs(bu, gitStatus)](#Init._downloadAllBUs) ⇒ Promise.<void>
* [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<boolean>
- * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<string>
* [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<boolean>
* [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: object, author: string, license: string}>
@@ -7501,18 +7696,6 @@ wrapper around npm dependency & configuration file setup
| [initial] | boolean
| print message if not part of initial setup |
| [repoName] | string
| if git URL was provided earlier, the repo name was extracted to use it for npm init |
-
-
-### Init.\_getMissingCredentials(properties) ⇒ Array.<string>
-finds credentials that are set up in config but not in auth file
-
-**Kind**: static method of [Init
](#Init)
-**Returns**: Array.<string>
- list of credential names
-
-| Param | Type | Description |
-| --- | --- | --- |
-| properties | TYPE.Mcdevrc
| javascript object in .mcdevrc.json |
-
### Init.installDependencies([repoName]) ⇒ Promise.<boolean>
@@ -7563,7 +7746,6 @@ CLI helper class
* [._initMarkets()](#Init._initMarkets)
* [._downloadAllBUs(bu, gitStatus)](#Init._downloadAllBUs) ⇒ Promise.<void>
* [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<boolean>
- * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<string>
* [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<boolean>
* [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: object, author: string, license: string}>
@@ -7723,18 +7905,6 @@ wrapper around npm dependency & configuration file setup
| [initial] | boolean
| print message if not part of initial setup |
| [repoName] | string
| if git URL was provided earlier, the repo name was extracted to use it for npm init |
-
-
-### Init.\_getMissingCredentials(properties) ⇒ Array.<string>
-finds credentials that are set up in config but not in auth file
-
-**Kind**: static method of [Init
](#Init)
-**Returns**: Array.<string>
- list of credential names
-
-| Param | Type | Description |
-| --- | --- | --- |
-| properties | TYPE.Mcdevrc
| javascript object in .mcdevrc.json |
-
### Init.installDependencies([repoName]) ⇒ Promise.<boolean>
@@ -7787,6 +7957,7 @@ Util that contains logger and simple util methods
* [.metadataLogger(level, type, method, payload, [source])](#Util.metadataLogger) ⇒ void
* [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ string
\| object
* [.inverseGet(objs, val)](#Util.inverseGet) ⇒ string
+ * [.getDependentMetadata(fixedType)](#Util.getDependentMetadata) ⇒ Array.<string>
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Object.<string, Array.<string>>
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.execSync(cmd, [args], [hideOutput])](#Util.execSync) ⇒ string
\| void
@@ -7798,6 +7969,9 @@ Util that contains logger and simple util methods
* [.getKeysString(keyArr, [isId])](#Util.getKeysString) ⇒ string
* [.sleep(ms)](#Util.sleep) ⇒ Promise.<void>
* [.getSsjs(code)](#Util.getSsjs) ⇒ string
+ * [.stringLike(testString, search)](#Util.stringLike) ⇒ boolean
+ * [.fieldsLike(metadata, [filters])](#Util.fieldsLike) ⇒ boolean
+ * [.capitalizeFirstLetter(str)](#Util.capitalizeFirstLetter) ⇒ string
@@ -7882,7 +8056,8 @@ used to ensure the program tells surrounding software that an unrecoverable erro
### Util.isTrue(attrValue) ⇒ boolean
-SFMC accepts multiple true values for Boolean attributes for which we are checking here
+SFMC accepts multiple true values for Boolean attributes for which we are checking here.
+The same problem occurs when evaluating boolean CLI flags
**Kind**: static method of [Util
](#Util)
**Returns**: boolean
- attribute value == true ? true : false
@@ -7894,7 +8069,8 @@ SFMC accepts multiple true values for Boolean attributes for which we are checki
### Util.isFalse(attrValue) ⇒ boolean
-SFMC accepts multiple false values for Boolean attributes for which we are checking here
+SFMC accepts multiple false values for Boolean attributes for which we are checking here.
+The same problem occurs when evaluating boolean CLI flags
**Kind**: static method of [Util
](#Util)
**Returns**: boolean
- attribute value == false ? true : false
@@ -7906,7 +8082,7 @@ SFMC accepts multiple false values for Boolean attributes for which we are check
### Util.\_isValidType(selectedType, [handleOutside]) ⇒ boolean
-helper for [retrieve](#Mcdev.retrieve), [retrieveAsTemplate](#Mcdev.retrieveAsTemplate) and [deploy](#Mcdev.deploy)
+helper for Mcdev.retrieve, Mcdev.retrieveAsTemplate and Mcdev.deploy
**Kind**: static method of [Util
](#Util)
**Returns**: boolean
- type ok or not
@@ -7943,9 +8119,9 @@ wrapper around our standard winston logging to console and logfile
**Kind**: static method of [Util
](#Util)
**Returns**: object
- initiated logger for console and file
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| [noLogFile] | boolean
| false
| optional flag to indicate if we should log to file; CLI logs are always on |
+| Param | Type | Description |
+| --- | --- | --- |
+| [noLogFile] | boolean
| optional flag to indicate if we should log to file; CLI logs are always on |
@@ -7954,10 +8130,10 @@ initiate winston logger
**Kind**: static method of [Util
](#Util)
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| [restart] | boolean
| false
| if true, logger will be restarted; otherwise, an existing logger will be used |
-| [noLogFile] | boolean
| false
| if false, logger will log to file; otherwise, only to console |
+| Param | Type | Description |
+| --- | --- | --- |
+| [restart] | boolean
| if true, logger will be restarted; otherwise, an existing logger will be used |
+| [noLogFile] | boolean
| if false, logger will log to file; otherwise, only to console |
@@ -8001,6 +8177,18 @@ get key of an object based on the first matching value
| objs | object
| object of objects to be searched |
| val | string
| value to be searched for |
+
+
+### Util.getDependentMetadata(fixedType) ⇒ Array.<string>
+helper for Mcdev.fixKeys. Retrieve dependent metadata
+
+**Kind**: static method of [Util
](#Util)
+**Returns**: Array.<string>
- array of types that depend on the given type
+
+| Param | Type | Description |
+| --- | --- | --- |
+| fixedType | string
| type of the metadata passed as a parameter to fixKeys function |
+
### Util.getMetadataHierachy(metadataTypes) ⇒ Object.<string, Array.<string>>
@@ -8130,7 +8318,7 @@ pause execution of code; useful when multiple server calls are dependent on each
### Util.getSsjs(code) ⇒ string
-helper for [_extractCode](#Asset._extractCode) and [prepExtractedCode](#Script.prepExtractedCode) to determine if a code block is a valid SSJS block
+helper for Asset.extractCode and Script.prepExtractedCode to determine if a code block is a valid SSJS block
**Kind**: static method of [Util
](#Util)
**Returns**: string
- the SSJS code if code block is a valid SSJS block, otherwise null
@@ -8154,6 +8342,44 @@ the following is invalid:
// 3
```
+
+
+### Util.stringLike(testString, search) ⇒ boolean
+allows us to filter just like with SQL's LIKE operator
+
+**Kind**: static method of [Util
](#Util)
+**Returns**: boolean
- true if testString matches search
+
+| Param | Type | Description |
+| --- | --- | --- |
+| testString | string
| field value to test |
+| search | string
| search string in SQL LIKE format |
+
+
+
+### Util.fieldsLike(metadata, [filters]) ⇒ boolean
+returns true if no LIKE filter is defined or if all filters match
+
+**Kind**: static method of [Util
](#Util)
+**Returns**: boolean
- true if no LIKE filter is defined or if all filters match
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | TYPE.MetadataTypeItem
| a single metadata item |
+| [filters] | object
| only used in recursive calls |
+
+
+
+### Util.capitalizeFirstLetter(str) ⇒ string
+helper used by SOAP methods to ensure the type always uses an upper-cased first letter
+
+**Kind**: static method of [Util
](#Util)
+**Returns**: string
- str with first letter capitalized
+
+| Param | Type | Description |
+| --- | --- | --- |
+| str | string
| string to capitalize |
+
## csvToArray(csv) ⇒ Array.<string>
@@ -8166,6 +8392,125 @@ helper to convert CSVs into an array. if only one value was given, it's also ret
| --- | --- | --- |
| csv | string
| potentially comma-separated value or null |
+
+
+## Mcdev.(methodName, businessUnit, [selectedType], [keys]) ⇒ Promise.<Object.<string, Array.<string>>>
+run a method across BUs
+
+**Kind**: global function
+**Returns**: Promise.<Object.<string, Array.<string>>>
- key: business unit name, value: list of affected item keys
+
+| Param | Type | Description |
+| --- | --- | --- |
+| methodName | 'execute'
\| 'pause'
\| 'fixKeys'
| what to run |
+| businessUnit | string
| name of BU |
+| [selectedType] | TYPE.SupportedMetadataTypes
| limit to given metadata types |
+| [keys] | Array.<string>
| customerkey of the metadata |
+
+
+
+## Mcdev.(methodName, cred, bu, [type], keyArr) ⇒ Promise.<Array.<string>>
+helper for [Mcdev.#runMethod](Mcdev.#runMethod)
+
+**Kind**: global function
+**Returns**: Promise.<Array.<string>>
- list of keys that were affected
+
+| Param | Type | Description |
+| --- | --- | --- |
+| methodName | 'execute'
\| 'pause'
\| 'fixKeys'
| what to run |
+| cred | string
| name of Credential |
+| bu | string
| name of BU |
+| [type] | TYPE.SupportedMetadataTypes
| limit execution to given metadata type |
+| keyArr | Array.<string>
| customerkey of the metadata |
+
+
+
+## Mcdev.(selectedType, buObject) ⇒ Array.<string>
+helper for [Mcdev.#runOnBU](Mcdev.#runOnBU)
+
+**Kind**: global function
+**Returns**: Array.<string>
- keyArr
+
+| Param | Type | Description |
+| --- | --- | --- |
+| selectedType | TYPE.SupportedMetadataTypes
| limit execution to given metadata type |
+| buObject | TYPE.BuObject
| properties for auth |
+
+
+
+## Mcdev.(cred, bu, type, [keyArr]) ⇒ Promise.<Array.<string>>
+Updates the key to match the name field
+
+**Kind**: global function
+**Returns**: Promise.<Array.<string>>
- list of keys that were affected
+
+| Param | Type | Description |
+| --- | --- | --- |
+| cred | string
| name of Credential |
+| bu | string
| name of BU |
+| type | TYPE.SupportedMetadataTypes
| limit execution to given metadata type |
+| [keyArr] | Array.<string>
| customerkey of the metadata |
+
+
+
+## Automation.(metadata) ⇒ boolean
+helper for [postRetrieveTasks](#Automation.postRetrieveTasks) and [execute](#Automation.execute)
+
+**Kind**: global function
+**Returns**: boolean
- true if the automation schedule is valid
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | TYPE.AutomationItem
| a single automation |
+
+
+
+## Automation.(metadataMap, key) ⇒ Promise.<{key:string, response:object}>
+helper for [execute](#Automation.execute)
+
+**Kind**: global function
+**Returns**: Promise.<{key:string, response:object}>
- metadata key and API response
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataMap | TYPE.AutomationMap
| map of metadata |
+| key | string
| key of the metadata |
+
+
+
+## Automation.(metadataEntry) ⇒ Promise.<{key:string, response:object}>
+helper for [execute](#Automation.execute)
+
+**Kind**: global function
+**Returns**: Promise.<{key:string, response:object}>
- metadata key and API response
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | TYPE.AutomationItem
| metadata object |
+
+
+
+## Automation.(metadata) ⇒ Promise.<{key:string, response:object}>
+helper for [pause](#Automation.pause)
+
+**Kind**: global function
+**Returns**: Promise.<{key:string, response:object}>
- metadata key and API response
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | TYPE.AutomationItem
| automation metadata |
+
+
+
+## Automation.(metadata)
+helper for [preDeployTasks](#Automation.preDeployTasks) and [execute](#Automation.execute)
+
+**Kind**: global function
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | TYPE.AutomationItem
| metadata mapped by their keyField |
+
## Automation.(metadataMap, key) ⇒ Promise.<void>
@@ -8181,16 +8526,18 @@ helper for [postDeployTasks](#Automation.postDeployTasks)
-## Automation.(metadataMap, originalMetadataMap, key)
-helper for [postDeployTasks](postDeployTasks)
+## Automation.(metadataMap, originalMetadataMap, key, [oldKey]) ⇒ Promise.<{key:string, response:object}>
+helper for [postDeployTasks](#Automation.postDeployTasks)
**Kind**: global function
+**Returns**: Promise.<{key:string, response:object}>
- metadata key and API response
| Param | Type | Description |
| --- | --- | --- |
| metadataMap | TYPE.AutomationMap
| metadata mapped by their keyField |
| originalMetadataMap | TYPE.AutomationMap
| metadata to be updated (contains additioanl fields) |
| key | string
| current customer key |
+| [oldKey] | string
| old customer key before fixKey / changeKeyValue / changeKeyField |
diff --git a/lib/Deployer.js b/lib/Deployer.js
index 3d064049a..5b4d283ff 100644
--- a/lib/Deployer.js
+++ b/lib/Deployer.js
@@ -44,17 +44,17 @@ class Deployer {
* @param {string} businessUnit references credentials from properties.json
* @param {TYPE.SupportedMetadataTypes[]} [selectedTypesArr] limit deployment to given metadata type
* @param {string[]} [keyArr] limit deployment to given metadata keys
- * @param {boolean} [fromRetrieve] optionally deploy whats defined via selectedTypesArr + keyArr directly from retrieve folder instead of from deploy folder
* @returns {Promise.>} deployed metadata per BU (first key: bu name, second key: metadata type)
*/
- static async deploy(businessUnit, selectedTypesArr, keyArr, fromRetrieve) {
+ static async deploy(businessUnit, selectedTypesArr, keyArr) {
Util.logger.info('mcdev:: Deploy');
const buMultiMetadataTypeMap = {};
const properties = await config.getProperties();
if (!(await config.checkProperties(properties))) {
return null;
}
- if (fromRetrieve) {
+ const deployDirBak = properties.directories.deploy;
+ if (Util.OPTIONS.fromRetrieve) {
properties.directories.deploy = properties.directories.retrieve;
}
if (Array.isArray(selectedTypesArr)) {
@@ -66,7 +66,7 @@ class Deployer {
}
}
if (
- fromRetrieve &&
+ Util.OPTIONS.fromRetrieve &&
(!selectedTypesArr ||
!Array.isArray(selectedTypesArr) ||
!selectedTypesArr.length ||
@@ -97,8 +97,7 @@ class Deployer {
bu,
properties,
selectedTypesArr,
- keyArr,
- fromRetrieve
+ keyArr
);
buMultiMetadataTypeMap[cred + '/' + bu] = multiMetadataTypeMap;
counter_credBu++;
@@ -137,7 +136,7 @@ class Deployer {
return;
}
// valid credential given and -all- BUs targeted
- Util.logger.info(`\n :: Deploying all BUs for ${cred}`);
+ Util.logger.info(`:: Deploying all BUs for ${cred}`);
let counter_credBu = 0;
// for (const bu in properties.credentials[cred].businessUnits) {
const deployFolders = await File.readDirectories(
@@ -151,15 +150,14 @@ class Deployer {
buPath,
properties,
selectedTypesArr,
- keyArr,
- fromRetrieve
+ keyArr
);
buMultiMetadataTypeMap[cred + '/' + buPath] = multiMetadataTypeMap;
counter_credBu++;
Util.logger.info('');
Util.startLogger(true);
}
- Util.logger.info(`\n :: ${counter_credBu} BUs for ${cred}\n`);
+ Util.logger.info(` :: ${counter_credBu} BUs for ${cred}\n`);
} else {
// either bad credential or specific BU or no BU given
const multiMetadataTypeMap = await this._deployBU(
@@ -167,30 +165,31 @@ class Deployer {
bu,
properties,
selectedTypesArr,
- keyArr,
- fromRetrieve
+ keyArr
);
counter_credBu++;
buMultiMetadataTypeMap[cred + '/' + bu] = multiMetadataTypeMap;
}
}
+ if (Util.OPTIONS.fromRetrieve) {
+ properties.directories.deploy = deployDirBak;
+ }
if (counter_credBu !== 0) {
- Util.logger.info(`\n :: Deployed ${counter_credBu} BUs\n`);
+ Util.logger.info(`:: Deployed ${counter_credBu} BUs\n`);
}
return buMultiMetadataTypeMap;
}
/**
- * helper for {@link deploy}
+ * helper for {@link Deployer.deploy}
*
* @param {string} cred name of Credential
* @param {string} bu name of BU
* @param {TYPE.Mcdevrc} properties General configuration to be used in retrieve
* @param {TYPE.SupportedMetadataTypes[]} [typeArr] limit deployment to given metadata type
* @param {string[]} [keyArr] limit deployment to given metadata keys
- * @param {boolean} [fromRetrieve] optionally deploy whats defined via selectedTypesArr + keyArr directly from retrieve folder instead of from deploy folder
* @returns {Promise.} ensure that BUs are worked on sequentially
*/
- static async _deployBU(cred, bu, properties, typeArr, keyArr, fromRetrieve) {
+ static async _deployBU(cred, bu, properties, typeArr, keyArr) {
const buPath = `${cred}/${bu}`;
Util.logger.info(`:: Deploying to ${buPath}`);
const buObject = await Cli.getCredentialObject(properties, buPath, null, true);
@@ -201,7 +200,7 @@ class Deployer {
const deployer = new Deployer(properties, buObject);
try {
// await is required or the calls end up conflicting
- multiMetadataTypeMap = await deployer._deploy(typeArr, keyArr, fromRetrieve);
+ multiMetadataTypeMap = await deployer._deploy(typeArr, keyArr);
} catch (ex) {
Util.logger.errorStack(ex, 'mcdev.deploy failed');
}
@@ -214,11 +213,9 @@ class Deployer {
*
* @param {TYPE.SupportedMetadataTypes[]} [typeArr] limit deployment to given metadata type (can include subtype)
* @param {string[]} [keyArr] limit deployment to given metadata keys
- * @param {boolean} [fromRetrieve] if true, no folders will be updated/created
- * @param {boolean} [isRefresh] optional flag to indicate that triggeredSend should be refreshed after deployment of assets
* @returns {Promise.} Promise of all deployed metadata
*/
- async _deploy(typeArr, keyArr, fromRetrieve, isRefresh) {
+ async _deploy(typeArr, keyArr) {
if (await File.pathExists(this.deployDir)) {
/** @type {TYPE.MultiMetadataTypeMap} */
this.metadata = Deployer.readBUMetadata(this.deployDir, typeArr);
@@ -252,7 +249,7 @@ class Deployer {
}
}
- if (!fromRetrieve) {
+ if (!Util.OPTIONS.fromRetrieve) {
await Deployer.createFolderDefinitions(
this.deployDir,
this.metadata,
@@ -292,13 +289,16 @@ class Deployer {
// TODO rewrite to allow deploying only a specific sub-type; currently, subtypes are ignored when executing deploy
const type = metadataType;
if (this.metadata[type]) {
- Util.logger.info('Deploying: ' + metadataType);
+ Util.logger.info(
+ 'Deploying: ' +
+ metadataType +
+ (Util.OPTIONS.fromRetrieve ? ' (from retrieve folder)' : '')
+ );
const result = await MetadataTypeInfo[type].deploy(
this.metadata[type],
this.deployDir,
- this.retrieveDir,
- isRefresh
+ this.retrieveDir
);
multiMetadataTypeMap[type] = result;
cache.mergeMetadata(type, result);
@@ -312,7 +312,7 @@ class Deployer {
*
* @param {string} deployDir root directory of metadata.
* @param {string[]} [typeArr] limit deployment to given metadata type
- * @param {boolean} [listBadKeys=false] do not print errors, used for badKeys()
+ * @param {boolean} [listBadKeys] do not print errors, used for badKeys()
* @returns {TYPE.MultiMetadataTypeMap} Metadata of BU in local directory
*/
static readBUMetadata(deployDir, typeArr, listBadKeys) {
diff --git a/lib/MetadataTypeDefinitions.js b/lib/MetadataTypeDefinitions.js
index 2e55ea5c4..477774ef5 100644
--- a/lib/MetadataTypeDefinitions.js
+++ b/lib/MetadataTypeDefinitions.js
@@ -6,6 +6,7 @@
const MetadataTypeDefinitions = {
asset: require('./metadataTypes/definitions/Asset.definition'),
attributeGroup: require('./metadataTypes/definitions/AttributeGroup.definition'),
+ attributeSet: require('./metadataTypes/definitions/AttributeSet.definition'),
automation: require('./metadataTypes/definitions/Automation.definition'),
campaign: require('./metadataTypes/definitions/Campaign.definition'),
contentArea: require('./metadataTypes/definitions/ContentArea.definition'),
@@ -32,7 +33,6 @@ const MetadataTypeDefinitions = {
role: require('./metadataTypes/definitions/Role.definition'),
script: require('./metadataTypes/definitions/Script.definition'),
sendClassification: require('./metadataTypes/definitions/SendClassification.definition'),
- setDefinition: require('./metadataTypes/definitions/SetDefinition.definition'),
transactionalEmail: require('./metadataTypes/definitions/TransactionalEmail.definition'),
transactionalPush: require('./metadataTypes/definitions/TransactionalPush.definition'),
transactionalSMS: require('./metadataTypes/definitions/TransactionalSMS.definition'),
diff --git a/lib/MetadataTypeInfo.js b/lib/MetadataTypeInfo.js
index 9b77ba266..0622a8f84 100644
--- a/lib/MetadataTypeInfo.js
+++ b/lib/MetadataTypeInfo.js
@@ -6,6 +6,7 @@
const MetadataTypeInfo = {
asset: require('./metadataTypes/Asset'),
attributeGroup: require('./metadataTypes/AttributeGroup'),
+ attributeSet: require('./metadataTypes/AttributeSet'),
automation: require('./metadataTypes/Automation'),
campaign: require('./metadataTypes/Campaign'),
contentArea: require('./metadataTypes/ContentArea'),
@@ -32,7 +33,6 @@ const MetadataTypeInfo = {
role: require('./metadataTypes/Role'),
script: require('./metadataTypes/Script'),
sendClassification: require('./metadataTypes/SendClassification'),
- setDefinition: require('./metadataTypes/SetDefinition'),
transactionalEmail: require('./metadataTypes/TransactionalEmail'),
transactionalPush: require('./metadataTypes/TransactionalPush'),
transactionalSMS: require('./metadataTypes/TransactionalSMS'),
diff --git a/lib/Retriever.js b/lib/Retriever.js
index 86ecf781e..f32acd2e3 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -189,7 +189,7 @@ class Retriever {
}
/**
- * helper for {@link retrieve} to get all dependencies of the given types
+ * helper for {@link Retriever.retrieve} to get all dependencies of the given types
*
* @param {TYPE.SupportedMetadataTypes[]} metadataTypes list of metadata types to retrieve; can include subtypes!
* @returns {TYPE.SupportedMetadataTypes[]} unique list dependent metadata types
diff --git a/lib/cli.js b/lib/cli.js
index 931c78b19..8c198cf97 100644
--- a/lib/cli.js
+++ b/lib/cli.js
@@ -31,6 +31,12 @@ yargs
.positional('KEY', {
type: 'string',
describe: 'metadata keys that shall be exclusively downloaded',
+ })
+ .option('like', {
+ type: 'string',
+ group: 'Options for retrieve:',
+ describe:
+ 'filter metadata components (can include % as wildcard or _ for a single character)',
});
},
handler: (argv) => {
@@ -59,22 +65,38 @@ yargs
})
.option('changeKeyField', {
type: 'string',
+ group: 'Options for deploy:',
describe:
'enables updating the key of the deployed metadata with the value in provided field (e.g. c__newKey). Can be used to sync name and key fields.',
})
.option('changeKeyValue', {
type: 'string',
+ group: 'Options for deploy:',
describe:
'allows updating the key of the metadata to the provided value. Only available if a single type and key is deployed',
})
.option('fromRetrieve', {
type: 'boolean',
+ group: 'Options for deploy:',
describe: 'optionally deploy from retrieve folder',
})
.option('refresh', {
type: 'boolean',
+ group: 'Options for deploy:',
describe:
'optional for asset-message: runs refresh command for related triggeredSends after deploy',
+ })
+ .option('execute', {
+ type: 'boolean',
+ group: 'Options for deploy:',
+ describe:
+ 'optional: executes item after deploy; this will run the item once immediately',
+ })
+ .option('schedule', {
+ type: 'boolean',
+ group: 'Options for deploy:',
+ describe:
+ 'optionally start existing schedule instead of running item once immediately (only works for automations)',
});
},
handler: (argv) => {
@@ -307,6 +329,7 @@ yargs
builder: (yargs) => {
yargs.option('json', {
type: 'boolean',
+ group: 'Options for explainTypes:',
describe: 'optionaly return info in json format',
});
},
@@ -316,7 +339,7 @@ yargs
},
})
.command({
- command: 'createDeltaPkg [range] [--filter ] [--commitHistory ]',
+ command: 'createDeltaPkg [range]',
aliases: ['cdp'],
desc: 'Copies commit-based file delta into deploy folder',
builder: (yargs) => {
@@ -327,11 +350,13 @@ yargs
})
.option('filter', {
type: 'string',
+ group: 'Options for createDeltaPkg:',
describe:
'Disable templating & instead filter by the specified BU path (comma separated), can include subtype, will be prefixed with "retrieve/"',
})
.option('commitHistory', {
type: 'number',
+ group: 'Options for createDeltaPkg:',
describe: 'Number of commits to look back for changes (supersedes config)',
});
},
@@ -390,8 +415,8 @@ yargs
},
})
.command({
- command: 'execute ',
- aliases: ['exec'],
+ command: 'execute [KEY]',
+ aliases: ['exec', 'start'],
desc: 'executes the entity (query/journey/automation etc.)',
builder: (yargs) => {
yargs
@@ -406,11 +431,128 @@ yargs
.positional('KEY', {
type: 'string',
describe: 'key(s) of the metadata component(s)',
+ })
+ .option('like', {
+ type: 'string',
+ group: 'Options for execute:',
+ describe:
+ 'filter metadata components (can include % as wildcard or _ for a single character)',
+ })
+ .option('schedule', {
+ type: 'boolean',
+ group: 'Options for execute:',
+ describe:
+ 'optionally start existing schedule instead of running item once immediately (only works for automations)',
+ });
+ },
+ handler: (argv) => {
+ Mcdev.setOptions(argv);
+ // ! do not allow multiple types to be passed in here via csvToArray
+ Mcdev.execute(argv.BU, argv.TYPE, csvToArray(argv.KEY));
+ },
+ })
+ .command({
+ command: 'schedule [KEY]',
+ aliases: ['sched'],
+ desc: 'starts the predefined schedule of the item (shortcut for running execute --schedule)',
+ builder: (yargs) => {
+ yargs
+ .positional('BU', {
+ type: 'string',
+ describe: 'the business unit where to start an item',
+ })
+ .positional('TYPE', {
+ type: 'string',
+ describe: 'metadata type',
+ })
+ .positional('KEY', {
+ type: 'string',
+ describe: 'key(s) of the metadata component(s)',
+ })
+ .option('like', {
+ type: 'string',
+ group: 'Options for execute:',
+ describe:
+ 'filter metadata components (can include % as wildcard or _ for a single character)',
});
},
handler: (argv) => {
Mcdev.setOptions(argv);
- Mcdev.execute(argv.BU, csvToArray(argv.TYPE), csvToArray(argv.KEY));
+ // ! do not allow multiple types to be passed in here via csvToArray
+ Mcdev.schedule(argv.BU, argv.TYPE, csvToArray(argv.KEY));
+ },
+ })
+ .command({
+ command: 'pause [KEY]',
+ aliases: ['p', 'stop'],
+ desc: 'pauses the entity (automation etc.)',
+ builder: (yargs) => {
+ yargs
+ .positional('BU', {
+ type: 'string',
+ describe: 'the business unit where to start an item',
+ })
+ .positional('TYPE', {
+ type: 'string',
+ describe: 'metadata type',
+ })
+ .positional('KEY', {
+ type: 'string',
+ describe: 'key(s) of the metadata component(s)',
+ })
+ .option('like', {
+ type: 'string',
+ group: 'Options for pause:',
+ describe:
+ 'filter metadata components (can include % as wildcard or _ for a single character)',
+ });
+ },
+ handler: (argv) => {
+ Mcdev.setOptions(argv);
+ // ! do not allow multiple types to be passed in here via csvToArray
+ Mcdev.pause(argv.BU, argv.TYPE, csvToArray(argv.KEY));
+ },
+ })
+ .command({
+ command: 'fixKeys [KEY]',
+ aliases: ['fx'],
+ desc: 'changes the key of the items to match the name',
+ builder: (yargs) => {
+ yargs
+ .positional('BU', {
+ type: 'string',
+ describe: 'the business unit where to fix keys',
+ })
+ .positional('TYPE', {
+ type: 'string',
+ describe: 'metadata type',
+ })
+ .positional('KEY', {
+ type: 'string',
+ describe: 'key(s) of the metadata component(s)',
+ })
+ .option('like', {
+ type: 'string',
+ group: 'Options for fixKeys:',
+ describe:
+ 'filter metadata components (can include % as wildcard or _ for a single character)',
+ })
+ .option('execute', {
+ type: 'boolean',
+ group: 'Options for fixKeys:',
+ describe:
+ 'optional: executes item after deploy; this will run the item once immediately',
+ })
+ .option('schedule', {
+ type: 'boolean',
+ group: 'Options for fixKeys:',
+ describe:
+ 'optionally start existing schedule instead of running item once immediately (only works for automations)',
+ });
+ },
+ handler: (argv) => {
+ Mcdev.setOptions(argv);
+ Mcdev.fixKeys(argv.BU, argv.TYPE, csvToArray(argv.KEY));
},
})
.command({
@@ -434,6 +576,10 @@ yargs
type: 'boolean',
description: 'Only output errors to CLI',
})
+ .option('noLogColors', {
+ type: 'boolean',
+ description: 'do not use color codes in CLI log output',
+ })
.option('noLogFile', {
type: 'boolean',
description: 'Only output log to CLI but not to files',
@@ -466,9 +612,13 @@ function csvToArray(csv) {
return !csv
? null
: csv.includes(',')
- ? csv.split(',').map((item) =>
- // allow whitespace in comma-separated lists
- item.trim()
- )
- : [csv.trim()];
+ ? csv
+ .split(',')
+ .map((item) =>
+ // allow whitespace in comma-separated lists
+ item.trim()
+ )
+ // make sure trailing commas are ignored
+ .filter(Boolean)
+ : [csv.trim()].filter(Boolean);
}
diff --git a/lib/index.js b/lib/index.js
index 3589f02b6..b34ae4102 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -51,15 +51,19 @@ class Mcdev {
static setOptions(argv) {
const knownOptions = [
'api',
- 'commitHistory',
'changeKeyField',
'changeKeyValue',
+ 'commitHistory',
+ 'execute',
'filter',
'fromRetrieve',
'json',
+ 'like',
+ 'noLogColors',
+ 'noLogFile',
'refresh',
+ 'schedule',
'skipInteraction',
- 'noLogFile',
];
for (const option of knownOptions) {
if (argv[option] !== undefined) {
@@ -153,6 +157,7 @@ class Mcdev {
* @returns {Promise.} -
*/
static async retrieve(businessUnit, selectedTypesArr, keys, changelogOnly) {
+ console.time('Time'); // eslint-disable-line no-console
Util.startLogger();
Util.logger.info('mcdev:: Retrieve');
const properties = await config.getProperties();
@@ -171,22 +176,32 @@ class Mcdev {
}
}
}
-
+ const resultsObj = {};
if (businessUnit === '*') {
- Util.logger.info('\n :: Retrieving all BUs for all credentials');
+ Util.logger.info(':: Retrieving all BUs for all credentials');
let counter_credTotal = 0;
for (const cred in properties.credentials) {
- Util.logger.info(`\n :: Retrieving all BUs for ${cred}`);
+ Util.logger.info(`:: Retrieving all BUs for ${cred}`);
let counter_credBu = 0;
for (const bu in properties.credentials[cred].businessUnits) {
- await this._retrieveBU(cred, bu, selectedTypesArr, keys);
+ resultsObj[`${cred}/${bu}`] = await this.#retrieveBU(
+ cred,
+ bu,
+ selectedTypesArr,
+ keys
+ );
counter_credBu++;
Util.startLogger(true);
}
counter_credTotal += counter_credBu;
- Util.logger.info(`\n :: ${counter_credBu} BUs for ${cred}\n`);
+ Util.logger.info(`:: ${counter_credBu} BUs of ${cred}\n`);
}
- Util.logger.info(`\n :: ${counter_credTotal} BUs in total\n`);
+ const credentialCount = Object.keys(properties.credentials).length;
+ Util.logger.info(
+ `:: Done for ${counter_credTotal} BUs of ${credentialCount} credential${
+ credentialCount === 1 ? '' : 's'
+ } in total\n`
+ );
} else {
let [cred, bu] = businessUnit ? businessUnit.split('/') : [null, null];
// to allow all-BU via user selection we need to run this here already
@@ -210,17 +225,22 @@ class Mcdev {
}
if (bu === '*' && properties.credentials && properties.credentials[cred]) {
- Util.logger.info(`\n :: Retrieving all BUs for ${cred}`);
+ Util.logger.info(`:: Retrieving all BUs for ${cred}`);
let counter_credBu = 0;
for (const bu in properties.credentials[cred].businessUnits) {
- await this._retrieveBU(cred, bu, selectedTypesArr, keys);
+ resultsObj[`${cred}/${bu}`] = await this.#retrieveBU(
+ cred,
+ bu,
+ selectedTypesArr,
+ keys
+ );
counter_credBu++;
Util.startLogger(true);
}
- Util.logger.info(`\n :: ${counter_credBu} BUs for ${cred}\n`);
+ Util.logger.info(`:: Done for ${counter_credBu} BUs of ${cred}\n`);
} else {
// retrieve a single BU; return
- const retrieveChangelog = await this._retrieveBU(
+ const retrieveChangelog = await this.#retrieveBU(
cred,
bu,
selectedTypesArr,
@@ -228,14 +248,33 @@ class Mcdev {
changelogOnly
);
if (changelogOnly) {
+ console.timeEnd('Time'); // eslint-disable-line no-console
return retrieveChangelog;
+ } else {
+ resultsObj[`${cred}/${bu}`] = retrieveChangelog;
}
Util.logger.info(`:: Done\n`);
}
}
+
+ // merge all results into one object
+ for (const credBu in resultsObj) {
+ for (const type in resultsObj[credBu]) {
+ const base = resultsObj[credBu][type][0];
+
+ for (let i = 1; i < resultsObj[credBu][type].length; i++) {
+ // merge all items into the first array
+ Object.assign(base, resultsObj[credBu][type][i]);
+ }
+ resultsObj[credBu][type] = resultsObj[credBu][type][0];
+ }
+ }
+ console.timeEnd('Time'); // eslint-disable-line no-console
+
+ return resultsObj;
}
/**
- * helper for {@link retrieve}
+ * helper for {@link Mcdev.retrieve}
*
* @private
* @param {string} cred name of Credential
@@ -245,7 +284,7 @@ class Mcdev {
* @param {boolean} [changelogOnly] skip saving, only create json in memory
* @returns {Promise.} ensure that BUs are worked on sequentially
*/
- static async _retrieveBU(cred, bu, selectedTypesArr, keys, changelogOnly) {
+ static async #retrieveBU(cred, bu, selectedTypesArr, keys, changelogOnly) {
const properties = await config.getProperties();
if (!(await config.checkProperties(properties))) {
return null;
@@ -263,6 +302,7 @@ class Mcdev {
// clean up old folders after types were renamed
// TODO: Remove renamedTypes-logic 6 months after version 5 release
const renamedTypes = {
+ attributeSet: 'setDefinition',
emailSend: 'emailSendDefinition',
event: 'eventDefinition',
fileLocation: 'ftpLocation',
@@ -270,7 +310,7 @@ class Mcdev {
triggeredSend: 'triggeredSendDefinition',
user: 'accountUser',
};
- Util.logger.info(`\n :: Retrieving ${cred}/${bu}\n`);
+ Util.logger.info(`:: Retrieving ${cred}/${bu}\n`);
const retrieveTypesArr = [];
if (selectedTypesArr) {
for (const selectedType of Array.isArray(selectedTypesArr)
@@ -337,9 +377,7 @@ class Mcdev {
null,
changelogOnly
);
- if (changelogOnly) {
- return retrieveChangelog;
- }
+ return retrieveChangelog;
} catch (ex) {
Util.logger.errorStack(ex, 'mcdev.retrieve failed');
}
@@ -352,12 +390,14 @@ class Mcdev {
* @param {string} businessUnit references credentials from properties.json
* @param {TYPE.SupportedMetadataTypes[]} [selectedTypesArr] limit deployment to given metadata type
* @param {string[]} [keyArr] limit deployment to given metadata keys
- * @param {boolean} [fromRetrieve] optionally deploy whats defined via selectedTypesArr + keyArr directly from retrieve folder instead of from deploy folder
* @returns {Promise.>} deployed metadata per BU (first key: bu name, second key: metadata type)
*/
- static async deploy(businessUnit, selectedTypesArr, keyArr, fromRetrieve = false) {
+ static async deploy(businessUnit, selectedTypesArr, keyArr) {
+ console.time('Time'); // eslint-disable-line no-console
Util.startLogger();
- return Deployer.deploy(businessUnit, selectedTypesArr, keyArr, fromRetrieve);
+ const deployResult = await Deployer.deploy(businessUnit, selectedTypesArr, keyArr);
+ console.timeEnd('Time'); // eslint-disable-line no-console
+ return deployResult;
}
/**
@@ -701,56 +741,159 @@ class Mcdev {
}
}
/**
- * Start an item (query)
+ * Schedule an item (shortcut for execute --schedule)
+ *
+ * @param {string} businessUnit name of BU
+ * @param {TYPE.SupportedMetadataTypes} [selectedType] limit to given metadata types
+ * @param {string[]} [keys] customerkey of the metadata
+ * @returns {Promise.>} key: business unit name, value: list of scheduled item keys
+ */
+ static async schedule(businessUnit, selectedType, keys) {
+ this.setOptions({ schedule: true });
+ return this.#runMethod('execute', businessUnit, selectedType, keys);
+ }
+ /**
+ * Start/execute an item
+ *
+ * @param {string} businessUnit name of BU
+ * @param {TYPE.SupportedMetadataTypes} [selectedType] limit to given metadata types
+ * @param {string[]} [keys] customerkey of the metadata
+ * @returns {Promise.>} key: business unit name, value: list of executed item keys
+ */
+ static async execute(businessUnit, selectedType, keys) {
+ return this.#runMethod('execute', businessUnit, selectedType, keys);
+ }
+ /**
+ * pause an item
+ *
+ * @param {string} businessUnit name of BU
+ * @param {TYPE.SupportedMetadataTypes} [selectedType] limit to given metadata types
+ * @param {string[]} [keys] customerkey of the metadata
+ * @returns {Promise.>} key: business unit name, value: list of paused item keys
+ */
+ static async pause(businessUnit, selectedType, keys) {
+ return this.#runMethod('pause', businessUnit, selectedType, keys);
+ }
+ /**
+ * Updates the key to match the name field
+ *
+ * @param {string} businessUnit name of BU
+ * @param {TYPE.SupportedMetadataTypes} selectedType limit to given metadata types
+ * @param {string[]} [keys] customerkey of the metadata
+ * @returns {Promise.>} key: business unit name, value: list of paused item keys
+ */
+ static async fixKeys(businessUnit, selectedType, keys) {
+ return this.#runMethod('fixKeys', businessUnit, selectedType, keys);
+ }
+ /**
+ * run a method across BUs
*
+ * @param {'execute'|'pause'|'fixKeys'} methodName what to run
* @param {string} businessUnit name of BU
- * @param {TYPE.SupportedMetadataTypes[]} [selectedTypesArr] limit to given metadata types
- * @param {string[]} keys customerkey of the metadata
- * @returns {Promise.} true if all started successfully, false if not
+ * @param {TYPE.SupportedMetadataTypes} [selectedType] limit to given metadata types
+ * @param {string[]} [keys] customerkey of the metadata
+ * @returns {Promise.>} key: business unit name, value: list of affected item keys
*/
- static async execute(businessUnit, selectedTypesArr, keys) {
+ static async #runMethod(methodName, businessUnit, selectedType, keys) {
Util.startLogger();
- Util.logger.info('mcdev:: Execute');
+ let lang_past;
+ let lang_present;
+ let requireKeyOrLike;
+ let checkMetadataSupport;
+ const resultObj = {};
+
+ switch (methodName) {
+ case 'execute': {
+ lang_past = 'executed';
+ lang_present = 'executing';
+ requireKeyOrLike = true;
+ checkMetadataSupport = true;
+ break;
+ }
+ case 'pause': {
+ lang_past = 'paused';
+ lang_present = 'pausing';
+ requireKeyOrLike = true;
+ checkMetadataSupport = true;
+ break;
+ }
+ case 'fixKeys': {
+ lang_past = 'fixed keys';
+ lang_present = 'fixing keys';
+ requireKeyOrLike = false;
+ checkMetadataSupport = false;
+ break;
+ }
+ }
+
+ Util.logger.info(`mcdev:: ${methodName} ${selectedType}`);
const properties = await config.getProperties();
let counter_credBu = 0;
- let counter_failed = 0;
+ let counter_credKeys = 0;
if (!(await config.checkProperties(properties))) {
// return null here to avoid seeing 2 error messages for the same issue
- return null;
+ return resultObj;
}
- if (Array.isArray(selectedTypesArr)) {
- // types and keys can be provided but for each type all provided keys are applied as filter
- for (const selectedType of Array.isArray(selectedTypesArr)
- ? selectedTypesArr
- : Object.keys(selectedTypesArr)) {
- if (!Util._isValidType(selectedType)) {
- return;
- }
- }
+ if (!Util._isValidType(selectedType)) {
+ return resultObj;
}
+ if (
+ checkMetadataSupport &&
+ !Object.prototype.hasOwnProperty.call(MetadataTypeInfo[selectedType], methodName)
+ ) {
+ Util.logger.error(
+ ` ☇ skipping ${selectedType}: ${methodName} is not supported yet for ${selectedType}`
+ );
+ return resultObj;
+ }
+
+ if (
+ requireKeyOrLike &&
+ (!Array.isArray(keys) || !keys.length) &&
+ (!Util.OPTIONS.like || !Object.keys(Util.OPTIONS.like).length)
+ ) {
+ Util.logger.error('At least one key or a --like filter is required.');
+ return resultObj;
+ } else if (
+ Array.isArray(keys) &&
+ keys.length &&
+ Util.OPTIONS.like &&
+ Object.keys(Util.OPTIONS.like).length
+ ) {
+ Util.logger.error('You can either specify keys OR a --like filter.');
+ return resultObj;
+ }
+
if (businessUnit === '*') {
+ Util.OPTIONS._multiBuExecution = true;
Util.logger.info(
- '\n :: Executing the entity on all BUs for all credentials'
+ `:: ${lang_present} the ${selectedType} on all BUs for all credentials`
);
let counter_credTotal = 0;
for (const cred in properties.credentials) {
- Util.logger.info(`\n :: Executing the entity on all BUs for ${cred}`);
-
+ Util.logger.info(`:: ${lang_present} ${selectedType} on all BUs for ${cred}`);
+ // reset counter per cred
+ counter_credKeys = 0;
+ counter_credBu = 0;
for (const bu in properties.credentials[cred].businessUnits) {
- if (await this._executeBU(cred, bu, selectedTypesArr, keys)) {
- counter_credBu++;
- } else {
- counter_failed++;
- }
+ resultObj[cred + '/' + bu] = await this.#runOnBU(
+ methodName,
+ cred,
+ bu,
+ selectedType,
+ keys
+ );
+ counter_credBu++;
+ counter_credKeys += resultObj[cred + '/' + bu].length;
Util.startLogger(true);
}
counter_credTotal += counter_credBu;
Util.logger.info(
- `\n :: Executed the entity on ${counter_credBu} BUs for ${cred}\n`
+ `:: ${lang_past} for ${counter_credKeys} ${selectedType}s on ${counter_credBu} BUs for ${cred}`
);
}
Util.logger.info(
- `\n :: Executed the entity on ${counter_credTotal} BUs in total\n`
+ `:: ${lang_past} ${selectedType} on ${counter_credTotal} BUs in total\n`
);
} else {
let [cred, bu] = businessUnit ? businessUnit.split('/') : [null, null];
@@ -767,91 +910,248 @@ class Mcdev {
true
);
if (buObject === null) {
- return;
+ return resultObj;
} else {
cred = buObject.credential;
bu = buObject.businessUnit;
}
}
if (bu === '*' && properties.credentials && properties.credentials[cred]) {
- Util.logger.info(`\n :: Executing the entity on all BUs for ${cred}`);
- let counter_credBu = 0;
+ Util.OPTIONS._multiBuExecution = true;
+ Util.logger.info(`:: ${lang_present} ${selectedType} on all BUs for ${cred}`);
for (const bu in properties.credentials[cred].businessUnits) {
- if (await this._executeBU(cred, bu, selectedTypesArr, keys)) {
- counter_credBu++;
- } else {
- counter_failed++;
- }
+ resultObj[cred + '/' + bu] = await this.#runOnBU(
+ methodName,
+ cred,
+ bu,
+ selectedType,
+ keys
+ );
+ counter_credBu++;
+ counter_credKeys += resultObj[cred + '/' + bu].length;
Util.startLogger(true);
}
Util.logger.info(
- `\n :: Executed the entity on ${counter_credBu} BUs for ${cred}\n`
+ `:: ${lang_past} for ${counter_credKeys} ${selectedType}s on ${counter_credBu} BUs for ${cred}`
);
} else {
- // execute the entity on one BU only
- if (await this._executeBU(cred, bu, selectedTypesArr, keys)) {
- counter_credBu++;
- } else {
- counter_failed++;
- }
- Util.logger.info(`\n :: Done\n`);
+ // execute runMethod for the entity on one BU only
+ resultObj[cred + '/' + bu] = await this.#runOnBU(
+ methodName,
+ cred,
+ bu,
+ selectedType,
+ keys
+ );
+ Util.logger.info(`:: Done`);
}
}
- if (counter_credBu !== 0) {
- Util.logger.info(`\n :: Executed query on ${counter_credBu} BUs\n`);
- }
- return counter_failed === 0 ? true : false;
+ return resultObj;
}
/**
- * helper for {@link execute}
+ * helper for {@link Mcdev.#runMethod}
*
+ * @param {'execute'|'pause'|'fixKeys'} methodName what to run
* @param {string} cred name of Credential
* @param {string} bu name of BU
- * @param {TYPE.SupportedMetadataTypes[]} [selectedTypesArr] limit execution to given metadata type
+ * @param {TYPE.SupportedMetadataTypes} [type] limit execution to given metadata type
* @param {string[]} keyArr customerkey of the metadata
- * @returns {Promise.} true if all items were executed, false otherwise
+ * @returns {Promise.} list of keys that were affected
*/
- static async _executeBU(cred, bu, selectedTypesArr, keyArr) {
+ static async #runOnBU(methodName, cred, bu, type, keyArr) {
const properties = await config.getProperties();
- let counter_failed = 0;
+ const resultArr = [];
const buObject = await Cli.getCredentialObject(
properties,
cred === null ? null : cred + '/' + bu,
null,
true
);
- if (!keyArr || (Array.isArray(keyArr) && !keyArr.length)) {
- throw new Error('No keys were provided');
+ try {
+ if (!type) {
+ throw new Error('No type was provided');
+ }
+ if (buObject !== null) {
+ cache.initCache(buObject);
+ cred = buObject.credential;
+ bu = buObject.businessUnit;
+ }
+ Util.logger.info(`:: ${methodName} ${type} on ${cred}/${bu}`);
+ MetadataTypeInfo[type].client = auth.getSDK(buObject);
+
+ MetadataTypeInfo[type].properties = properties;
+ MetadataTypeInfo[type].buObject = buObject;
+ switch (methodName) {
+ case 'fixKeys': {
+ {
+ resultArr.push(...(await this.#fixKeys(cred, bu, type, keyArr)));
+
+ break;
+ }
+ }
+ default: {
+ if (Util.OPTIONS.like && Object.keys(Util.OPTIONS.like).length) {
+ keyArr = await this.#retrieveKeysWithLike(type, buObject);
+ }
+ if (!keyArr || (Array.isArray(keyArr) && !keyArr.length)) {
+ throw new Error('No keys were provided');
+ } // result will be undefined (false) if methodName is not supported for the type
+ resultArr.push(...(await MetadataTypeInfo[type][methodName](keyArr)));
+ }
+ }
+ } catch (ex) {
+ Util.logger.errorStack(ex, 'mcdev.' + methodName + ' failed');
}
- if (!selectedTypesArr || (Array.isArray(selectedTypesArr) && !selectedTypesArr.length)) {
- throw new Error('No type was provided');
+
+ return resultArr;
+ }
+
+ /**
+ * helper for {@link Mcdev.#runOnBU}
+ *
+ * @param {TYPE.SupportedMetadataTypes} selectedType limit execution to given metadata type
+ * @param {TYPE.BuObject} buObject properties for auth
+ * @returns {string[]} keyArr
+ */
+ static async #retrieveKeysWithLike(selectedType, buObject) {
+ const properties = await config.getProperties();
+
+ // cache depenencies
+ const deployOrder = Util.getMetadataHierachy([selectedType]);
+ for (const type in deployOrder) {
+ const subTypeArr = deployOrder[type];
+ MetadataTypeInfo[type].client = auth.getSDK(buObject);
+ MetadataTypeInfo[type].properties = properties;
+ MetadataTypeInfo[type].buObject = buObject;
+ Util.logger.info(`Caching dependent Metadata: ${type}`);
+ Util.logSubtypes(subTypeArr);
+ const result = await MetadataTypeInfo[type].retrieveForCache(null, subTypeArr);
+ if (result) {
+ if (Array.isArray(result)) {
+ for (const result_i of result) {
+ if (result_i?.metadata && Object.keys(result_i.metadata).length) {
+ cache.mergeMetadata(type, result_i.metadata);
+ }
+ }
+ } else {
+ cache.setMetadata(type, result.metadata);
+ }
+ }
}
- if (buObject !== null) {
- cache.initCache(buObject);
- cred = buObject.credential;
- bu = buObject.businessUnit;
+
+ // find all keys in chosen type that match the like-filter
+ const keyArr = [];
+ const metadataMap = cache.getCache()[selectedType];
+ if (!metadataMap) {
+ throw new Error(`Selected type ${selectedType} could not be cached`);
}
Util.logger.info(
- `\n :: Executing ${selectedTypesArr.join(', ')} on ${cred}/${bu}\n`
+ Util.getGrayMsg(`Found ${Object.keys(metadataMap).length} ${selectedType}s`)
+ );
+ for (const originalKey in metadataMap) {
+ // hide postRetrieveOutput
+ Util.setLoggingLevel({ silent: true });
+ metadataMap[originalKey] = MetadataTypeInfo[selectedType].postRetrieveTasks(
+ metadataMap[originalKey]
+ );
+ // reactivate logging
+ Util.setLoggingLevel({});
+ if (Util.fieldsLike(metadataMap[originalKey])) {
+ keyArr.push(originalKey);
+ }
+ }
+ Util.logger.info(
+ Util.getGrayMsg(
+ `Identified ${keyArr.length} ${selectedType}${
+ keyArr.length === 1 ? '' : 's'
+ } that match${keyArr.length === 1 ? 'es' : ''} the like-filter`
+ )
+ );
+
+ return keyArr;
+ }
+ /**
+ * Updates the key to match the name field
+ *
+ * @param {string} cred name of Credential
+ * @param {string} bu name of BU
+ * @param {TYPE.SupportedMetadataTypes} type limit execution to given metadata type
+ * @param {string[]} [keyArr] customerkey of the metadata
+ * @returns {Promise.} list of keys that were affected
+ */
+ static async #fixKeys(cred, bu, type, keyArr) {
+ const properties = await config.getProperties();
+ let actuallyFixedKeys = [];
+ const resultArr = [];
+
+ if (
+ MetadataTypeDefinitions[type].keyIsFixed === true ||
+ MetadataTypeDefinitions[type].keyField === MetadataTypeDefinitions[type].idField
+ ) {
+ Util.logger.error(`Key cannot be updated for this type`);
+ return resultArr;
+ }
+
+ const buObject = await Cli.getCredentialObject(
+ properties,
+ cred === null ? null : cred + '/' + bu,
+ null,
+ true
);
try {
- // more than one type was provided, iterate types and execute items
- for (const type of selectedTypesArr) {
- try {
- MetadataTypeInfo[type].client = auth.getSDK(buObject);
- } catch (ex) {
- Util.logger.error(ex.message);
- return;
- }
- // result will be undefined (false) if execute is not supported for the type
- if (!(await MetadataTypeInfo[type].execute(keyArr))) {
- counter_failed++;
+ Util.logger.info(`Retrieving latest versions of ${type} from server`);
+ const retriever = new Retriever(properties, buObject);
+ const retrieved = await retriever.retrieve([type], keyArr, null, false);
+
+ const metadataMap = Object.values(retrieved)[0][0];
+ const keysForDeploy = MetadataTypeInfo[type].getKeysForFixing(metadataMap);
+ if (keysForDeploy.length < 1) {
+ Util.logger.warn(
+ `No items found with a key-name mismatch that match your criteria.\n`
+ );
+ return resultArr;
+ }
+ this.setOptions({
+ changeKeyField: MetadataTypeDefinitions[type].nameField,
+ fromRetrieve: true,
+ });
+ const deployed = await Deployer.deploy(cred + '/' + bu, [type], keysForDeploy);
+ actuallyFixedKeys = Object.keys(Object.values(Object.values(deployed)[0])[0]);
+ resultArr.push(...actuallyFixedKeys);
+ const dependentTypes = await Util.getDependentMetadata(type);
+ if (actuallyFixedKeys && actuallyFixedKeys.length) {
+ Util.logger.info(
+ `Successfully updated ${actuallyFixedKeys.length} key${
+ actuallyFixedKeys.length === 1 ? '' : 's'
+ } of type ${type}`
+ );
+ if (dependentTypes.length) {
+ Util.logger.warn(
+ `Please re-retrieve the following types as your local copies might now be outdated: ${Util.getGrayMsg(
+ dependentTypes.join(', ')
+ )}`
+ );
+ const reRetrieve = await Cli.postFixKeysReretrieve(type, dependentTypes);
+ if (reRetrieve) {
+ Util.logger.info(
+ `Retrieving latest versions of ${dependentTypes.join(', ')} from server`
+ );
+ const retriever = new Retriever(properties, buObject);
+ await retriever.retrieve(dependentTypes, null, null, false);
+ }
+ } else {
+ Util.logger.info(
+ `No dependent types found that need to be re-retrieved after fixing keys of type ${type}.`
+ );
}
+ } else {
+ Util.logger.warn(`No keys of type ${type} updated.`);
}
} catch (ex) {
- Util.logger.errorStack(ex, 'mcdev.execute failed');
+ Util.logger.errorStack(ex, 'mcdev.fixKeys failed');
}
- return counter_failed === 0 ? true : false;
+ Util.logger.info(`:: Done\n`);
+ return resultArr;
}
}
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 3ff861cce..c44e337c3 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -86,7 +86,7 @@ class Asset extends MetadataType {
return { metadata: Object.values(metadata)[0], type: this.definition.type };
}
/**
- * helper for {@link retrieve} + {@link retrieveAsTemplate}
+ * helper for {@link Asset.retrieve} + {@link Asset.retrieveAsTemplate}
*
* @private
* @returns {TYPE.AssetSubType[]} subtype array
@@ -448,14 +448,14 @@ class Asset extends MetadataType {
);
}
/**
- * helper for {@link preDeployTasks}
+ * helper for {@link Asset.preDeployTasks}
* Some metadata types store their actual content as a separate file, e.g. images
* This method reads these from the local FS stores them in the metadata object allowing to deploy it
*
* @param {TYPE.AssetItem} metadata a single asset
* @param {TYPE.AssetSubType} subType group of similar assets to put in a folder (ie. images)
* @param {string} deployDir directory of deploy files
- * @param {boolean} [pathOnly=false] used by getFilesToCommit which does not need the binary file to be actually read
+ * @param {boolean} [pathOnly] used by getFilesToCommit which does not need the binary file to be actually read
* @returns {Promise.} if found will return the path of the binary file
*/
static async _readExtendedFileFromFS(metadata, subType, deployDir, pathOnly = false) {
@@ -504,11 +504,10 @@ class Asset extends MetadataType {
* @param {TYPE.MetadataTypeMap} metadata metadata mapped by their keyField
* @param {TYPE.MetadataTypeMap} _ originalMetadata to be updated (contains additioanl fields)
* @param {{created: number, updated: number}} createdUpdated counter representing successful creates/updates
- * @param {boolean} [isRefresh] optional flag to indicate that triggeredSend should be refreshed after deployment of assets
* @returns {Promise.} -
*/
- static async postDeployTasks(metadata, _, createdUpdated, isRefresh) {
- if (isRefresh) {
+ static async postDeployTasks(metadata, _, createdUpdated) {
+ if (Util.OPTIONS.refresh) {
if (createdUpdated.updated) {
// only run this if assets were updated. for created assets we do not expect
this._refreshTriggeredSend(metadata);
@@ -521,7 +520,7 @@ class Asset extends MetadataType {
}
/**
- * helper for {@link postDeployTasks}. triggers a refresh of active triggerredSendDefinitions associated with the updated asset-message items. Gets executed if isRefresh is true.
+ * helper for {@link Asset.postDeployTasks}. triggers a refresh of active triggerredSendDefinitions associated with the updated asset-message items. Gets executed if refresh option has been set.
*
* @private
* @param {TYPE.MetadataTypeMap} metadata metadata mapped by their keyField
@@ -546,7 +545,7 @@ class Asset extends MetadataType {
TriggeredSend.client = this.client;
try {
// find refreshable TSDs
- const tsdObj = (await TriggeredSend.findRefreshableItems()).metadata;
+ const tsdObj = (await TriggeredSend.findRefreshableItems(true)).metadata;
const tsdCountInitial = Object.keys(tsdObj).length;
const emailCount = legacyIdArr.length;
@@ -867,7 +866,7 @@ class Asset extends MetadataType {
}
/**
- * helper for {@link preDeployTasks} that loads extracted code content back into JSON
+ * helper for {@link Asset.preDeployTasks} that loads extracted code content back into JSON
*
* @param {TYPE.AssetItem} metadata a single asset definition
* @param {string} deployDir directory of deploy files
@@ -1151,7 +1150,7 @@ class Asset extends MetadataType {
return fileList;
}
/**
- * helper for {@link preDeployTasks} that loads extracted code content back into JSON
+ * helper for {@link Asset.preDeployTasks} that loads extracted code content back into JSON
*
* @param {string} prefix usually the customerkey
* @param {object} metadataSlots metadata.views.html.slots or deeper slots.<>.blocks.<>.slots
@@ -1231,7 +1230,7 @@ class Asset extends MetadataType {
}
}
/**
- * helper for {@link postRetrieveTasks} that finds code content in JSON and extracts it
+ * helper for {@link Asset.postRetrieveTasks} that finds code content in JSON and extracts it
* to allow saving that separately and formatted
*
* @param {TYPE.AssetItem} metadata a single asset definition
diff --git a/lib/metadataTypes/AttributeGroup.js b/lib/metadataTypes/AttributeGroup.js
index cf84ede2a..086ffd845 100644
--- a/lib/metadataTypes/AttributeGroup.js
+++ b/lib/metadataTypes/AttributeGroup.js
@@ -1,7 +1,9 @@
'use strict';
-const MetadataType = require('./MetadataType');
const TYPE = require('../../types/mcdev.d');
+const MetadataType = require('./MetadataType');
+const Util = require('../util/util');
+const cache = require('../util/cache');
/**
* AttributeGroup MetadataType
@@ -18,7 +20,7 @@ class AttributeGroup extends MetadataType {
* @param {string} [key] customer key of single item to retrieve
* @returns {Promise.} Promise of metadata
*/
- static retrieve(retrieveDir, _, __, key) {
+ static async retrieve(retrieveDir, _, __, key) {
return super.retrieveREST(
retrieveDir,
'/hub/v1/contacts/schema/attributeGroups',
@@ -34,6 +36,78 @@ class AttributeGroup extends MetadataType {
static retrieveForCache() {
return super.retrieveREST(null, '/hub/v1/contacts/schema/attributeGroups');
}
+
+ /**
+ * manages post retrieve steps
+ *
+ * @param {TYPE.MetadataTypeItem} metadata a single metadata
+ * @returns {TYPE.MetadataTypeItem} metadata
+ */
+ static postRetrieveTasks(metadata) {
+ // Member ID
+ delete metadata.mID;
+
+ // attributeSet
+ metadata.attributeSetIdentifiers = metadata.attributeSetIdentifiers.map((attributeSet) => {
+ try {
+ const key = cache.searchForField(
+ 'attributeSet',
+ attributeSet.definitionID,
+ 'definitionID',
+ 'definitionKey'
+ );
+ if (key !== attributeSet.definitionKey) {
+ throw new Error(
+ `AttributeSet key mismatch. Found ${key} instead of ${attributeSet.definitionKey}`
+ );
+ }
+ return key;
+ } catch (ex) {
+ Util.logger.warn(
+ ` - ${this.definition.type} ${metadata[this.definition.keyField]} (for ${
+ attributeSet.definitionKey
+ }): ${ex.message}`
+ );
+ return attributeSet;
+ }
+ });
+
+ // requiredRelationships
+ // TODO: implement
+
+ // description is not returned by API when empty. Set to empty string to propose the field as an option to users
+ metadata.description ||= '';
+
+ // applicationKey is only used by system generated attribute groups and otherwise it's empty.
+ if (metadata.applicationKey === '') {
+ // remove useless field
+ delete metadata.applicationKey;
+ }
+
+ // connectingID.identifierType seems to be always set to 'FullyQualifiedName' - to be sure we check it here and remove it if it's the case
+ if (metadata.connectingID?.identifierType === 'FullyQualifiedName') {
+ // remove useless field
+ delete metadata.connectingID;
+ }
+
+ // containsSchemaAttributes is only true for system generated attribute groups and otherwise it's false.
+ if (!metadata.containsSchemaAttributes) {
+ delete metadata.containsSchemaAttributes;
+ }
+
+ // isSystemDefined is only true for system generated attribute groups and cannot be deployed
+ if (!metadata.isSystemDefined) {
+ delete metadata.isSystemDefined;
+ }
+
+ return metadata;
+ }
+ /**
+ * prepares for deployment
+ *
+ * @param {TYPE.MetadataTypeItem} metadata a single item
+ * @returns {TYPE.MetadataTypeItem} Promise
+ */
}
// Assign definition to static attributes
diff --git a/lib/metadataTypes/AttributeSet.js b/lib/metadataTypes/AttributeSet.js
new file mode 100644
index 000000000..1f9d82984
--- /dev/null
+++ b/lib/metadataTypes/AttributeSet.js
@@ -0,0 +1,260 @@
+'use strict';
+
+const TYPE = require('../../types/mcdev.d');
+const MetadataType = require('./MetadataType');
+const AttributeGroup = require('./AttributeGroup');
+const Util = require('../util/util');
+const cache = require('../util/cache');
+
+/**
+ * AttributeSet MetadataType
+ *
+ * @augments MetadataType
+ */
+class AttributeSet extends MetadataType {
+ /**
+ * Retrieves Metadata of schema set Definitions.
+ *
+ * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
+ * @param {void} [_] unused parameter
+ * @param {void} [__] unused parameter
+ * @param {string} [key] customer key of single item to retrieve
+ * @returns {Promise.} Promise
+ */
+ static async retrieve(retrieveDir, _, __, key) {
+ if (retrieveDir && !cache.getCache()?.attributeGroup) {
+ // ! attributeGroup and attributeSet both link to each other. caching attributeGroup here "manually", assuming that it's quicker than the other way round
+ Util.logger.info(' - Caching dependent Metadata: attributeGroup');
+ AttributeGroup.buObject = this.buObject;
+ AttributeGroup.client = this.client;
+ AttributeGroup.properties = this.properties;
+ const result = await AttributeGroup.retrieveForCache();
+ cache.setMetadata('attributeGroup', result.metadata);
+ }
+ return super.retrieveREST(
+ retrieveDir,
+ '/hub/v1/contacts/schema/setDefinitions',
+ null,
+ null,
+ key
+ );
+ }
+ /**
+ * Retrieves Metadata of schema set definitions for caching.
+ *
+ * @returns {Promise.} Promise
+ */
+ static retrieveForCache() {
+ return super.retrieveREST(null, '/hub/v1/contacts/schema/setDefinitions');
+ }
+
+ /**
+ * Builds map of metadata entries mapped to their keyfields
+ *
+ * @param {object} body json of response body
+ * @param {string|number} [singleRetrieve] key of single item to filter by
+ * @returns {TYPE.MetadataTypeMap} keyField => metadata map
+ */
+ static parseResponseBody(body, singleRetrieve) {
+ const metadataCache = super.parseResponseBody(body);
+
+ // make sure we add the entire list to cache before running postRetrieveTasks because of the self-references this type is using
+ // usually, the cache is only written into after all postRetrieveTasks have been run
+ cache.setMetadata(this.definition.type, metadataCache);
+
+ const metadataStructure = super.parseResponseBody(body, singleRetrieve);
+ return metadataStructure;
+ }
+
+ /**
+ * manages post retrieve steps
+ *
+ * @param {TYPE.MetadataTypeItem} metadata a single metadata
+ * @returns {TYPE.MetadataTypeItem} metadata
+ */
+ static postRetrieveTasks(metadata) {
+ // folder
+ if (metadata.storageLogicalType === 'DataExtension') {
+ // attributeSet created for Group Connect do not have a folder
+ super.setFolderPath(metadata);
+ }
+
+ // source
+ switch (metadata.storageLogicalType) {
+ case 'ExactTargetSchema': // synced / shared DEs
+ case 'DataExtension': {
+ // local DEs
+ try {
+ metadata.r__dataExtension_CustomerKey = cache.searchForField(
+ 'dataExtension',
+ metadata.storageReferenceID.value,
+ 'ObjectID',
+ 'CustomerKey'
+ );
+ // TODO: check if fields in metadata.sendAttributeStorageName exist in data extension --> error
+ // TODO: check if fields in data extension exist in metadata.sendAttributeStorageName --> warn
+
+ delete metadata.storageReferenceID;
+ delete metadata.storageName;
+ delete metadata.storageObjectInformation; // type ExactTargetSchema only
+ } catch (ex) {
+ Util.logger.warn(
+ ` - ${this.definition.type} ${metadata[this.definition.keyField]}: ${
+ ex.message
+ }`
+ );
+ }
+ break;
+ }
+ case 'MobileAttributes': {
+ // TODO: implement
+ // "storageName": "_MobileAddress",
+
+ break;
+ }
+ case 'EnterpriseAttributes': {
+ // TODO: implement
+ // "storageName": "_EnterpriseAttribute",
+
+ break;
+ }
+ case 'PushAttributes': {
+ // TODO: implement
+ // "storageName": "_PushAddress",
+
+ break;
+ }
+ }
+
+ // relationships to attributeGroups & AttributeSet
+ if (Array.isArray(metadata.relationships)) {
+ for (const relationship of metadata.relationships) {
+ for (const type of ['left', 'right']) {
+ if (
+ relationship[type + 'Item']?.connectingID?.identifierType ===
+ 'FullyQualifiedName'
+ ) {
+ delete relationship[type + 'Item'].connectingID;
+ }
+ let relationshipObj = null;
+ switch (relationship[type + 'Item'].relationshipType) {
+ case 'AttributeGroup': {
+ try {
+ relationship[type + 'Item'].r__attributeGroup_definitionKey =
+ cache.searchForField(
+ 'attributeGroup',
+ relationship[type + 'Item']?.identifier,
+ 'definitionID',
+ 'definitionKey'
+ );
+ delete relationship[type + 'Item']?.identifier;
+ } catch (ex) {
+ Util.logger.warn(
+ ` - ${this.definition.type} ${
+ metadata[this.definition.keyField]
+ }: ${ex.message}`
+ );
+ }
+ // get relationship fieldnames
+ relationshipObj = {
+ valueDefinitions: this._getSystemValueDefinitions(),
+ };
+ break;
+ }
+ case 'AttributeSet': {
+ try {
+ relationship[type + 'Item'].r__attributeSet_definitionKey =
+ cache.searchForField(
+ 'attributeSet',
+ relationship[type + 'Item']?.identifier,
+ 'definitionID',
+ 'definitionKey'
+ );
+ delete relationship[type + 'Item']?.identifier;
+
+ // get relationship fieldnames
+ // check if its a self-reference to metadata.valueDefinitions or if it's a reference to another attributeSet
+ relationshipObj =
+ relationship[type + 'Item'].r__attributeSet_definitionKey ===
+ metadata.definitionKey
+ ? metadata
+ : cache.getByKey(
+ 'attributeSet',
+ relationship[type + 'Item']
+ .r__attributeSet_definitionKey
+ );
+ } catch (ex) {
+ Util.logger.warn(
+ ` - ${this.definition.type} ${
+ metadata[this.definition.keyField]
+ }: ${ex.message}`
+ );
+ }
+ break;
+ }
+ }
+ try {
+ // get relationship fieldnames
+ // resolve field values
+ for (const attr of relationship.relationshipAttributes) {
+ const id = attr[type + 'AttributeID'];
+ const valueDefinition = relationshipObj.valueDefinitions.find(
+ (item) => item.valueDefinitionID === id
+ );
+ if (valueDefinition) {
+ attr['c__' + type + 'FullyQualifiedName'] =
+ valueDefinition.fullyQualifiedName;
+ delete attr[type + 'AttributeID'];
+ delete attr[type + 'ConnectingID'];
+ } else {
+ throw new Error(
+ `Could not find ${type}AttributeID ${id} of relationship ${relationship.relationshipID}`
+ );
+ }
+ }
+ } catch (ex) {
+ Util.logger.warn(
+ ` - ${this.definition.type} ${metadata[this.definition.nameField]} / ${
+ metadata[this.definition.keyField]
+ }: ${ex.message}`
+ );
+ }
+ }
+ }
+ }
+
+ // Member ID
+ delete metadata.customObjectOwnerMID;
+
+ // connectingID.identifierType seems to be always set to 'FullyQualifiedName' - to be sure we check it here and remove it if it's the case
+ if (metadata.connectingID?.identifierType === 'FullyQualifiedName') {
+ // remove useless field
+ delete metadata.connectingID;
+ }
+
+ return metadata;
+ }
+
+ /**
+ * helper for {@link AttributeSet.postRetrieveTasks}
+ *
+ * @returns {object[]} all system value definitions
+ */
+ static _getSystemValueDefinitions() {
+ if (!this.systemValueDefinitions) {
+ this.systemValueDefinitions = Object.values(cache.getCache()['attributeSet'])
+ .flatMap((item) => {
+ if (item.isSystemDefined) {
+ return item.valueDefinitions;
+ }
+ })
+ .filter(Boolean);
+ }
+ return this.systemValueDefinitions;
+ }
+}
+
+// Assign definition to static attributes
+AttributeSet.definition = require('../MetadataTypeDefinitions').attributeSet;
+
+module.exports = AttributeSet;
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 560ed94e3..d68105298 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -47,34 +47,41 @@ class Automation extends MetadataType {
)
);
}
+ // the API seems to handle 50 concurrent requests nicely
+ const rateLimit = pLimit(50);
+
const details = results.Results
? await Promise.all(
- results.Results.map(async (a) => {
- try {
- return await this.client.rest.get(
- '/automation/v1/automations/' + a.ObjectID
- );
- } catch (ex) {
+ results.Results.map(async (item) =>
+ rateLimit(async () => {
try {
- if (ex.message == 'socket hang up') {
- // one more retry; it's a rare case but retrying again should solve the issue gracefully
- return await this.client.rest.get(
- '/automation/v1/automations/' + a.ObjectID
- );
+ return await this.client.rest.get(
+ '/automation/v1/automations/' + item.ObjectID
+ );
+ } catch (ex) {
+ try {
+ if (ex.message == 'socket hang up') {
+ // one more retry; it's a rare case but retrying again should solve the issue gracefully
+ return await this.client.rest.get(
+ '/automation/v1/automations/' + item.ObjectID
+ );
+ }
+ } catch {
+ // no extra action needed, handled below
}
- } catch {
- // no extra action needed, handled below
+ // if we do get here, we should log the error and continue instead of failing to download all automations
+ Util.logger.error(
+ ` ☇ skipping Automation ${item.ObjectID}: ${ex.message} ${ex.code}`
+ );
+ return null;
}
- // if we do get here, we should log the error and continue instead of failing to download all automations
- Util.logger.error(
- ` ☇ skipping Automation ${a.ObjectID}: ${ex.message} ${ex.code}`
- );
- return null;
- }
- })
+ })
+ )
)
: [];
- let metadataMap = this.parseResponseBody({ items: details });
+
+ // * if retrieving some automations fails, a null element would remain in the details-array for each of them that needs to be filtered to prevent it from causing issues elsewhere
+ let metadataMap = this.parseResponseBody({ items: details.filter(Boolean) });
if (Object.keys(metadataMap).length) {
// attach notification information to each automation that has any
@@ -144,11 +151,19 @@ class Automation extends MetadataType {
}));
found++;
} else {
- throw new TypeError(JSON.stringify(notificationsResult));
+ if (
+ !notificationsResult ||
+ typeof notificationsResult !== 'object' ||
+ Object.keys(notificationsResult).length !== 1 ||
+ !notificationsResult?.programId
+ ) {
+ throw new TypeError(JSON.stringify(notificationsResult));
+ }
+ // * if there are no automation notifications, the API returns a single object with the programId
}
} catch (ex) {
Util.logger.debug(
- ` ☇ skipping Notifications for Automation ${automationLegacy.key}: ${ex.message} ${ex.code}`
+ ` ☇ issue retrieving Notifications for automation ${automationLegacy.key}: ${ex.message} ${ex.code}`
);
skipped++;
}
@@ -242,6 +257,7 @@ class Automation extends MetadataType {
key: m.CustomerKey,
name: m.Name,
programId: automationsLegacy.metadata[m.CustomerKey]?.id,
+ status: automationsLegacy.metadata[m.CustomerKey]?.status,
};
}
}
@@ -318,6 +334,29 @@ class Automation extends MetadataType {
throw new Error(JSON.stringify(results));
}
}
+ /**
+ * helper for {@link Automation.postRetrieveTasks} and {@link Automation.execute}
+ *
+ * @param {TYPE.AutomationItem} metadata a single automation
+ * @returns {boolean} true if the automation schedule is valid
+ */
+ static #isValidSchedule(metadata) {
+ if (metadata.type === 'scheduled' && metadata.schedule?.startDate) {
+ try {
+ if (this.definition.timeZoneMapping[metadata.schedule.timezoneName]) {
+ // if we found the id in our list, remove the redundant data
+ delete metadata.schedule.timezoneId;
+ }
+ } catch {
+ Util.logger.debug(
+ `- Schedule name '${metadata.schedule.timezoneName}' not found in definition.timeZoneMapping`
+ );
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
/**
* manages post retrieve steps
*
@@ -332,34 +371,24 @@ class Automation extends MetadataType {
if (metadata.type === 'scheduled' && metadata.schedule?.startDate) {
// Starting Source == 'Schedule'
- try {
- if (this.definition.timeZoneMapping[metadata.schedule.timezoneName]) {
- // if we found the id in our list, remove the redundant data
- delete metadata.schedule.timezoneId;
- }
- } catch {
- Util.logger.debug(
- `- Schedule name '${metadata.schedule.timezoneName}' not found in definition.timeZoneMapping`
- );
- }
- try {
- // type 'Running' is temporary status only, overwrite with Scheduled for storage.
- if (metadata.type === 'scheduled' && metadata.status === 'Running') {
- metadata.status = 'Scheduled';
- }
- } catch {
- Util.logger.error(
- `- ${this.definition.type} ${metadata.name} does not have a valid schedule setting.`
- );
+ if (!this.#isValidSchedule(metadata)) {
return;
}
+ // type 'Running' is temporary status only, overwrite with Scheduled for storage.
+ if (metadata.type === 'scheduled' && metadata.status === 'Running') {
+ metadata.status = 'Scheduled';
+ }
} else if (metadata.type === 'triggered' && metadata.fileTrigger) {
// Starting Source == 'File Drop'
// Do nothing for now
}
if (metadata.steps) {
+ let i = 0;
+
for (const step of metadata.steps) {
- const stepNumber = step.stepNumber || step.step;
+ i++;
+
+ const stepNumber = step.stepNumber || step.step || i;
delete step.stepNumber;
delete step.step;
@@ -387,14 +416,22 @@ class Automation extends MetadataType {
activity.activityObjectId == null
) {
Util.logger.debug(
- ` - skip parsing of activity due to missing activityObjectId: ${JSON.stringify(
- activity
- )}`
+ ` - skipping ${
+ metadata[this.definition.keyField]
+ } activity ${stepNumber}.${
+ activity.displayOrder
+ } due to missing activityObjectId: ${JSON.stringify(activity)}`
);
// empty if block
} else if (!this.definition.dependencies.includes(activity.r__type)) {
Util.logger.debug(
- ` - skip parsing because the type is not set up as a dependecy for ${this.definition.type}`
+ ` - skipping ${
+ metadata[this.definition.keyField]
+ } activity ${stepNumber}.${
+ activity.displayOrder
+ } because the type ${
+ activity.r__type
+ } is not set up as a dependency for ${this.definition.type}`
);
}
// / if managed by cache we can update references to support deployment
@@ -445,6 +482,197 @@ class Automation extends MetadataType {
return null;
}
}
+ /**
+ * a function to start query execution via API
+ *
+ * @param {string[]} keyArr customerkey of the metadata
+ * @returns {Promise.} Returns list of keys that were executed
+ */
+ static async execute(keyArr) {
+ const metadataMap = {};
+ for (const key of keyArr) {
+ if (Util.OPTIONS.schedule) {
+ // schedule
+ const results = await this.retrieve(undefined, undefined, undefined, key);
+ if (Object.keys(results.metadata).length) {
+ for (const resultKey of Object.keys(results.metadata)) {
+ if (this.#isValidSchedule(results.metadata[resultKey])) {
+ metadataMap[resultKey] = results.metadata[resultKey];
+ } else {
+ Util.logger.error(
+ ` - skipping ${this.definition.type} ${results.metadata[resultKey].name}: no valid schedule settings found.`
+ );
+ }
+ }
+ }
+ } else {
+ // runOnce
+ const objectId = await this.#getObjectIdForSingleRetrieve(key);
+ metadataMap[key] = {};
+ metadataMap[key][this.definition.idField] = objectId;
+ metadataMap[key][this.definition.keyField] = key;
+ }
+ }
+ if (!Object.keys(metadataMap).length) {
+ Util.logger.error(`No ${this.definition.type} to execute`);
+ return false;
+ }
+ Util.logger.info(
+ `Starting automations ${
+ Util.OPTIONS.schedule
+ ? 'according to schedule'
+ : 'to run once (use --schedule or --execute=schedule to schedule instead)'
+ }: ${Object.keys(metadataMap).length}`
+ );
+ const promiseResults = [];
+ for (const key of Object.keys(metadataMap)) {
+ if (Util.OPTIONS.schedule && metadataMap[key].status === 'Scheduled') {
+ // schedule
+ Util.logger.info(
+ ` - skipping ${this.definition.type} ${metadataMap[key].name}: already scheduled.`
+ );
+ } else {
+ // schedule + runOnce
+ promiseResults.push(this.#executeItem(metadataMap, key));
+ }
+ }
+ const results = await Promise.all(promiseResults);
+ const executedKeyArr = results
+ .filter(Boolean)
+ .filter((r) => r.response.OverallStatus === 'OK')
+ .map((r) => r.key);
+ Util.logger.info(`Executed ${executedKeyArr.length} of ${keyArr.length} items`);
+ return executedKeyArr;
+ }
+ /**
+ * helper for {@link Automation.execute}
+ *
+ * @param {TYPE.AutomationMap} metadataMap map of metadata
+ * @param {string} key key of the metadata
+ * @returns {Promise.<{key:string, response:object}>} metadata key and API response
+ */
+ static async #executeItem(metadataMap, key) {
+ if (Util.OPTIONS.schedule) {
+ this.#preDeploySchedule(metadataMap[key]);
+ metadataMap[key].status = 'Scheduled';
+ return this.#scheduleAutomation(metadataMap, metadataMap, key);
+ } else {
+ return this.#runOnce(metadataMap[key]);
+ }
+ }
+
+ /**
+ * helper for {@link Automation.execute}
+ *
+ * @param {TYPE.AutomationItem} metadataEntry metadata object
+ * @returns {Promise.<{key:string, response:object}>} metadata key and API response
+ */
+ static async #runOnce(metadataEntry) {
+ return super.executeSOAP(metadataEntry);
+ }
+
+ /**
+ * Standardizes a check for multiple messages but adds query specific filters to error texts
+ *
+ * @param {object} ex response payload from REST API
+ * @returns {string[] | void} formatted Error Message
+ */
+ static getErrorsREST(ex) {
+ const errors = super.getErrorsREST(ex);
+ if (errors?.length > 0) {
+ return errors.map((msg) =>
+ msg
+ .split('403 Forbidden')
+ .join('403 Forbidden: Please check if the automation is currently running.')
+ );
+ }
+ return errors;
+ }
+
+ /**
+ * a function to start query execution via API
+ *
+ * @param {string[]} keyArr customerkey of the metadata
+ * @returns {Promise.} Returns list of keys that were paused
+ */
+ static async pause(keyArr) {
+ const metadataMap = {};
+ for (const key of keyArr) {
+ if (key) {
+ const results = await this.retrieve(undefined, undefined, undefined, key);
+ if (Object.keys(results.metadata).length) {
+ for (const key of Object.keys(results.metadata)) {
+ if (this.#isValidSchedule(results.metadata[key])) {
+ metadataMap[key] = results.metadata[key];
+ } else {
+ Util.logger.error(
+ ` - skipping ${this.definition.type} ${results.metadata[key].name}: no valid schedule settings found.`
+ );
+ }
+ }
+ }
+ }
+ }
+
+ Util.logger.info(`Pausing automations: ${Object.keys(metadataMap).length}`);
+ const promiseResults = [];
+ for (const key of Object.keys(metadataMap)) {
+ if (metadataMap[key].status === 'Scheduled') {
+ promiseResults.push(this.#pauseItem(metadataMap[key]));
+ } else if (metadataMap[key].status === 'PausedSchedule') {
+ Util.logger.info(
+ ` - skipping ${this.definition.type} ${metadataMap[key].name}: already paused.`
+ );
+ } else {
+ Util.logger.error(
+ ` - skipping ${this.definition.type} ${
+ metadataMap[key].name
+ }: currently ${metadataMap[
+ key
+ ].status.toLowerCase()}. Please try again in a few minutes.`
+ );
+ }
+ }
+ const pausedKeyArr = (await Promise.all(promiseResults))
+ .filter(Boolean)
+ .filter((r) => r.response.OverallStatus === 'OK')
+ .map((r) => r.key);
+
+ Util.logger.info(`Paused ${pausedKeyArr.length} of ${keyArr.length} items`);
+ return pausedKeyArr;
+ }
+
+ /**
+ * helper for {@link Automation.pause}
+ *
+ * @param {TYPE.AutomationItem} metadata automation metadata
+ * @returns {Promise.<{key:string, response:object}>} metadata key and API response
+ */
+ static async #pauseItem(metadata) {
+ const schedule = {};
+ try {
+ const response = await this.client.soap.schedule(
+ 'Automation',
+ schedule,
+ {
+ Interaction: {
+ ObjectID: metadata[this.definition.idField],
+ },
+ },
+ 'pause',
+ {}
+ );
+ Util.logger.info(
+ ` - paused ${this.definition.type}: ${metadata[this.definition.keyField]} / ${
+ metadata[this.definition.nameField]
+ }`
+ );
+ return { key: metadata[this.definition.keyField], response };
+ } catch (ex) {
+ this._handleSOAPErrors(ex, 'pausing', metadata, false);
+ return null;
+ }
+ }
/**
* Deploys automation - the saved file is the original one due to large differences required for deployment
@@ -452,11 +680,10 @@ class Automation extends MetadataType {
* @param {TYPE.AutomationMap} metadata metadata mapped by their keyField
* @param {string} targetBU name/shorthand of target businessUnit for mapping
* @param {string} retrieveDir directory where metadata after deploy should be saved
- * @param {boolean} [isRefresh] optional flag - so far not used by automation
* @returns {Promise.} Promise
*/
- static async deploy(metadata, targetBU, retrieveDir, isRefresh) {
- const upsertResults = await this.upsert(metadata, targetBU, isRefresh);
+ static async deploy(metadata, targetBU, retrieveDir) {
+ const upsertResults = await this.upsert(metadata, targetBU);
const savedMetadata = await this.saveResults(upsertResults, retrieveDir, null);
if (
this.properties.metaDataTypes.documentOnRetrieve.includes(this.definition.type) &&
@@ -488,11 +715,47 @@ class Automation extends MetadataType {
* @returns {Promise} Promise
*/
static update(metadata, metadataBefore) {
- metadata.id = metadataBefore.id;
+ if (metadataBefore.status === 'Running') {
+ Util.logger.error(
+ ` ☇ error updating ${this.definition.type} ${
+ metadata[this.definition.keyField] || metadata[this.definition.nameField]
+ } / ${
+ metadata[this.definition.nameField]
+ }: You cannot update an automation that's currently running. Please wait a bit and retry.`
+ );
+ return null;
+ }
const uri = '/automation/v1/automations/' + metadata.id;
return super.updateREST(metadata, uri);
}
+ /**
+ * helper for {@link Automation.preDeployTasks} and {@link Automation.execute}
+ *
+ * @param {TYPE.AutomationItem} metadata metadata mapped by their keyField
+ */
+ static #preDeploySchedule(metadata) {
+ delete metadata.schedule.rangeTypeId;
+ delete metadata.schedule.pattern;
+ delete metadata.schedule.scheduledTime;
+ delete metadata.schedule.scheduledStatus;
+ if (this.definition.timeZoneMapping[metadata.schedule.timezoneName]) {
+ metadata.schedule.timezoneId =
+ this.definition.timeZoneMapping[metadata.schedule.timezoneName];
+ } else {
+ Util.logger.error(
+ `Could not find timezone ${metadata.schedule.timezoneName} in definition.timeZoneMapping`
+ );
+ }
+
+ // the upsert API needs this to be named scheduleTypeId; the retrieve API returns it as typeId
+ metadata.schedule.scheduleTypeId = metadata.schedule.typeId;
+ delete metadata.schedule.typeId;
+
+ // prep startSource
+ metadata.startSource = { schedule: metadata.schedule, typeId: 1 };
+ }
+
/**
* Gets executed before deploying metadata
*
@@ -516,25 +779,12 @@ class Automation extends MetadataType {
if (metadata.type === 'scheduled' && metadata?.schedule?.startDate) {
// Starting Source == 'Schedule'
- delete metadata.schedule.rangeTypeId;
- delete metadata.schedule.pattern;
- delete metadata.schedule.scheduledTime;
- delete metadata.schedule.scheduledStatus;
- if (this.definition.timeZoneMapping[metadata.schedule.timezoneName]) {
- metadata.schedule.timezoneId =
- this.definition.timeZoneMapping[metadata.schedule.timezoneName];
- } else {
- Util.logger.error(
- `Could not find timezone ${metadata.schedule.timezoneName} in definition.timeZoneMapping`
- );
- }
- delete metadata.schedule.timezoneName;
- // the upsert API needs this to be named scheduleTypeId; the retrieve API returns it as typeId
- metadata.schedule.scheduleTypeId = metadata.schedule.typeId;
- delete metadata.schedule.typeId;
+ this.#preDeploySchedule(metadata);
+ // * run _buildSchedule here but only to check if things look ok - do not use the returned schedule object for deploy
+ this._buildSchedule(metadata.schedule);
- // prep startSource
- metadata.startSource = { schedule: metadata.schedule, typeId: 1 };
+ delete metadata.schedule.timezoneName;
+ delete metadata.startSource.schedule.timezoneName;
} else if (metadata.type === 'triggered' && metadata.fileTrigger) {
// Starting Source == 'File Drop'
@@ -632,6 +882,16 @@ class Automation extends MetadataType {
}
return deployable;
}
+ /**
+ * helper for {@link MetadataType.updateREST} and {@link MetadataType.updateSOAP} that removes old files after the key was changed
+ *
+ * @private
+ * @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
+ * @returns {void}
+ */
+ static async _postChangeKeyTasks(metadataEntry) {
+ super._postChangeKeyTasks(metadataEntry, true);
+ }
/**
* Gets executed after deployment of metadata type
@@ -642,21 +902,53 @@ class Automation extends MetadataType {
*/
static async postDeployTasks(metadataMap, originalMetadataMap) {
for (const key in metadataMap) {
+ const item = metadataMap[key];
+
+ const oldKey = Util.changedKeysMap?.[this.definition.type]?.[key] || key;
+ delete Util.changedKeysMap?.[this.definition.type]?.[key];
+
+ if (!item.type) {
+ // create response does not return the type attribute
+
+ const scheduleHelper = item.schedule || item.startSource.schedule;
+
+ // el.type
+ item.type = scheduleHelper
+ ? 'scheduled'
+ : item.fileTrigger
+ ? 'triggered'
+ : undefined;
+
+ // el.schedule.timezoneName
+ if (item.type === 'scheduled') {
+ // not existing for triggered automations
+ scheduleHelper.timezoneName ||= Util.inverseGet(
+ this.definition.timeZoneMapping,
+ scheduleHelper.timezoneId
+ );
+ }
+
+ // el.status
+ item.status ||= Util.inverseGet(this.definition.statusMapping, item.statusId);
+ }
// need to put schedule on here if status is scheduled
- await Automation.#scheduleAutomation(metadataMap, originalMetadataMap, key);
+ await Automation.#scheduleAutomation(metadataMap, originalMetadataMap, key, oldKey);
// need to update notifications separately if there are any
await Automation.#updateNotificationInfoREST(metadataMap, key);
// rewrite upsert to retrieve fields
- const metadata = metadataMap[key];
- if (metadata.steps) {
- for (const step of metadata.steps) {
+ if (item.steps) {
+ for (const step of item.steps) {
step.name = step.annotation;
delete step.annotation;
}
}
}
+ if (Util.OPTIONS.execute || Util.OPTIONS.schedule) {
+ Util.logger.info(`Executing: ${this.definition.type}`);
+ await this.execute(Object.keys(metadataMap));
+ }
}
/**
* helper for {@link Automation.postDeployTasks}
@@ -706,22 +998,26 @@ class Automation extends MetadataType {
}
/**
- * helper for {@link postDeployTasks}
+ * helper for {@link Automation.postDeployTasks}
*
* @param {TYPE.AutomationMap} metadataMap metadata mapped by their keyField
* @param {TYPE.AutomationMap} originalMetadataMap metadata to be updated (contains additioanl fields)
* @param {string} key current customer key
+ * @param {string} [oldKey] old customer key before fixKey / changeKeyValue / changeKeyField
+ * @returns {Promise.<{key:string, response:object}>} metadata key and API response
*/
- static async #scheduleAutomation(metadataMap, originalMetadataMap, key) {
- if (originalMetadataMap[key]?.type === 'scheduled') {
+ static async #scheduleAutomation(metadataMap, originalMetadataMap, key, oldKey) {
+ let response = null;
+ oldKey ||= key;
+ if (originalMetadataMap[oldKey]?.type === 'scheduled') {
// Starting Source == 'Schedule': Try starting the automation
- if (originalMetadataMap[key].status === 'Scheduled') {
+ if (originalMetadataMap[oldKey].status === 'Scheduled') {
let schedule = null;
try {
- schedule = this._buildSchedule(originalMetadataMap[key].schedule);
+ schedule = this._buildSchedule(originalMetadataMap[oldKey].schedule);
} catch (ex) {
Util.logger.error(
- `- Could not create schedule for automation '${originalMetadataMap[key].name}' to start it: ${ex.message}`
+ `- Could not create schedule for automation '${originalMetadataMap[oldKey].name}' to start it: ${ex.message}`
);
}
if (schedule !== null) {
@@ -734,12 +1030,12 @@ class Automation extends MetadataType {
const schedule_timezoneString = schedule._timezoneString;
delete schedule._timezoneString;
// start the automation
- await this.client.soap.schedule(
+ response = await this.client.soap.schedule(
'Automation',
schedule,
{
Interaction: {
- ObjectID: metadataMap[key].id,
+ ObjectID: metadataMap[key][this.definition.idField],
},
},
'start',
@@ -753,21 +1049,22 @@ class Automation extends MetadataType {
(schedule_interval > 1 ? 's' : ''));
Util.logger.warn(
` - scheduled automation '${
- originalMetadataMap[key].name
+ originalMetadataMap[oldKey].name
}' deployed as Active: runs every ${intervalString} starting ${
schedule_StartDateTime.split('T').join(' ').split('.')[0]
} ${schedule_timezoneString}`
);
- } catch (ex) {
+ } catch {
+ // API does not return anything usefull here. We have to know the rules instead
Util.logger.error(
- `- Could not start scheduled automation '${originalMetadataMap[key].name}': ${ex.message}`
+ ` ☇ error starting scheduled ${this.definition.type}${key}: Please check schedule settings`
);
}
}
} else {
Util.logger.info(
Util.getGrayMsg(
- ` - scheduled automation '${originalMetadataMap[key].name}' deployed as Paused`
+ ` - scheduled automation '${originalMetadataMap[oldKey].name}' deployed as Paused`
)
);
}
@@ -781,6 +1078,7 @@ class Automation extends MetadataType {
metadataMap[key].schedule.typeId = metadataMap[key].schedule.scheduleTypeId;
delete metadataMap[key].schedule.scheduleTypeId;
}
+ return { key, response };
}
/**
@@ -867,6 +1165,9 @@ class Automation extends MetadataType {
const a = obj.split('=');
recurHelper[a[0]] = a[1];
}
+ if (recurHelper.INTERVAL) {
+ recurHelper.INTERVAL = Number.parseInt(recurHelper.INTERVAL);
+ }
// the ical schedule is all in caps but soap objects require Title Case.
const keyStem = recurHelper.FREQ.charAt(0) + recurHelper.FREQ.slice(1, -2).toLowerCase();
@@ -895,13 +1196,18 @@ class Automation extends MetadataType {
'Scheduling automatically not supported for Weekly, Monthly and Yearly, please configure manually.'
);
}
+ if (recurHelper.FREQ === 'MINUTELY' && recurHelper.INTERVAL && recurHelper.INTERVAL < 5) {
+ throw new Error(
+ 'The smallest interval you can configure is 5 minutes. Please adjust your schedule.'
+ );
+ }
if (this.definition.timeZoneMapping[scheduleObject.timezoneName]) {
scheduleObject.timezoneId =
this.definition.timeZoneMapping[scheduleObject.timezoneName];
} else {
- Util.logger.error(
- `- Could not find timezone ${scheduleObject.timezoneName} in definition.timeZoneMapping`
+ throw new Error(
+ `Could not find timezone ${scheduleObject.timezoneName} in definition.timeZoneMapping`
);
}
schedule.TimeZone.ID = scheduleObject.timezoneId;
@@ -995,8 +1301,8 @@ class Automation extends MetadataType {
// create new Date object reflecting SFMC's servertime
const dateServer = new Date(utc + 3600000 * offsetServer);
- // return time as a string without trailing "Z"
- return dateServer.toISOString().slice(0, -1);
+ // return time as a string without trailing "Z" and without miliseconds (separated by .)
+ return dateServer.toISOString().slice(0, -1).split('.')[0];
}
/**
* Experimental: Only working for DataExtensions:
@@ -1023,7 +1329,7 @@ class Automation extends MetadataType {
const automationType = { scheduled: 'Schedule', triggered: 'File Drop' };
output += `**Started by:** ${automationType[json.type] || 'Not defined'}\n\n`;
output += `**Status:** ${json.status}\n\n`;
- if (json.type === 'scheduled') {
+ if (json.type === 'scheduled' || json.schedule) {
const tz =
this.definition.timeZoneDifference[
this.definition.timeZoneMapping[json?.schedule?.timezoneName]
@@ -1033,7 +1339,7 @@ class Automation extends MetadataType {
output += `**Schedule:**\n\n`;
output += `* Start: ${json.schedule.startDate.split('T').join(' ')} ${tz}\n`;
output += `* End: ${json.schedule.endDate.split('T').join(' ')} ${tz}\n`;
- output += `* Timezone: ${json.schedule.timezoneName}\n`;
+ output += `* Timezone: ${json.schedule.timezoneName}\n`;
const ical = {};
for (const item of json.schedule.icalRecur.split(';')) {
@@ -1042,9 +1348,20 @@ class Automation extends MetadataType {
}
const frequency = ical.FREQ.slice(0, -2).toLowerCase();
- output += `* Recurrance: every ${ical.INTERVAL > 1 ? ical.INTERVAL : ''} ${
- frequency === 'dai' ? 'day' : frequency
- }${ical.INTERVAL > 1 ? 's' : ''} ${ical.COUNT ? `for ${ical.COUNT} times` : ''}\n`;
+ output += `* Recurrance: `;
+ output +=
+ ical.COUNT == 1
+ ? 'run only once'
+ : `every${ical.INTERVAL > 1 ? ' ' + ical.INTERVAL : ''} ${
+ frequency === 'dai' ? 'day' : frequency
+ }${ical.INTERVAL > 1 ? 's' : ''}${
+ ical.COUNT
+ ? ` for ${ical.COUNT} times`
+ : ical.UNTIL
+ ? ' until end date'
+ : ''
+ }`;
+ output += '\n';
} else if (json.schedule) {
output += `**Schedule:** Not defined\n`;
}
@@ -1224,7 +1541,7 @@ class Automation extends MetadataType {
* @param {string} key customer key
* @returns {Promise.} objectId or enpty string
*/
- static async _getObjectIdForSingleRetrieve(key) {
+ static async #getObjectIdForSingleRetrieve(key) {
const response = await this.client.soap.retrieve('Program', ['ObjectID'], {
filter: {
leftOperand: 'CustomerKey',
@@ -1243,7 +1560,7 @@ class Automation extends MetadataType {
*/
static async deleteByKey(customerKey) {
// the delete endpoint returns a general exception if the automation does not exist; handle it gracefully instead by adding a retrieve first
- const objectId = customerKey ? await this._getObjectIdForSingleRetrieve(customerKey) : null;
+ const objectId = customerKey ? await this.#getObjectIdForSingleRetrieve(customerKey) : null;
if (!objectId) {
Util.logger.error(` - automation not found`);
return false;
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 43e9dcfc8..7210095a6 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -203,7 +203,7 @@ class DataExtension extends MetadataType {
}
}
/**
- * helper for {@link upsert}
+ * helper for {@link DataExtension.upsert}
*
* @private
* @param {object} res -
@@ -607,7 +607,7 @@ class DataExtension extends MetadataType {
metadata[customerKey].Fields = fieldArr;
}
/**
- * helper for {@link super.updateREST} and {@link super.updateSOAP} that removes old files after the key was changed
+ * helper for {@link MetadataType.updateREST} and {@link MetadataType.updateSOAP} that removes old files after the key was changed
*
* @private
* @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 61b68d642..7af1ab604 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -31,7 +31,7 @@ class DataExtensionField extends MetadataType {
return super.retrieveSOAP(null, requestParams, null, additionalFields);
}
/**
- * helper for {@link DataExtension._retrieveFieldsForSingleDe} that sorts the fields into an array
+ * helper for DataExtension.retrieveFieldsForSingleDe that sorts the fields into an array
*
* @param {TYPE.DataExtensionFieldMap} fieldsObj customerKey-based list of fields for one dataExtension
* @returns {TYPE.DataExtensionFieldItem[]} sorted array of field objects
diff --git a/lib/metadataTypes/Event.js b/lib/metadataTypes/Event.js
index 3062acfd4..864cd925c 100644
--- a/lib/metadataTypes/Event.js
+++ b/lib/metadataTypes/Event.js
@@ -136,12 +136,11 @@ class Event extends MetadataType {
* @param {TYPE.MetadataTypeMap} metadata metadata mapped by their keyField
* @param {string} deployDir directory where deploy metadata are saved
* @param {string} retrieveDir directory where metadata after deploy should be saved
- * @param {boolean} [isRefresh] optional flag - so far not used by eventDefinition
* @returns {Promise.} Promise of keyField => metadata map
*/
- static async deploy(metadata, deployDir, retrieveDir, isRefresh) {
+ static async deploy(metadata, deployDir, retrieveDir) {
Util.logBeta(this.definition.type);
- return super.deploy(metadata, deployDir, retrieveDir, isRefresh);
+ return super.deploy(metadata, deployDir, retrieveDir);
}
/**
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index e1f691873..829800112 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -452,7 +452,7 @@ class Folder extends MetadataType {
* Returns file contents mapped to their filename without '.json' ending
*
* @param {string} dir directory that contains '.json' files to be read
- * @param {boolean} [listBadKeys=false] do not print errors, used for badKeys()
+ * @param {boolean} [listBadKeys] do not print errors, used for badKeys()
* @returns {TYPE.MetadataTypeMap} fileName => fileContent map
*/
static getJsonFromFS(dir, listBadKeys) {
diff --git a/lib/metadataTypes/Journey.js b/lib/metadataTypes/Journey.js
index 7c20b2ee3..1719dfe47 100644
--- a/lib/metadataTypes/Journey.js
+++ b/lib/metadataTypes/Journey.js
@@ -216,12 +216,11 @@ class Journey extends MetadataType {
* @param {TYPE.MetadataTypeMap} metadata metadata mapped by their keyField
* @param {string} deployDir directory where deploy metadata are saved
* @param {string} retrieveDir directory where metadata after deploy should be saved
- * @param {boolean} [isRefresh] optional flag - so far not used by interaction
* @returns {Promise.} Promise of keyField => metadata map
*/
- static async deploy(metadata, deployDir, retrieveDir, isRefresh) {
+ static async deploy(metadata, deployDir, retrieveDir) {
Util.logBeta(this.definition.type);
- return super.deploy(metadata, deployDir, retrieveDir, isRefresh);
+ return super.deploy(metadata, deployDir, retrieveDir);
}
/**
@@ -265,7 +264,7 @@ class Journey extends MetadataType {
}
/**
- * helper for Journey's {@link saveResults}. Gets executed after retreive of metadata type and
+ * helper for Journey's {@link Journey.saveResults}. Gets executed after retreive of metadata type and
*
* @param {TYPE.MetadataTypeMap} metadataMap key=customer key, value=metadata
*/
@@ -478,7 +477,7 @@ class Journey extends MetadataType {
return metadata;
}
/**
- * helper for {@link postRetrieveTasks}
+ * helper for {@link Journey.postRetrieveTasks}
*
* @private
* @param {TYPE.MetadataTypeItem} metadata a single item
@@ -800,7 +799,7 @@ class Journey extends MetadataType {
}
/**
- * helper for {@link preDeployTasks}
+ * helper for {@link Journey.preDeployTasks}
*
* @private
* @param {TYPE.MetadataTypeItem} metadata a single item
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 92b1686de..36f5f52bc 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -35,7 +35,7 @@ class MetadataType {
* Returns file contents mapped to their filename without '.json' ending
*
* @param {string} dir directory that contains '.json' files to be read
- * @param {boolean} [listBadKeys=false] do not print errors, used for badKeys()
+ * @param {boolean} [listBadKeys] do not print errors, used for badKeys()
* @returns {TYPE.MetadataTypeMap} fileName => fileContent map
*/
static getJsonFromFS(dir, listBadKeys) {
@@ -108,11 +108,10 @@ class MetadataType {
* @param {TYPE.MetadataTypeMap} metadata metadata mapped by their keyField
* @param {string} deployDir directory where deploy metadata are saved
* @param {string} retrieveDir directory where metadata after deploy should be saved
- * @param {boolean} [isRefresh] optional flag to indicate that triggeredSend should be refreshed after deployment of assets
* @returns {Promise.} Promise of keyField => metadata map
*/
- static async deploy(metadata, deployDir, retrieveDir, isRefresh) {
- const upsertResults = await this.upsert(metadata, deployDir, isRefresh);
+ static async deploy(metadata, deployDir, retrieveDir) {
+ const upsertResults = await this.upsert(metadata, deployDir);
const savedMetadata = await this.saveResults(upsertResults, retrieveDir, null);
if (
this.properties.metaDataTypes.documentOnRetrieve.includes(this.definition.type) &&
@@ -131,13 +130,12 @@ class MetadataType {
* @param {TYPE.MetadataTypeMap} upsertResults metadata mapped by their keyField as returned by update/create
* @param {TYPE.MetadataTypeMap} originalMetadata metadata to be updated (contains additioanl fields)
* @param {{created: number, updated: number}} createdUpdated counter representing successful creates/updates
- * @param {boolean} [isRefresh] optional flag to indicate that triggeredSend should be refreshed after deployment of assets
* @returns {void}
*/
- static postDeployTasks(upsertResults, originalMetadata, createdUpdated, isRefresh) {}
+ static postDeployTasks(upsertResults, originalMetadata, createdUpdated) {}
/**
- * helper for {@link createREST}
+ * helper for {@link MetadataType.createREST}
*
* @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
* @param {object} apiResponse varies depending on the API call
@@ -146,7 +144,7 @@ class MetadataType {
static postCreateTasks(metadataEntry, apiResponse) {}
/**
- * helper for {@link updateREST}
+ * helper for {@link MetadataType.updateREST}
*
* @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
* @param {object} apiResponse varies depending on the API call
@@ -155,7 +153,7 @@ class MetadataType {
static postUpdateTasks(metadataEntry, apiResponse) {}
/**
- * helper for {@link createREST} when legacy API endpoints as these do not return the created item but only their new id
+ * helper for {@link MetadataType.createREST} when legacy API endpoints as these do not return the created item but only their new id
*
* @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
* @param {object} apiResponse varies depending on the API call
@@ -463,7 +461,18 @@ class MetadataType {
Util.logger.error(
` ☇ skipping ${this.definition.type}: execute is not supported yet for ${this.definition.type}`
);
- return;
+ return [];
+ }
+ /**
+ * Abstract pause method that needs to be implemented in child metadata type
+ *
+ * @returns {void}
+ */
+ static pause() {
+ Util.logger.error(
+ ` ☇ skipping ${this.definition.type}: pause is not supported yet for ${this.definition.type}`
+ );
+ return [];
}
/**
@@ -537,10 +546,9 @@ class MetadataType {
*
* @param {TYPE.MetadataTypeMap} metadataMap metadata mapped by their keyField
* @param {string} deployDir directory where deploy metadata are saved
- * @param {boolean} [isRefresh] optional flag to indicate that triggeredSend should be refreshed after deployment of assets
* @returns {Promise.} keyField => metadata map
*/
- static async upsert(metadataMap, deployDir, isRefresh) {
+ static async upsert(metadataMap, deployDir) {
const orignalMetadataMap = JSON.parse(JSON.stringify(metadataMap));
const metadataToUpdate = [];
const metadataToCreate = [];
@@ -632,12 +640,10 @@ class MetadataType {
const metadataResults = createResults.concat(updateResults).filter(Boolean);
upsertResults = this.parseResponseBody(metadataResults);
}
- await this.postDeployTasks(
- upsertResults,
- orignalMetadataMap,
- { created: createResults.length, updated: updateResults.length },
- isRefresh
- );
+ await this.postDeployTasks(upsertResults, orignalMetadataMap, {
+ created: createResults.length,
+ updated: updateResults.length,
+ });
return upsertResults;
}
@@ -815,7 +821,7 @@ class MetadataType {
);
return response;
} catch (ex) {
- const parsedErrors = this.checkForErrors(ex);
+ const parsedErrors = this.getErrorsREST(ex);
Util.logger.error(
` ☇ error creating ${this.definition.type} ${
metadataEntry[this.definition.keyField] ||
@@ -845,7 +851,7 @@ class MetadataType {
this.removeNotCreateableFields(metadataEntry);
try {
const response = await this.client.soap.create(
- soapType.charAt(0).toUpperCase() + soapType.slice(1),
+ Util.capitalizeFirstLetter(soapType),
metadataEntry,
null
);
@@ -869,7 +875,7 @@ class MetadataType {
*
* @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
* @param {string} uri rest endpoint for PATCH
- * @param {'patch'|'post'|'put'} [httpMethod='patch'] defaults to 'patch'; some update requests require PUT instead of PATCH
+ * @param {'patch'|'post'|'put'} [httpMethod] defaults to 'patch'; some update requests require PUT instead of PATCH
* @returns {Promise. | null} Promise of API response or null in case of an error
*/
static async updateREST(metadataEntry, uri, httpMethod = 'patch') {
@@ -878,7 +884,7 @@ class MetadataType {
// set to empty object in case API returned nothing to be able to update it in helper classes
const response = (await this.client.rest[httpMethod](uri, metadataEntry)) || {};
await this._postChangeKeyTasks(metadataEntry);
- this.checkForErrors(response);
+ this.getErrorsREST(response);
await this.postUpdateTasks(metadataEntry, response);
// some times, e.g. automation dont return a key in their update response and hence we need to fall back to name
Util.logger.info(
@@ -889,7 +895,7 @@ class MetadataType {
);
return response;
} catch (ex) {
- const parsedErrors = this.checkForErrors(ex);
+ const parsedErrors = this.getErrorsREST(ex);
Util.logger.error(
` ☇ error updating ${this.definition.type} ${
metadataEntry[this.definition.keyField] ||
@@ -904,7 +910,7 @@ class MetadataType {
}
/**
- * helper for {@link updateREST} and {@link updateSOAP} that removes old files after the key was changed
+ * helper for {@link MetadataType.updateREST} and {@link MetadataType.updateSOAP} that removes old files after the key was changed
*
* @private
* @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
@@ -950,7 +956,7 @@ class MetadataType {
this.removeNotUpdateableFields(metadataEntry);
try {
const response = await this.client.soap.update(
- soapType.charAt(0).toUpperCase() + soapType.slice(1),
+ Util.capitalizeFirstLetter(soapType),
metadataEntry,
null
);
@@ -985,15 +991,20 @@ class MetadataType {
}
}
/**
- * helper for {@link _handleSOAPErrors}
+ * helper for {@link MetadataType._handleSOAPErrors}
*
* @param {Error} ex error that occured
* @returns {string} error message
*/
static getSOAPErrorMsg(ex) {
- return ex?.json?.Results?.length
- ? `${ex.json.Results[0].StatusMessage} (Code ${ex.json.Results[0].ErrorCode})`
- : ex.message;
+ if (ex?.json?.Results?.length) {
+ if (ex?.json?.Results[0].StatusMessage) {
+ return `${ex.json.Results[0].StatusMessage} (Code ${ex.json.Results[0].ErrorCode})`;
+ } else if (ex?.json?.Results[0].Result.StatusMessage) {
+ return `${ex.json.Results[0].Result.StatusMessage} (Code ${ex.json.Results[0].Result.ErrorCode})`;
+ }
+ }
+ return ex.message;
}
/**
* Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
@@ -1010,7 +1021,11 @@ class MetadataType {
const soapType = this.definition.soapType || this.definition.type;
let response;
try {
- response = await this.client.soap.retrieveBulk(soapType, fields, requestParams);
+ response = await this.client.soap.retrieveBulk(
+ Util.capitalizeFirstLetter(soapType),
+ fields,
+ requestParams
+ );
} catch (ex) {
this._handleSOAPErrors(ex, 'retrieving');
return {};
@@ -1078,24 +1093,56 @@ class MetadataType {
*
* @param {string} uri REST endpoint where the POST request should be sent
* @param {string} key item key
- * @returns {Promise.} 'OK' if started execution successfully, otherwise - 'Error'
+ * @returns {Promise.<{key:string, response:string}>} metadata key and API response (OK or error)
*/
static async executeREST(uri, key) {
try {
const response = await this.client.rest.post(uri, {}); // payload is empty for this request
if (response === 'OK') {
- Util.logger.info(`Executed ${this.definition.type}: ${key}`);
+ Util.logger.info(` - executed ${this.definition.type}: ${key}`);
} else {
throw new Error(response);
}
- return response;
+ return { key, response };
} catch (ex) {
Util.logger.error(`Failed to execute ${this.definition.type} ${key}: ${ex.message}`);
}
}
/**
- * helper for {@link retrieveREST} and {@link retrieveSOAP}
+ * Used to execute a query/automation etc.
+ *
+ * @param {TYPE.MetadataTypeItem} [metadataEntry] single metadata entry
+ * @returns {Promise.<{key:string, response:object}>} metadata key and API response
+ */
+ static async executeSOAP(metadataEntry) {
+ const soapType = this.definition.soapType || this.definition.type;
+ try {
+ const response = await this.client.soap.perform(
+ Util.capitalizeFirstLetter(soapType),
+ 'start',
+ {
+ ObjectID: metadataEntry[this.definition.idField],
+ }
+ );
+ if (response?.OverallStatus === 'OK') {
+ Util.logger.info(
+ ` - executed ${this.definition.type}: ${
+ metadataEntry[this.definition.keyField]
+ }`
+ );
+ } else {
+ throw new Error(response?.OverallStatus);
+ }
+ return { key: metadataEntry[this.definition.keyField], response };
+ } catch (ex) {
+ this._handleSOAPErrors(ex, 'executing', metadataEntry);
+ return null;
+ }
+ }
+
+ /**
+ * helper for {@link MetadataType.retrieveREST} and {@link MetadataType.retrieveSOAP}
*
* @param {string|number} [singleRetrieve] key of single item to filter by
* @param {TYPE.MetadataTypeMap} metadataMap saved metadata
@@ -1298,7 +1345,7 @@ class MetadataType {
*
* @static
* @param {TYPE.MetadataTypeItem} metadataEntry metadata entry
- * @param {boolean} [include=false] true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude
+ * @param {boolean} [include] true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude
* @returns {boolean} true: skip saving == filtered; false: continue with saving
* @memberof MetadataType
*/
@@ -1343,7 +1390,7 @@ class MetadataType {
*
* @static
* @param {object} metadataEntry metadata entry
- * @param {boolean} [include=false] true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude
+ * @param {boolean} [include] true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude
* @returns {boolean} true: filtered == do NOT save; false: not filtered == do save
* @memberof MetadataType
*/
@@ -1575,6 +1622,10 @@ class MetadataType {
}
}
+ if (Util.OPTIONS.like && !Util.fieldsLike(results[originalKey])) {
+ Util.logger.debug(`Filtered ${originalKey} because of --like option`);
+ continue;
+ }
// we dont store Id on local disk, but we need it for caching logic,
// so its in retrieve but not in save. Here we put into the clone so that the original
// object used for caching doesnt have the Id removed.
@@ -1621,7 +1672,7 @@ class MetadataType {
return savedResults;
}
/**
- * helper for {@link buildDefinitionForNested}
+ * helper for {@link MetadataType.buildDefinitionForNested}
* searches extracted file for template variable names and applies the market values
*
* @param {string} code code from extracted code
@@ -1633,7 +1684,7 @@ class MetadataType {
return Mustache.render(code, templateVariables, {}, ['{{{', '}}}']);
}
/**
- * helper for {@link buildTemplateForNested}
+ * helper for {@link MetadataType.buildTemplateForNested}
* searches extracted file for template variable values and applies the market variable names
*
* @param {string} code code from extracted code
@@ -1645,7 +1696,7 @@ class MetadataType {
return Util.replaceByObject(code, templateVariables);
}
/**
- * helper for {@link buildDefinition}
+ * helper for {@link MetadataType.buildDefinition}
* handles extracted code if any are found for complex types (e.g script, asset, query)
*
* @param {string} templateDir Directory where metadata templates are stored
@@ -1666,7 +1717,7 @@ class MetadataType {
return null;
}
/**
- * helper for {@link buildTemplate}
+ * helper for {@link MetadataType.buildTemplate}
* handles extracted code if any are found for complex types
*
* @param {string} templateDir Directory where metadata templates are stored
@@ -1812,7 +1863,7 @@ class MetadataType {
* @param {object} ex response payload from REST API
* @returns {string[] | void} formatted Error Message
*/
- static checkForErrors(ex) {
+ static getErrorsREST(ex) {
const errors = [];
if (ex?.response?.status >= 400 && ex?.response?.status < 600) {
if (ex.response.data.errors) {
@@ -1835,11 +1886,13 @@ class MetadataType {
}
} else if (ex.response.data.message) {
errors.push(ex.response.data.message);
- } else {
+ } else if (ex.response.data) {
errors.push(`Undefined Errors: ${JSON.stringify(ex.response.data)}`);
+ Util.logger.debug(JSON.stringify(ex.response.data));
+ } else {
+ errors.push(`${ex.response.status} ${ex.response.statusText}`);
}
Util.logger.debug(JSON.stringify(ex.config));
- Util.logger.debug(JSON.stringify(ex.response.data));
}
return errors;
}
@@ -1902,11 +1955,7 @@ class MetadataType {
metadata[overrideKeyField || this.definition.keyField] = customerKey;
const soapType = this.definition.soapType || this.definition.type;
try {
- await this.client.soap.delete(
- soapType.charAt(0).toUpperCase() + soapType.slice(1),
- metadata,
- null
- );
+ await this.client.soap.delete(Util.capitalizeFirstLetter(soapType), metadata, null);
if (!handleOutside) {
Util.logger.info(` - deleted ${this.definition.type}: ${customerKey}`);
}
@@ -1959,7 +2008,7 @@ class MetadataType {
* Returns metadata of a business unit that is saved locally
*
* @param {string} readDir root directory of metadata.
- * @param {boolean} [listBadKeys=false] do not print errors, used for badKeys()
+ * @param {boolean} [listBadKeys] do not print errors, used for badKeys()
* @param {object} [buMetadata] Metadata of BU in local directory
* @returns {object} Metadata of BU in local directory
*/
@@ -1997,6 +2046,57 @@ class MetadataType {
const fileList = keyArr.map((key) => File.normalizePath([path, key + typeExtension]));
return fileList;
}
+
+ /**
+ *
+ * @param {TYPE.MetadataTypeMap} metadataMap metadata mapped by their keyField
+ * @returns {string[]} list of keys
+ */
+ static getKeysForFixing(metadataMap) {
+ const keysForDeploy = [];
+ if (Object.keys(metadataMap).length) {
+ Util.logger.info(
+ `Searching for ${this.definition.type} keys among downloaded items that need fixing:`
+ );
+ for (const item of Object.values(metadataMap)) {
+ if (item[this.definition.nameField].length > this.definition.maxKeyLength) {
+ Util.logger.warn(
+ `Name of the item ${
+ item[this.definition.keyField]
+ } is too long for a key. Consider renaming your item. Key will be equal first ${
+ this.definition.maxKeyLength
+ } characters of the name`
+ );
+ item[this.definition.nameField] = item[this.definition.nameField].slice(
+ 0,
+ this.definition.maxKeyLength
+ );
+ }
+
+ if (
+ item[this.definition.nameField] != item[this.definition.keyField] &&
+ !this.definition.keyIsFixed
+ ) {
+ keysForDeploy.push(item[this.definition.keyField]);
+ Util.logger.info(
+ ` - added ${this.definition.type} to fixKey queue: ${
+ item[this.definition.keyField]
+ }`
+ );
+ } else {
+ Util.logger.info(
+ Util.getGrayMsg(
+ ` ☇ skipping ${this.definition.type} ${
+ item[this.definition.keyField]
+ }: key does not need to be updated`
+ )
+ );
+ }
+ }
+ Util.logger.info(`Found ${keysForDeploy.length} ${this.definition.type} keys to fix`);
+ }
+ return keysForDeploy;
+ }
}
MetadataType.definition = {
diff --git a/lib/metadataTypes/MobileKeyword.js b/lib/metadataTypes/MobileKeyword.js
index 02ade31c3..12b796bc0 100644
--- a/lib/metadataTypes/MobileKeyword.js
+++ b/lib/metadataTypes/MobileKeyword.js
@@ -96,7 +96,7 @@ class MobileKeyword extends MetadataType {
}
/**
- * helper for {@link parseResponseBody} that creates a custom key field for this type based on mobileCode and keyword
+ * helper for {@link MobileKeyword.parseResponseBody} that creates a custom key field for this type based on mobileCode and keyword
*
* @private
* @param {TYPE.MetadataType} metadata single item
@@ -106,7 +106,7 @@ class MobileKeyword extends MetadataType {
}
/**
- * helper for {@link preDeployTasks} and {@link createOrUpdate} to ensure we have code & keyword properly set
+ * helper for {@link MobileKeyword.preDeployTasks} and {@link MobileKeyword.createOrUpdate} to ensure we have code & keyword properly set
*
* @private
* @param {TYPE.MetadataType} metadata single item
@@ -192,7 +192,7 @@ class MobileKeyword extends MetadataType {
}
/**
- * helper for {@link retrieve} and {@link retrieveAsTemplate}
+ * helper for {@link MobileKeyword.retrieve} and {@link MobileKeyword.retrieveAsTemplate}
*
* @private
* @param {string} key customer key of single item to retrieve / name of the metadata file
@@ -281,7 +281,7 @@ class MobileKeyword extends MetadataType {
}
}
/**
- * helper for {@link parseMetadata} and {@link _buildForNested}
+ * helper for {@link MobileKeyword.postRetrieveTasks} and {@link MobileKeyword._buildForNested}
*
* @param {string} metadataScript the code of the file
* @returns {{fileExt:string,code:string}} returns found extension and file content
@@ -349,7 +349,7 @@ class MobileKeyword extends MetadataType {
}
/**
- * helper for {@link buildTemplateForNested} / {@link buildDefinitionForNested}
+ * helper for {@link MobileKeyword.buildTemplateForNested} / {@link MobileKeyword.buildDefinitionForNested}
* handles extracted code if any are found for complex types
*
* @param {string} templateDir Directory where metadata templates are stored
@@ -445,7 +445,7 @@ class MobileKeyword extends MetadataType {
return metadata;
}
/**
- * helper for {@link createREST}
+ * helper for {@link MetadataType.createREST}
*
* @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
* @param {object} apiResponse varies depending on the API call
@@ -455,7 +455,7 @@ class MobileKeyword extends MetadataType {
await super.postDeployTasks_legacyApi(metadataEntry, apiResponse);
}
/**
- * helper for {@link updateREST}
+ * helper for {@link MetadataType.updateREST}
*
* @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
* @param {object} apiResponse varies depending on the API call
@@ -466,7 +466,7 @@ class MobileKeyword extends MetadataType {
}
/**
- * helper for {@link preDeployTasks} that loads extracted code content back into JSON
+ * helper for {@link MobileKeyword.preDeployTasks} that loads extracted code content back into JSON
*
* @param {TYPE.MetadataTypeItem} metadata a single definition
* @param {string} deployDir directory of deploy files
diff --git a/lib/metadataTypes/MobileMessage.js b/lib/metadataTypes/MobileMessage.js
index a9a1f8227..8514b5cd0 100644
--- a/lib/metadataTypes/MobileMessage.js
+++ b/lib/metadataTypes/MobileMessage.js
@@ -83,7 +83,7 @@ class MobileMessage extends MetadataType {
return super.createREST(metadata, '/legacy/v1/beta/mobile/message/');
}
/**
- * helper for {@link preDeployTasks} that loads extracted code content back into JSON
+ * helper for {@link MobileMessage.preDeployTasks} that loads extracted code content back into JSON
*
* @param {TYPE.MetadataTypeItem} metadata a single definition
* @param {string} deployDir directory of deploy files
@@ -110,7 +110,7 @@ class MobileMessage extends MetadataType {
}
}
/**
- * helper for {@link parseMetadata} and {@link _buildForNested}
+ * helper for {@link MobileMessage.postRetrieveTasks} and {@link MobileMessage._buildForNested}
*
* @param {string} code the code of the file
* @returns {{fileExt:string,code:string}} returns found extension and file content
@@ -304,7 +304,7 @@ class MobileMessage extends MetadataType {
return metadata;
}
/**
- * helper for {@link createREST}
+ * helper for {@link MetadataType.createREST}
*
* @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
* @param {object} apiResponse varies depending on the API call
@@ -314,7 +314,7 @@ class MobileMessage extends MetadataType {
await super.postDeployTasks_legacyApi(metadataEntry, apiResponse);
}
/**
- * helper for {@link updateREST}
+ * helper for {@link MetadataType.updateREST}
*
* @param {TYPE.MetadataTypeItem} metadataEntry a single metadata Entry
* @param {object} apiResponse varies depending on the API call
@@ -380,7 +380,7 @@ class MobileMessage extends MetadataType {
}
/**
- * helper for {@link buildTemplateForNested} / {@link buildDefinitionForNested}
+ * helper for {@link MobileMessage.buildTemplateForNested} / {@link MobileMessage.buildDefinitionForNested}
* handles extracted code if any are found for complex types
*
* @param {string} templateDir Directory where metadata templates are stored
diff --git a/lib/metadataTypes/Query.js b/lib/metadataTypes/Query.js
index e91496131..e4b508468 100644
--- a/lib/metadataTypes/Query.js
+++ b/lib/metadataTypes/Query.js
@@ -38,7 +38,9 @@ class Query extends MetadataType {
objectId = await this._getObjectIdForSingleRetrieve(key);
if (!objectId) {
// avoid running the rest request below by returning early
- Util.logger.info(`Downloaded: ${this.definition.type} (0) - Key: ${key}`);
+ Util.logger.info(
+ `Downloaded: ${this.definition.type} (0)${Util.getKeysString(key)}`
+ );
return { metadata: {}, type: this.definition.type };
}
}
@@ -54,7 +56,7 @@ class Query extends MetadataType {
* a function to start query execution via API
*
* @param {string[]} keyArr customerkey of the metadata
- * @returns {Promise.} Returns true if all items were executed successfully, otherwise false
+ * @returns {Promise.} Returns list of keys that were executed successfully
*/
static async execute(keyArr) {
const results = [];
@@ -65,16 +67,18 @@ class Query extends MetadataType {
objectId = await this._getObjectIdForSingleRetrieve(key);
if (!objectId) {
Util.logger.info(`Skipping ${key} - did not find an item with such key`);
- break;
+ continue;
}
}
results.push(
super.executeREST(`/automation/v1/queries/${objectId}/actions/start/`, key)
);
}
- const successCounter = (await Promise.all(results)).filter((r) => r === 'OK').length;
- Util.logger.info(`Executed ${successCounter} of ${keyArr.length} items`);
- return successCounter === keyArr.length;
+ const executedKeyArr = (await Promise.all(results))
+ .filter((r) => r.response === 'OK')
+ .map((r) => r.key);
+ Util.logger.info(`Executed ${executedKeyArr.length} of ${keyArr.length} items`);
+ return executedKeyArr;
}
/**
* helper to allow us to select single metadata entries via REST
@@ -250,7 +254,7 @@ class Query extends MetadataType {
return metadata;
}
/**
- * helper for {@link buildDefinitionForNested}
+ * helper for {@link Query.buildDefinitionForNested}
* searches extracted SQL file for template variables and applies the market values
*
* @param {string} code code from extracted code
@@ -328,7 +332,7 @@ class Query extends MetadataType {
);
}
/**
- * helper for {@link buildTemplateForNested} / {@link buildDefinitionForNested}
+ * helper for {@link Query.buildTemplateForNested} / {@link Query.buildDefinitionForNested}
* handles extracted code if any are found for complex types
*
* @private
@@ -420,11 +424,12 @@ class Query extends MetadataType {
* @param {object} ex response payload from REST API
* @returns {string[] | void} formatted Error Message
*/
- static checkForErrors(ex) {
- const errors = super.checkForErrors(ex);
+ static getErrorsREST(ex) {
+ const errors = super.getErrorsREST(ex);
if (errors?.length > 0) {
return errors.map((msg) => msg.split('Error saving the Query field.').join(''));
}
+ return errors;
}
/**
* Delete a metadata item from the specified business unit
@@ -452,6 +457,17 @@ class Query extends MetadataType {
// delete local copy: retrieve/cred/bu/.../...-meta.sql
await super.postDeleteTasks(customerKey, [`${this.definition.type}-meta.sql`]);
}
+ /**
+ * Gets executed after deployment of metadata type
+ *
+ * @param {TYPE.MetadataTypeMap} upsertResults metadata mapped by their keyField as returned by update/create
+ */
+ static async postDeployTasks(upsertResults) {
+ if (Util.OPTIONS.execute) {
+ Util.logger.info(`Executing: ${this.definition.type}`);
+ await this.execute(Object.keys(upsertResults));
+ }
+ }
}
// Assign definition & cache to static attributes
diff --git a/lib/metadataTypes/Script.js b/lib/metadataTypes/Script.js
index aec027bfb..1f33b1c1f 100644
--- a/lib/metadataTypes/Script.js
+++ b/lib/metadataTypes/Script.js
@@ -82,7 +82,7 @@ class Script extends MetadataType {
}
/**
- * helper for {@link preDeployTasks} that loads extracted code content back into JSON
+ * helper for {@link Script.preDeployTasks} that loads extracted code content back into JSON
*
* @param {TYPE.ScriptItem} metadata a single asset definition
* @param {string} deployDir directory of deploy files
@@ -189,7 +189,7 @@ class Script extends MetadataType {
}
/**
- * helper for {@link buildTemplateForNested} / {@link buildDefinitionForNested}
+ * helper for {@link Script.buildTemplateForNested} / {@link Script.buildDefinitionForNested}
* handles extracted code if any are found for complex types
*
* @param {string} templateDir Directory where metadata templates are stored
@@ -279,7 +279,7 @@ class Script extends MetadataType {
return { json: metadata, codeArr: codeArr, subFolder: null };
}
/**
- * helper for {@link parseMetadata} and {@link _buildForNested}
+ * helper for {@link Script.parseMetadata} and {@link Script._buildForNested}
*
* @param {string} metadataScript the code of the file
* @param {string} metadataName the name of the metadata
diff --git a/lib/metadataTypes/SetDefinition.js b/lib/metadataTypes/SetDefinition.js
deleted file mode 100644
index 551320874..000000000
--- a/lib/metadataTypes/SetDefinition.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-
-const TYPE = require('../../types/mcdev.d');
-const MetadataType = require('./MetadataType');
-
-/**
- * SetDefinition MetadataType
- *
- * @augments MetadataType
- */
-class SetDefinition extends MetadataType {
- /**
- * Retrieves Metadata of schema set Definitions.
- *
- * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
- * @param {void} [_] unused parameter
- * @param {void} [__] unused parameter
- * @param {string} [key] customer key of single item to retrieve
- * @returns {Promise.} Promise
- */
- static retrieve(retrieveDir, _, __, key) {
- return super.retrieveREST(retrieveDir, '/hub/v1/contacts/schema/setDefinitions', null, key);
- }
- /**
- * Retrieves Metadata of schema set definitions for caching.
- *
- * @returns {Promise.} Promise
- */
- static retrieveForCache() {
- return super.retrieveREST(null, '/hub/v1/contacts/schema/setDefinitions');
- }
-}
-
-// Assign definition to static attributes
-SetDefinition.definition = require('../MetadataTypeDefinitions').setDefinition;
-
-module.exports = SetDefinition;
diff --git a/lib/metadataTypes/TransactionalSMS.js b/lib/metadataTypes/TransactionalSMS.js
index 4e9bfb3db..dd568c10c 100644
--- a/lib/metadataTypes/TransactionalSMS.js
+++ b/lib/metadataTypes/TransactionalSMS.js
@@ -66,7 +66,7 @@ class TransactionalSMS extends TransactionalMessage {
return metadata;
}
/**
- * helper for {@link preDeployTasks} that loads extracted code content back into JSON
+ * helper for {@link TransactionalSMS.preDeployTasks} that loads extracted code content back into JSON
*
* @param {TYPE.MetadataTypeItem} metadata a single definition
* @param {string} deployDir directory of deploy files
@@ -158,7 +158,7 @@ class TransactionalSMS extends TransactionalMessage {
return { json: metadata, codeArr: codeArr, subFolder: null };
}
/**
- * helper for {@link parseMetadata} and {@link _buildForNested}
+ * helper for {@link TransactionalSMS.postRetrieveTasks} and {@link TransactionalSMS._buildForNested}
*
* @param {string} metadataScript the code of the file
* @returns {{fileExt:string,code:string}} returns found extension and file content
@@ -189,7 +189,7 @@ class TransactionalSMS extends TransactionalMessage {
return { fileExt, code };
}
/**
- * helper for {@link MetadataType.buildDefinition}
+ * helper for {@link TransactionalMessage.buildDefinition}
* handles extracted code if any are found for complex types
*
* @param {string} templateDir Directory where metadata templates are stored
@@ -216,7 +216,7 @@ class TransactionalSMS extends TransactionalMessage {
);
}
/**
- * helper for {@link MetadataType.buildTemplate}
+ * helper for {@link TransactionalMessage.buildTemplate}
* handles extracted code if any are found for complex types
*
* @example scripts are saved as 1 json and 1 ssjs file. both files need to be run through templating
@@ -245,7 +245,7 @@ class TransactionalSMS extends TransactionalMessage {
}
/**
- * helper for {@link buildTemplateForNested} / {@link buildDefinitionForNested}
+ * helper for {@link TransactionalSMS.buildTemplateForNested} / {@link TransactionalSMS.buildDefinitionForNested}
* handles extracted code if any are found for complex types
*
* @param {string} templateDir Directory where metadata templates are stored
diff --git a/lib/metadataTypes/TriggeredSend.js b/lib/metadataTypes/TriggeredSend.js
index 26b3ca33d..6d31ff6ea 100644
--- a/lib/metadataTypes/TriggeredSend.js
+++ b/lib/metadataTypes/TriggeredSend.js
@@ -85,51 +85,19 @@ class TriggeredSend extends MetadataType {
return super.deleteByKeySOAP(customerKey);
}
- /**
- * manages post retrieve steps
- *
- * @param {TYPE.MetadataTypeItem} metadata a single query
- * @returns {TYPE.MetadataTypeItem} Array with one metadata object and one query string
- */
- static postRetrieveTasks(metadata) {
- return this.parseMetadata(metadata);
- }
- /**
- * generic script that retrieves the folder path from cache and updates the given metadata with it after retrieve
- *
- * @param {TYPE.MetadataTypeItem} metadata a single script activity definition
- */
- static setFolderPath(metadata) {
- try {
- metadata.r__folder_Path = cache.searchForField(
- 'folder',
- metadata[this.definition.folderIdField],
- 'ID',
- 'Path'
- );
- delete metadata[this.definition.folderIdField];
- } catch (ex) {
- Util.logger.verbose(
- ` - skipping ${this.definition.type} '${metadata[this.definition.nameField]}' (${
- metadata[this.definition.keyField]
- }): Could not find folder (${ex.message})`
- );
- throw ex;
- }
- }
/**
* parses retrieved Metadata before saving
*
- * @param {TYPE.MetadataTypeItem} metadata a single query activity definition
+ * @param {TYPE.MetadataTypeItem} metadata a single item
* @returns {TYPE.MetadataTypeItem | void} Array with one metadata object and one sql string
*/
- static parseMetadata(metadata) {
+ static postRetrieveTasks(metadata) {
// remove IsPlatformObject, always has to be 'false'
delete metadata.IsPlatformObject;
+
// folder
- try {
- this.setFolderPath(metadata);
- } catch {
+ this.setFolderPath(metadata);
+ if (!metadata.r__folder_Path) {
Util.logger.verbose(
` ☇ skipping ${this.definition.typeName} '${metadata.Name}'/'${metadata.CustomerKey}': Could not find folder.`
);
@@ -163,7 +131,7 @@ class TriggeredSend extends MetadataType {
delete metadata.Email;
} catch {
Util.logger.verbose(
- ` - ${this.definition.typeName} '${metadata.Name}'/'${metadata.CustomerKey}': Could not find email with ID ${metadata.Email.ID} in Classic nor in Content Builder. This TSD cannot be replublished but potentially restarted with its cached version of the email.`
+ ` - ${this.definition.typeName} '${metadata.Name}'/'${metadata.CustomerKey}': Could not find email with ID ${metadata.Email.ID} in Classic nor in Content Builder. This TSD cannot be republished but potentially restarted with its cached version of the email.`
);
// save this TSD because it could be fixed by the user or potentially restarted without a fix; also, it might be used by a journey
}
@@ -246,7 +214,7 @@ class TriggeredSend extends MetadataType {
* TSD-specific refresh method that finds active TSDs and refreshes them
*
* @param {string[]} [keyArr] metadata keys
- * @param {boolean} [checkKey=true] whether to check if the key is valid
+ * @param {boolean} [checkKey] whether to check if the key is valid
* @returns {Promise.} -
*/
static async refresh(keyArr, checkKey = true) {
@@ -268,7 +236,7 @@ class TriggeredSend extends MetadataType {
}
/**
- * helper for {@link refresh} that extracts the keys from the TSD item map and eli
+ * helper for {@link TriggeredSend.refresh} that extracts the keys from the TSD item map and eli
*
* @param {TYPE.MetadataTypeMapObj} metadata TSD item map
* @returns {Promise.} keyArr
@@ -282,11 +250,12 @@ class TriggeredSend extends MetadataType {
return keyArr;
}
/**
- * helper for {@link refresh} that finds active TSDs on the server and filters it by the same rules that {@link retrieve} is using to avoid refreshing TSDs with broken dependencies
+ * helper for {@link TriggeredSend.refresh} that finds active TSDs on the server and filters it by the same rules that {@link TriggeredSend.retrieve} is using to avoid refreshing TSDs with broken dependencies
*
+ * @param {boolean} [assetLoaded] if run after Asset.deploy via --refresh option this will skip caching assets
* @returns {Promise.} Promise of TSD item map
*/
- static async findRefreshableItems() {
+ static async findRefreshableItems(assetLoaded = false) {
Util.logger.info('Finding refreshable items...');
// cache dependencies to test for broken links
// skip deprecated classic emails here, assuming they cannot be updated and hence are not relevant for {@link refresh}
@@ -305,14 +274,20 @@ class TriggeredSend extends MetadataType {
list: null,
};
for (const [type, subTypeArr] of Object.entries(requiredCache)) {
- if (!cache.getCache()?.[type]) {
- Util.logger.info(` - Caching dependent Metadata: ${type}`);
- Util.logSubtypes(subTypeArr);
- cacheTypes[type].client = this.client;
- cacheTypes[type].buObject = this.buObject;
- cacheTypes[type].properties = this.properties;
+ if (type === 'asset' && assetLoaded) {
+ continue;
+ }
+ Util.logger.info(` - Caching dependent Metadata: ${type}`);
+ Util.logSubtypes(subTypeArr);
+ cacheTypes[type].client = this.client;
+ cacheTypes[type].buObject = this.buObject;
+ cacheTypes[type].properties = this.properties;
- const result = await cacheTypes[type].retrieveForCache(null, subTypeArr);
+ const result = await cacheTypes[type].retrieveForCache(null, subTypeArr);
+ if (cache.getCache()?.[type]) {
+ // re-run caching to merge with existing cache, assuming we might have missed subtypes
+ cache.mergeMetadata(type, result.metadata);
+ } else {
cache.setMetadata(type, result.metadata);
}
}
@@ -329,7 +304,7 @@ class TriggeredSend extends MetadataType {
}
/**
- * helper for {@link refresh} that pauses, publishes and starts a triggered send
+ * helper for {@link TriggeredSend.refresh} that pauses, publishes and starts a triggered send
*
* @param {string} key external key of triggered send item
* @param {boolean} checkKey whether to check if key exists on the server
diff --git a/lib/metadataTypes/User.js b/lib/metadataTypes/User.js
index 59701f082..5d86c32b4 100644
--- a/lib/metadataTypes/User.js
+++ b/lib/metadataTypes/User.js
@@ -404,8 +404,11 @@ class User extends MetadataType {
if (!metadata.Password) {
metadata.Password = this._generatePassword();
Util.logger.info(
- ` - Password for ${metadata.UserID} was not given. Generated password: ${metadata.Password}`
+ ` - Password for ${metadata.UserID} was not given. Generated password:`
);
+ // use console.log here to print the generated password to bypass the logfile
+ // eslint-disable-next-line no-console
+ console.log(metadata.Password);
}
}
@@ -510,7 +513,7 @@ class User extends MetadataType {
* @param {string} roleName role.Name
* @param {number} userId user.AccountUserID
* @param {boolean} assignmentOnly if true, only assignment configuration will be returned
- * @param {boolean} [isRoleRemovale=false] if true, role will be removed from user; otherwise added
+ * @param {boolean} [isRoleRemovale] if true, role will be removed from user; otherwise added
* @returns {object} format needed by API
*/
static _getRoleObjectForDeploy(
@@ -737,7 +740,7 @@ class User extends MetadataType {
}
/**
- * helper for {@link retrieveSOAP}
+ * helper for {@link User.retrieveSOAP}
*
* @private
* @param {TYPE.SoapRequestParams} [requestParams] required for the specific request (filter for example)
@@ -897,7 +900,7 @@ class User extends MetadataType {
}
}
/**
- * helper for {@link createOrUpdate} to generate a random initial password for new users
+ * helper for {@link User.createOrUpdate} to generate a random initial password for new users
* note: possible minimum length values in SFMC are 6, 8, 10, 15 chars. Therefore we should default here to 15 chars.
*
* @private
diff --git a/lib/metadataTypes/definitions/AttributeGroup.definition.js b/lib/metadataTypes/definitions/AttributeGroup.definition.js
index ed9a0558f..2dc24a507 100644
--- a/lib/metadataTypes/definitions/AttributeGroup.definition.js
+++ b/lib/metadataTypes/definitions/AttributeGroup.definition.js
@@ -1,238 +1,249 @@
module.exports = {
bodyIteratorField: 'attributeGroupDefinitions',
- dependencies: [], // future may have dependency on Data Extensions
+ dependencies: ['attributeSet'], // future may have dependency on Data Extensions
hasExtended: false,
idField: 'definitionID',
keyIsFixed: null,
keyField: 'definitionKey',
nameField: 'definitionName.value',
- restPagination: false,
+ restPagination: false, // Hub API does not support pagination and returns everything instead
type: 'attributeGroup',
typeDescription: 'BETA: Groupings of Set Definitions (Data Extensions) in Data Designer.',
typeRetrieveByDefault: false,
typeName: 'Data Designer Attribute Groups',
fields: {
applicationID: {
- isCreateable: null,
- isUpdateable: null,
- retrieving: true,
- template: null,
+ // used by system generated attribute groups only; contains UUID
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
},
applicationKey: {
- isCreateable: null,
- isUpdateable: null,
+ // used by system generated attribute groups only
+ isCreateable: false,
+ isUpdateable: false,
retrieving: true,
- template: null,
+ template: false,
},
attributeCount: {
- isCreateable: null,
- isUpdateable: null,
+ // auto-populated
+ isCreateable: false,
+ isUpdateable: false,
retrieving: true,
- template: null,
+ template: false,
},
attributeGroupIconKey: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
attributeGroupType: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
attributeSetIdentifiers: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
'attributeSetIdentifiers[].connectingID.identifierType': {
isCreateable: null,
isUpdateable: null,
- retrieving: false,
- template: null,
+ retrieving: true,
+ template: false,
},
'attributeSetIdentifiers[].definitionID': {
isCreateable: null,
isUpdateable: null,
retrieving: true,
- template: null,
+ template: false,
},
'attributeSetIdentifiers[].definitionKey': {
isCreateable: null,
isUpdateable: null,
retrieving: true,
- template: null,
+ template: true,
},
- 'attributeSetIdentifiers[].definitionName.Contact': {
+ 'attributeSetIdentifiers[].definitionName.value': {
isCreateable: null,
isUpdateable: null,
retrieving: true,
- template: null,
+ template: false,
},
'attributeSetIdentifiers[].namespace': {
isCreateable: null,
isUpdateable: null,
retrieving: false,
- template: null,
+ template: false,
},
canAddProperties: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
canAddRelationships: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
canChangeProperties: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
canModify: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
canRemove: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
connectingID: {
- isCreateable: null,
- isUpdateable: null,
- retrieving: false,
- template: null,
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
},
'connectingID.identifierType': {
- isCreateable: null,
- isUpdateable: null,
- retrieving: false,
- template: null,
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
},
containsSchemaAttributes: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
definitionID: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: false,
},
definitionKey: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
'definitionName.value': {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
description: {
- isCreateable: null,
- isUpdateable: null,
+ // optional field. not returned by API if empty
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
displayOrder: {
- isCreateable: null,
- isUpdateable: null,
+ // auto-set to i+1
+ isCreateable: false,
+ isUpdateable: false,
retrieving: true,
- template: null,
+ template: false,
},
fullyQualifiedName: {
- isCreateable: null,
- isUpdateable: null,
- retrieving: true,
- template: null,
+ // equal to defitionName.value; auto-populated by preDeployTasks
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: false,
+ template: false,
},
isHidden: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
isOwner: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
isPrimary: {
- isCreateable: null,
- isUpdateable: null,
- retrieving: true,
- template: null,
+ // always false, purpose unknown
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
},
isSystemDefined: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: false,
+ isUpdateable: false,
retrieving: true,
- template: null,
+ template: false,
},
localizedDescription: {
- isCreateable: null,
- isUpdateable: null,
- retrieving: true,
- template: null,
+ // always an empty object
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
},
'localizedDescription.resourceSetKey': {
isCreateable: null,
isUpdateable: null,
retrieving: true,
- template: null,
+ template: true,
},
'localizedDescription.resourceValueKey': {
isCreateable: null,
isUpdateable: null,
retrieving: true,
- template: null,
+ template: true,
},
'localizedDescription.value': {
isCreateable: null,
isUpdateable: null,
retrieving: true,
- template: null,
+ template: true,
},
mID: {
- isCreateable: null,
- isUpdateable: null,
+ // auto-populated in preDeployTask
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
namespace: {
- isCreateable: null,
- isUpdateable: null,
+ // always an empty string
+ isCreateable: false,
+ isUpdateable: false,
retrieving: false,
- template: null,
+ template: false,
},
objectState: {
- isCreateable: null,
- isUpdateable: null,
- retrieving: true,
- template: null,
+ // seems to always contain "Created"
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
},
requiredRelationships: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
},
};
diff --git a/lib/metadataTypes/definitions/SetDefinition.definition.js b/lib/metadataTypes/definitions/AttributeSet.definition.js
similarity index 94%
rename from lib/metadataTypes/definitions/SetDefinition.definition.js
rename to lib/metadataTypes/definitions/AttributeSet.definition.js
index 5d994769d..47e77cde4 100644
--- a/lib/metadataTypes/definitions/SetDefinition.definition.js
+++ b/lib/metadataTypes/definitions/AttributeSet.definition.js
@@ -1,17 +1,18 @@
module.exports = {
bodyIteratorField: 'setDefinition',
- dependencies: [], // future may have dependency on Data Extensions
+ dependencies: ['folder-hidden', 'folder-dataextension', 'dataExtension'], // future may have dependency on Data Extensions
hasExtended: false,
idField: 'definitionID',
keyIsFixed: null,
keyField: 'definitionKey',
nameField: 'name',
+ folderIdField: 'categoryID',
createdDateField: 'createDate',
createdNameField: 'createdBy',
lastmodDateField: null,
lastmodNameField: null,
- restPagination: false,
- type: 'setDefinition',
+ restPagination: false, // Hub API does not support pagination and returns everything instead
+ type: 'attributeSet',
typeDescription: 'BETA: Data Extensions linked to Attribute Groups in Data Designer.',
typeRetrieveByDefault: false,
typeName: 'Data Designer Set Definitions',
@@ -65,10 +66,10 @@ module.exports = {
template: null,
},
'connectingID.identifierType': {
- isCreateable: null,
- isUpdateable: null,
- retrieving: true,
- template: null,
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: false,
+ template: false,
},
createDate: {
isCreateable: null,
@@ -130,17 +131,25 @@ module.exports = {
retrieving: true,
template: null,
},
+ definitionName: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: false,
+ template: false,
+ },
'definitionName.value': {
- isCreateable: null,
- isUpdateable: null,
- retrieving: true,
- template: null,
+ // equal to 'name'; auto-populated by preDeployTasks
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: false,
+ template: false,
},
fullyQualifiedName: {
- isCreateable: null,
- isUpdateable: null,
- retrieving: true,
- template: null,
+ // equal to 'name'; auto-populated by preDeployTasks
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: false,
+ template: false,
},
isCustomObjectBacked: {
isCreateable: null,
@@ -233,28 +242,28 @@ module.exports = {
template: null,
},
localizedDescription: {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
'localizedDescription.resourceSetKey': {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
'localizedDescription.resourceValueKey': {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
'localizedDescription.value': {
- isCreateable: null,
- isUpdateable: null,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: null,
+ template: true,
},
name: {
isCreateable: null,
@@ -436,6 +445,18 @@ module.exports = {
retrieving: true,
template: null,
},
+ 'relationships[].relationshipAttributes[].c__leftFullyQualifiedName': {
+ isCreateable: null,
+ isUpdateable: null,
+ retrieving: true,
+ template: null,
+ },
+ 'relationships[].relationshipAttributes[].c__rightFullyQualifiedName': {
+ isCreateable: null,
+ isUpdateable: null,
+ retrieving: true,
+ template: null,
+ },
'relationships[].relationshipID': {
isCreateable: null,
isUpdateable: null,
@@ -832,5 +853,11 @@ module.exports = {
retrieving: true,
template: null,
},
+ r__folder_Path: {
+ isCreateable: null,
+ isUpdateable: null,
+ retrieving: true,
+ template: null,
+ },
},
};
diff --git a/lib/metadataTypes/definitions/Automation.definition.js b/lib/metadataTypes/definitions/Automation.definition.js
index c7ab19a19..e34b258ca 100644
--- a/lib/metadataTypes/definitions/Automation.definition.js
+++ b/lib/metadataTypes/definitions/Automation.definition.js
@@ -42,12 +42,19 @@ module.exports = {
keyField: 'key',
nameField: 'name',
folderIdField: 'categoryId',
- createdDateField: 'createdDate',
- createdNameField: 'createdByName',
- lastmodDateField: 'lastSavedDate',
- lastmodNameField: 'lastSavedByName',
+ createdDateField: 'createdDate', // only returned by upsert
+ createdNameField: 'createdByName', // only returned by upsert
+ lastmodDateField: 'lastSavedDate', // only returned by upsert
+ lastmodNameField: 'lastSavedByName', // only returned by upsert
restPagination: true,
maxKeyLength: 200, // confirmed max length
+ scheduleTypeMapping: {
+ MINUTELY: 1,
+ HOURLY: 2,
+ DAILY: 3,
+ WEEKLY: 4,
+ MONTHLY: 5,
+ },
statusMapping: {
AwaitingTrigger: 7,
Building: 1,
@@ -336,31 +343,31 @@ module.exports = {
lastSavedDate: {
isCreateable: false,
isUpdateable: false,
- retrieving: true,
+ retrieving: false, // only returned by upsert
template: false,
},
lastSavedByName: {
isCreateable: false,
isUpdateable: false,
- retrieving: true,
+ retrieving: false, // only returned by upsert
template: false,
},
createdDate: {
isCreateable: false,
isUpdateable: false,
- retrieving: true,
+ retrieving: false, // only returned by upsert
template: false,
},
createdByName: {
isCreateable: false,
isUpdateable: false,
- retrieving: true,
+ retrieving: false, // only returned by upsertt
template: false,
},
updateInProgress: {
isCreateable: false,
isUpdateable: false,
- retrieving: true,
+ retrieving: false,
template: false,
},
name: {
@@ -474,8 +481,8 @@ module.exports = {
'schedule.timezoneId': {
isCreateable: true,
isUpdateable: true,
- retrieving: true,
- template: true,
+ retrieving: false,
+ template: false,
},
'schedule.timezoneName': {
isCreateable: true,
@@ -484,10 +491,10 @@ module.exports = {
template: true,
},
'schedule.typeId': {
- isCreateable: true,
- isUpdateable: true,
- retrieving: true,
- template: true,
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
},
status: {
isCreateable: true,
diff --git a/lib/metadataTypes/definitions/ImportFile.definition.js b/lib/metadataTypes/definitions/ImportFile.definition.js
index b1938c785..a88063322 100644
--- a/lib/metadataTypes/definitions/ImportFile.definition.js
+++ b/lib/metadataTypes/definitions/ImportFile.definition.js
@@ -222,11 +222,41 @@ module.exports = {
retrieving: true,
template: true,
},
- c__dataAction: { skipValidation: true },
- r__dataExtension_CustomerKey: { skipValidation: true },
- c__destinationType: { skipValidation: true },
- r__list_PathName: { skipValidation: true },
- r__fileLocation_name: { skipValidation: true },
- c__subscriberImportType: { skipValidation: true },
+ c__dataAction: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
+ r__dataExtension_CustomerKey: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
+ c__destinationType: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
+ r__list_PathName: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
+ r__fileLocation_name: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
+ c__subscriberImportType: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
},
};
diff --git a/lib/metadataTypes/definitions/TriggeredSend.definition.js b/lib/metadataTypes/definitions/TriggeredSend.definition.js
index e5afad57e..47763daf5 100644
--- a/lib/metadataTypes/definitions/TriggeredSend.definition.js
+++ b/lib/metadataTypes/definitions/TriggeredSend.definition.js
@@ -535,6 +535,7 @@ module.exports = {
r__folder_Path: { skipValidation: true },
r__assetMessage_Name_readOnly: { skipValidation: true },
r__assetMessage_Key: { skipValidation: true },
+ r__email_Name: { skipValidation: true },
r__list_PathName: { skipValidation: true },
},
};
diff --git a/lib/util/cache.js b/lib/util/cache.js
index bcea3a35d..b95931e3e 100644
--- a/lib/util/cache.js
+++ b/lib/util/cache.js
@@ -72,10 +72,15 @@ module.exports = {
* @returns {void}
*/
mergeMetadata: (type, metadataMap, overrideMID) => {
- dataStore[overrideMID || currentMID][type] = Object.assign(
- metadataMap,
- dataStore[currentMID][type]
- );
+ // ensure cache exists for type
+ dataStore[currentMID][type] ||= {};
+ // if overrideMID is provided, create a copy of current MID cache
+ if (overrideMID) {
+ // ! needs to be verified if this is actually needed. When discovering an issue with this method actually overriting metadataMap, this copy-logic was present and i did not want to break things
+ dataStore[overrideMID][type] = Object.assign({}, dataStore[currentMID][type]);
+ }
+ // merge metadataMap into existing cache
+ Object.assign(dataStore[overrideMID || currentMID][type] || {}, metadataMap);
},
/**
* standardized method for getting data from cache.
diff --git a/lib/util/cli.js b/lib/util/cli.js
index a18927798..d16c4fc62 100644
--- a/lib/util/cli.js
+++ b/lib/util/cli.js
@@ -53,6 +53,46 @@ const Cli = {
return null;
}
},
+
+ /**
+ *
+ * @param {TYPE.SupportedMetadataTypes} type limit execution to given metadata type
+ * @param {TYPE.SupportedMetadataTypes[]} dependentTypes types that depent on type
+ * @returns {Promise.} true if user wants to continue with retrieve
+ */
+ async postFixKeysReretrieve(type, dependentTypes) {
+ if (Util.isTrue(Util.skipInteraction?.fixKeysReretrieve)) {
+ return true;
+ } else if (Util.isFalse(Util.skipInteraction?.fixKeysReretrieve)) {
+ return false;
+ } else {
+ const now = await inquirer.prompt([
+ {
+ type: 'confirm',
+ name: 'fixKeysReretrieve',
+ message: `Do you want to re-retrieve dependent types (${dependentTypes.join(
+ ', '
+ )}) now?`,
+ default: true,
+ },
+ ]);
+ if (Util.OPTIONS._multiBuExecution) {
+ const remember = await inquirer.prompt([
+ {
+ type: 'confirm',
+ name: 'rememberFixKeysReretrieve',
+ message: `Remember answer for other BUs?`,
+ default: true,
+ },
+ ]);
+ if (remember.rememberFixKeysReretrieve) {
+ Util.skipInteraction ||= {};
+ Util.skipInteraction.fixKeysReretrieve = now.fixKeysReretrieve;
+ }
+ }
+ return now.fixKeysReretrieve;
+ }
+ },
/**
* helper that logs to cli which credentials are already existing in our config file
*
diff --git a/lib/util/file.js b/lib/util/file.js
index 89206f83e..d164a943c 100644
--- a/lib/util/file.js
+++ b/lib/util/file.js
@@ -381,7 +381,7 @@ const File = {
* @param {string | string[]} directory directory where the file is stored
* @param {string} filename name of the file without '.json' ending
* @param {string} filetype filetype suffix
- * @param {string} [encoding='utf8'] read file with encoding (defaults to utf-8)
+ * @param {string} [encoding] read file with encoding (defaults to utf-8)
* @returns {Promise. | void} file contents; void on error
*/
readFilteredFilename: function (directory, filename, filetype, encoding) {
@@ -514,7 +514,7 @@ const File = {
/**
* Initalises Prettier formatting lib async.
*
- * @param {string} [filetype='html'] filetype ie. JSON or SSJS
+ * @param {string} [filetype] filetype ie. JSON or SSJS
* @returns {Promise.} success of config load
*/
async initPrettier(filetype = 'html') {
diff --git a/lib/util/init.js b/lib/util/init.js
index 22aa7b966..230881d3f 100644
--- a/lib/util/init.js
+++ b/lib/util/init.js
@@ -8,6 +8,8 @@ const InitNpm = require('./init.npm');
const InitConfig = require('./init.config');
const inquirer = require('inquirer');
const Util = require('./util');
+const fs = require('node:fs');
+const path = require('node:path');
/**
* CLI helper class
@@ -22,6 +24,10 @@ const Init = {
* @returns {Promise.} -
*/
async initProject(properties, credentialName) {
+ if (!(await Init._checkPathForCloud())) {
+ return;
+ }
+
const skipInteraction = Util.skipInteraction;
if (!properties) {
// try to get cached properties because we return null in case of a crucial error
@@ -192,6 +198,10 @@ const Init = {
* @returns {Promise.} -
*/
async joinProject() {
+ if (!(await Init._checkPathForCloud())) {
+ return;
+ }
+
const responses = await inquirer.prompt([
{
type: 'confirm',
@@ -217,6 +227,9 @@ const Init = {
]);
const repoName = gitRepoQs.gitRepoUrl.split('/').pop().replace('.git', '');
// clone repo into current folder
+ Util.logger.info(
+ 'Cloning initiated. You might be asked for your Git credentials in a pop-up window in a few seconds.'
+ );
Util.execSync(
'git',
[
@@ -227,6 +240,16 @@ const Init = {
gitRepoQs.gitRepoUrl,
].filter(Boolean)
);
+
+ if (!fs.existsSync(repoName)) {
+ Util.logger.error(
+ 'Could not clone repository. Please check your Git-Repository URL as well as your credentials and try again.'
+ );
+ Util.logger.info(
+ 'Check if you need an "API-Token" instead of your normal user password to authenticate'
+ );
+ return;
+ }
// make sure we switch to the new subfolder or else the rest will fail
process.chdir(repoName);
@@ -357,6 +380,10 @@ const Init = {
* @returns {Promise.} success flag
*/
async upgradeProject(properties, initial, repoName) {
+ if (!(await Init._checkPathForCloud())) {
+ return;
+ }
+
let status;
const versionBeforeUpgrade = properties?.version || '0.0.0';
if (!initial) {
@@ -390,9 +417,66 @@ const Init = {
return true;
},
+ /**
+ * check if git repo is being saved on a cloud service and warn the user
+ *
+ * @private
+ * @returns {void} throws errors if problems were found
+ */
+ async _checkPathForCloud() {
+ const absolutePath = path.resolve('');
+ // popular cloud services and their respective default name for the absolute path
+ // * CloudDocs is the default folder name for iCloud
+ const cloudServices = ['Dropbox', 'OneDrive', 'Google Drive', 'iCloud', 'CloudDocs'];
+ let cloudServiceFound = false;
+ for (const variable in cloudServices) {
+ if (absolutePath.includes(cloudServices[variable])) {
+ Util.logger.warn(
+ `It seems your project folder will be synchronized via '${
+ cloudServices[variable] === 'CloudDocs' ? 'iCloud' : cloudServices[variable]
+ }'. This can reduce the overall performance of your computer due to conflicts with Git.`
+ );
+ Util.logger.warn(
+ `We strongly recommend moving your project folder outside of the '${
+ cloudServices[variable] === 'CloudDocs' ? 'iCloud' : cloudServices[variable]
+ }' folder.`
+ );
+ cloudServiceFound = true;
+ }
+ }
+ if (!cloudServiceFound && absolutePath.includes(process.env.USERPROFILE)) {
+ // warn user to not place project folder into user profile folder
+ Util.logger.warn(
+ `It seems your project folder is located in your user profile's default folder which is often synchronized to webservices like ${cloudServices.join(
+ ', '
+ )}. This can reduce the overall performance of your computer due to conflicts between with Git.`
+ );
+ Util.logger.warn(
+ `We strongly recommend moving your project folder outside of this folder.`
+ );
+ cloudServiceFound = true;
+ }
+ if (cloudServiceFound) {
+ const responses = await inquirer.prompt([
+ {
+ type: 'confirm',
+ name: 'ignoreCloudWarning',
+ message: 'Do you want to continue anyways?',
+ default: false,
+ },
+ ]);
+ if (!responses.ignoreCloudWarning) {
+ Util.logger.error('Exiting due to cloud service warning');
+ return false;
+ }
+ }
+ return true;
+ },
+
/**
* finds credentials that are set up in config but not in auth file
*
+ * @private
* @param {TYPE.Mcdevrc} properties javascript object in .mcdevrc.json
* @returns {string[]} list of credential names
*/
diff --git a/lib/util/util.js b/lib/util/util.js
index a5bfe7cf3..b8b2e5b96 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -3,10 +3,10 @@
const TYPE = require('../../types/mcdev.d');
const MetadataDefinitions = require('./../MetadataTypeDefinitions');
const packageJsonMcdev = require('../../package.json');
+const child_process = require('node:child_process');
const process = require('node:process');
const toposort = require('toposort');
const winston = require('winston');
-const child_process = require('node:child_process');
/**
* Util that contains logger and simple util methods
@@ -80,6 +80,7 @@ const Util = {
return false;
}
},
+
/**
* ensure provided MarketList exists and it's content including markets and BUs checks out
*
@@ -130,29 +131,32 @@ const Util = {
* @returns {void}
*/
signalFatalError() {
- Util.logger.debug('Util.signalFataError() sets process.exitCode = 1');
- process.exitCode = 1;
+ Util.logger.debug('Util.signalFataError() sets process.exitCode = 1 unless already set');
+ process.exitCode ||= 1;
},
/**
- * SFMC accepts multiple true values for Boolean attributes for which we are checking here
+ * SFMC accepts multiple true values for Boolean attributes for which we are checking here.
+ * The same problem occurs when evaluating boolean CLI flags
*
* @param {*} attrValue value
* @returns {boolean} attribute value == true ? true : false
*/
isTrue(attrValue) {
- return ['true', 'TRUE', 'True', '1', 1, 'Y', true].includes(attrValue);
+ return ['true', 'TRUE', 'True', '1', 1, 'Y', 'y', true].includes(attrValue);
},
/**
- * SFMC accepts multiple false values for Boolean attributes for which we are checking here
+ * SFMC accepts multiple false values for Boolean attributes for which we are checking here.
+ * The same problem occurs when evaluating boolean CLI flags
*
* @param {*} attrValue value
* @returns {boolean} attribute value == false ? true : false
*/
isFalse(attrValue) {
- return ['false', 'FALSE', 'False', '0', 0, 'N', false].includes(attrValue);
+ return ['false', 'FALSE', 'False', '0', 0, 'N', 'n', false].includes(attrValue);
},
+
/**
- * helper for {@link Mcdev.retrieve}, {@link Mcdev.retrieveAsTemplate} and {@link Mcdev.deploy}
+ * helper for Mcdev.retrieve, Mcdev.retrieveAsTemplate and Mcdev.deploy
*
* @param {TYPE.SupportedMetadataTypes} selectedType type or type-subtype
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
@@ -229,7 +233,7 @@ const Util = {
/**
* wrapper around our standard winston logging to console and logfile
*
- * @param {boolean} [noLogFile=false] optional flag to indicate if we should log to file; CLI logs are always on
+ * @param {boolean} [noLogFile] optional flag to indicate if we should log to file; CLI logs are always on
* @returns {object} initiated logger for console and file
*/
_createNewLoggerTransport: function (noLogFile = false) {
@@ -242,13 +246,21 @@ const Util = {
// debug: 5,
// silly: 6
// }
+ if (
+ process.env.VSCODE_AMD_ENTRYPOINT === 'vs/workbench/api/node/extensionHostProcess' ||
+ process.env.VSCODE_CRASH_REPORTER_PROCESS_TYPE === 'extensionHost'
+ ) {
+ Util.OPTIONS.noLogColors = true;
+ }
const logFileName = new Date().toISOString().split(':').join('.');
const transports = {
console: new winston.transports.Console({
// Write logs to Console
level: Util.OPTIONS.loggerLevel || 'info',
format: winston.format.combine(
- winston.format.colorize(),
+ Util.OPTIONS.noLogColors
+ ? winston.format.uncolorize()
+ : winston.format.colorize(),
winston.format.timestamp({ format: 'HH:mm:ss' }),
winston.format.simple(),
winston.format.printf(
@@ -263,6 +275,7 @@ const Util = {
filename: 'logs/' + logFileName + '.log',
level: 'debug', // log everything
format: winston.format.combine(
+ winston.format.uncolorize(),
winston.format.timestamp({ format: 'HH:mm:ss.SSS' }),
winston.format.simple(),
winston.format.printf(
@@ -274,7 +287,9 @@ const Util = {
// Write logs to additional error-logfile for better visibility of errors
filename: 'logs/' + logFileName + '-errors.log',
level: 'error', // only log errors
+ lazy: true, // if true, log files will be created on demand, not at the initialization time.
format: winston.format.combine(
+ winston.format.uncolorize(),
winston.format.timestamp({ format: 'HH:mm:ss.SSS' }),
winston.format.simple(),
winston.format.printf(
@@ -296,8 +311,8 @@ const Util = {
/**
* initiate winston logger
*
- * @param {boolean} [restart=false] if true, logger will be restarted; otherwise, an existing logger will be used
- * @param {boolean} [noLogFile=false] if false, logger will log to file; otherwise, only to console
+ * @param {boolean} [restart] if true, logger will be restarted; otherwise, an existing logger will be used
+ * @param {boolean} [noLogFile] if false, logger will log to file; otherwise, only to console
* @returns {void}
*/
startLogger: function (restart = false, noLogFile = false) {
@@ -438,6 +453,7 @@ const Util = {
}
return str;
},
+
/**
* get key of an object based on the first matching value
*
@@ -454,6 +470,31 @@ const Util = {
throw new Error(`${val} not found in object`);
},
+ /**
+ *helper for Mcdev.fixKeys. Retrieve dependent metadata
+ *
+ * @param {string} fixedType type of the metadata passed as a parameter to fixKeys function
+ * @returns {string[]} array of types that depend on the given type
+ */
+ getDependentMetadata(fixedType) {
+ const dependencies = new Set();
+
+ for (const dependentType of Object.keys(MetadataDefinitions)) {
+ if (MetadataDefinitions[dependentType].dependencies.includes(fixedType)) {
+ // fixedType was found as a dependency of dependentType
+ dependencies.add(dependentType);
+ } else if (
+ MetadataDefinitions[dependentType].dependencies.some((dependency) =>
+ dependency.startsWith(fixedType + '-')
+ )
+ ) {
+ // if MetadataTypeDefinitions[dependentType].dependencies start with type then also add dependentType to the set; use some to check if any of the dependencies start with type
+ dependencies.add(dependentType);
+ }
+ }
+ return [...dependencies];
+ },
+
/**
* Returns Order in which metadata needs to be retrieved/deployed
*
@@ -736,7 +777,7 @@ const Util = {
});
},
/**
- * helper for {@link Asset._extractCode} and {@link Script.prepExtractedCode} to determine if a code block is a valid SSJS block
+ * helper for Asset.extractCode and Script.prepExtractedCode to determine if a code block is a valid SSJS block
*
* @example the following is invalid:
* ",
+ "categoryId": 304,
+ "createdDate": "2022-10-20T00:41:26.163",
+ "modifiedDate": "2022-10-20T00:41:26.163"
+}
diff --git a/test/resources/9999999/automation/v1/scripts/get-response.json b/test/resources/9999999/automation/v1/scripts/get-response.json
index d5830148f..d928b6361 100644
--- a/test/resources/9999999/automation/v1/scripts/get-response.json
+++ b/test/resources/9999999/automation/v1/scripts/get-response.json
@@ -8,8 +8,18 @@
"name": "testExisting_script",
"key": "testExisting_script",
"description": "",
- "script": "\n//dummy\n",
+ "categoryId": 304,
+ "createdDate": "2022-10-20T00:41:26.163",
+ "modifiedDate": "2022-10-20T00:41:26.163"
+ },
+ {
+ "ssjsActivityId": "39f6a488-20eb-4ba0-b0b9-noScriptTag",
+ "name": "testExisting_script_noScriptTag",
+ "key": "testExisting_script_noScriptTag",
+ "description": "",
+ "script": "// no script tag\n",
+ "categoryId": 304,
"createdDate": "2022-10-20T00:41:26.163",
"modifiedDate": "2022-10-20T00:41:26.163"
}
diff --git a/test/resources/9999999/automation/v1/scripts/post-response.json b/test/resources/9999999/automation/v1/scripts/post-response.json
new file mode 100644
index 000000000..aeeb66322
--- /dev/null
+++ b/test/resources/9999999/automation/v1/scripts/post-response.json
@@ -0,0 +1,10 @@
+{
+ "ssjsActivityId": "39f6a488-20eb-4ba0-b0b9-new",
+ "name": "testNew_script",
+ "key": "testNew_script",
+ "description": "created on deploy",
+ "script": "",
+ "categoryId": 304,
+ "createdDate": "2022-10-20T00:41:26.163",
+ "modifiedDate": "2022-10-20T00:41:26.163"
+}
diff --git a/test/resources/9999999/dataExtension/retrieve-Name=testExisting_dataExtension-response.xml b/test/resources/9999999/dataExtension/retrieve-Name=testExisting_dataExtension-response.xml
new file mode 100644
index 000000000..e7cf0d2ef
--- /dev/null
+++ b/test/resources/9999999/dataExtension/retrieve-Name=testExisting_dataExtension-response.xml
@@ -0,0 +1,52 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:c198cc12-c34c-4d1d-90b0-5b785a342efc
+ urn:uuid:a0506b59-1847-4405-8231-6a15e26bbcc9
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2022-04-21T19:21:50Z
+ 2022-04-21T19:26:50Z
+
+
+
+
+
+ OK
+ d175de6e-c8e4-4f5d-9c1d-ad64426ff4b7
+
+
+ 2022-04-21T06:56:27.927
+ 2022-04-21T06:56:27.927
+ 21711373-72c1-ec11-b83b-48df37d1deb7
+ testExisting_dataExtension
+ testExisting_dataExtension
+ bla bla
+ true
+ true
+
+
+
+ ContactKey
+
+
+ _SubscriberKey
+
+ 6
+ 5
+ true
+ false
+ false
+
+ 2
+
+
+
+
\ No newline at end of file
diff --git a/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testExisting_dataExtension-response.xml b/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testExisting_dataExtension-response.xml
new file mode 100644
index 000000000..3ffc1b3eb
--- /dev/null
+++ b/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testExisting_dataExtension-response.xml
@@ -0,0 +1,98 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:6d2f81c8-80ab-44d5-8664-206753e7ac8d
+ urn:uuid:a7354389-079e-4844-93b5-af6b7bf1d535
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2022-04-21T19:21:52Z
+ 2022-04-21T19:26:52Z
+
+
+
+
+
+ OK
+ cfe51e71-6a2b-4cb4-aecd-3777076d63bc
+
+
+ 8018397d-880d-4f88-940e-3b4eca098a0c
+ [testExisting_dataExtension].[ContactKey]
+ ContactKey
+ 0
+
+ 50
+ true
+ 3
+ true
+ Text
+
+
+
+ testExisting_dataExtension
+
+
+
+
+ bea0e308-5d45-4181-a673-da9972a7c674
+ [testExisting_dataExtension].[LastName]
+ LastName
+ 0
+
+ 50
+ false
+ 1
+ false
+ Text
+
+
+
+ testExisting_dataExtension
+
+
+
+
+ 2557b461-a699-4744-950d-e80a19afc2dc
+ [testExisting_dataExtension].[EmailAddress]
+ EmailAddress
+ 0
+
+ 254
+ true
+ 2
+ false
+ EmailAddress
+
+
+
+ testExisting_dataExtension
+
+
+
+
+ 42760528-a8c5-44dd-8c1d-ff34e5daee54
+ [testExisting_dataExtension].[FirstName]
+ FirstName
+ 0
+
+ 50
+ false
+ 0
+ false
+ Text
+
+
+
+ testExisting_dataExtension
+
+
+
+
+
\ No newline at end of file
diff --git a/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_dataExtensionORDataExtension.CustomerKey=testExisting_dataExtension-response.xml b/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_dataExtensionORDataExtension.CustomerKey=testExisting_dataExtension-response.xml
new file mode 100644
index 000000000..8018e9949
--- /dev/null
+++ b/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_dataExtensionORDataExtension.CustomerKey=testExisting_dataExtension-response.xml
@@ -0,0 +1,99 @@
+
+
+
+
+ RetrieveResponse
+ urn:uuid:6d2f81c8-80ab-44d5-8664-206753e7ac8d
+ urn:uuid:a7354389-079e-4844-93b5-af6b7bf1d535
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2022-04-21T19:21:52Z
+ 2022-04-21T19:26:52Z
+
+
+
+
+
+ OK
+ cfe51e71-6a2b-4cb4-aecd-3777076d63bc
+
+
+ 8018397d-880d-4f88-940e-3b4eca098a0c
+ [testExisting_dataExtension].[ContactKey]
+ ContactKey
+ 0
+
+ 50
+ true
+ 3
+ true
+ Text
+
+
+
+ testExisting_dataExtension
+
+
+
+
+ bea0e308-5d45-4181-a673-da9972a7c674
+ [testExisting_dataExtension].[LastName]
+ LastName
+ 0
+
+ 50
+ false
+ 1
+ false
+ Text
+
+
+
+ testExisting_dataExtension
+
+
+
+
+ 2557b461-a699-4744-950d-e80a19afc2dc
+ [testExisting_dataExtension].[EmailAddress]
+ EmailAddress
+ 0
+
+ 254
+ true
+ 2
+ false
+ EmailAddress
+
+
+
+ testExisting_dataExtension
+
+
+
+
+ 42760528-a8c5-44dd-8c1d-ff34e5daee54
+ [testExisting_dataExtension].[FirstName]
+ FirstName
+ 0
+
+ 50
+ false
+ 0
+ false
+ Text
+
+
+
+ testExisting_dataExtension
+
+
+
+
+
\ No newline at end of file
diff --git a/test/resources/9999999/dataExtract/build-expected.json b/test/resources/9999999/dataExtract/build-expected.json
new file mode 100644
index 000000000..a3586e8eb
--- /dev/null
+++ b/test/resources/9999999/dataExtract/build-expected.json
@@ -0,0 +1,35 @@
+{
+ "dataFields": [
+ {
+ "name": "ColumnDelimiter",
+ "type": "string",
+ "value": ","
+ },
+ {
+ "name": "DECustomerKey",
+ "type": "string",
+ "value": "testTemplated_dataExtension"
+ },
+ {
+ "name": "HasColumnHeaders",
+ "type": "bool",
+ "value": "False"
+ },
+ {
+ "name": "TextQualified",
+ "type": "bool",
+ "value": "False"
+ },
+ {
+ "name": "UsesLineFeed",
+ "type": "bool",
+ "value": "False"
+ }
+ ],
+ "description": "blabla",
+ "fileSpec": "testExisting-%%Year%%-%%Month%%-%%Day%%",
+ "intervalType": 0,
+ "key": "testTemplated_dataExtract",
+ "name": "testTemplated_dataExtract",
+ "r__dataExtractType_name": "Data Extension Extract"
+}
diff --git a/test/resources/9999999/dataExtract/get-expected.json b/test/resources/9999999/dataExtract/get-expected.json
new file mode 100644
index 000000000..ca914d53f
--- /dev/null
+++ b/test/resources/9999999/dataExtract/get-expected.json
@@ -0,0 +1,39 @@
+{
+ "createdBy": 700301950,
+ "createdDate": "2022-11-09T05:31:21.667",
+ "dataFields": [
+ {
+ "name": "ColumnDelimiter",
+ "type": "string",
+ "value": ","
+ },
+ {
+ "name": "DECustomerKey",
+ "type": "string",
+ "value": "testExisting_dataExtension"
+ },
+ {
+ "name": "HasColumnHeaders",
+ "type": "bool",
+ "value": "False"
+ },
+ {
+ "name": "TextQualified",
+ "type": "bool",
+ "value": "False"
+ },
+ {
+ "name": "UsesLineFeed",
+ "type": "bool",
+ "value": "False"
+ }
+ ],
+ "description": "blabla",
+ "fileSpec": "testExisting-%%Year%%-%%Month%%-%%Day%%",
+ "intervalType": 0,
+ "key": "testExisting_dataExtract",
+ "modifiedBy": 700301950,
+ "modifiedDate": "2022-11-17T07:13:36.9",
+ "name": "testExisting_dataExtract",
+ "r__dataExtractType_name": "Data Extension Extract"
+}
diff --git a/test/resources/9999999/dataExtract/patch-expected.json b/test/resources/9999999/dataExtract/patch-expected.json
new file mode 100644
index 000000000..3086b8c5e
--- /dev/null
+++ b/test/resources/9999999/dataExtract/patch-expected.json
@@ -0,0 +1,37 @@
+{
+ "createdBy": 700304523,
+ "dataFields": [
+ {
+ "name": "ColumnDelimiter",
+ "type": "string",
+ "value": ","
+ },
+ {
+ "name": "DECustomerKey",
+ "type": "string",
+ "value": "testExisting_dataExtension"
+ },
+ {
+ "name": "HasColumnHeaders",
+ "type": "bool",
+ "value": "False"
+ },
+ {
+ "name": "TextQualified",
+ "type": "bool",
+ "value": "False"
+ },
+ {
+ "name": "UsesLineFeed",
+ "type": "bool",
+ "value": "False"
+ }
+ ],
+ "description": "created via deploy",
+ "fileSpec": "testExisting-%%Year%%-%%Month%%-%%Day%%",
+ "intervalType": 0,
+ "key": "testExisting_dataExtract",
+ "modifiedBy": 700304523,
+ "name": "testExisting_dataExtract",
+ "r__dataExtractType_name": "Data Extension Extract"
+}
diff --git a/test/resources/9999999/dataExtract/post-expected.json b/test/resources/9999999/dataExtract/post-expected.json
new file mode 100644
index 000000000..5d6cbb8ca
--- /dev/null
+++ b/test/resources/9999999/dataExtract/post-expected.json
@@ -0,0 +1,37 @@
+{
+ "createdBy": 700304523,
+ "dataFields": [
+ {
+ "name": "ColumnDelimiter",
+ "type": "string",
+ "value": ","
+ },
+ {
+ "name": "DECustomerKey",
+ "type": "string",
+ "value": "testExisting_dataExtension"
+ },
+ {
+ "name": "HasColumnHeaders",
+ "type": "bool",
+ "value": "False"
+ },
+ {
+ "name": "TextQualified",
+ "type": "bool",
+ "value": "False"
+ },
+ {
+ "name": "UsesLineFeed",
+ "type": "bool",
+ "value": "False"
+ }
+ ],
+ "description": "blabla",
+ "fileSpec": "testNew-%%Year%%-%%Month%%-%%Day%%",
+ "intervalType": 0,
+ "key": "testNew_dataExtract",
+ "modifiedBy": 700304523,
+ "name": "testNew_dataExtract",
+ "r__dataExtractType_name": "Data Extension Extract"
+}
diff --git a/test/resources/9999999/dataExtract/template-expected.json b/test/resources/9999999/dataExtract/template-expected.json
new file mode 100644
index 000000000..a407ded63
--- /dev/null
+++ b/test/resources/9999999/dataExtract/template-expected.json
@@ -0,0 +1,35 @@
+{
+ "dataFields": [
+ {
+ "name": "ColumnDelimiter",
+ "type": "string",
+ "value": ","
+ },
+ {
+ "name": "DECustomerKey",
+ "type": "string",
+ "value": "{{{prefix}}}dataExtension"
+ },
+ {
+ "name": "HasColumnHeaders",
+ "type": "bool",
+ "value": "False"
+ },
+ {
+ "name": "TextQualified",
+ "type": "bool",
+ "value": "False"
+ },
+ {
+ "name": "UsesLineFeed",
+ "type": "bool",
+ "value": "False"
+ }
+ ],
+ "description": "blabla",
+ "fileSpec": "testExisting-%%Year%%-%%Month%%-%%Day%%",
+ "intervalType": 0,
+ "key": "{{{prefix}}}dataExtract",
+ "name": "{{{prefix}}}dataExtract",
+ "r__dataExtractType_name": "Data Extension Extract"
+}
diff --git a/test/resources/9999999/dataFolder/retrieve-ContentType=contextual_suppression_listORContentType=publicationORContentType=suppression_listORContentType=mysubsORContentType=list-response.xml b/test/resources/9999999/dataFolder/retrieve-ContentType=contextual_suppression_listORContentType=publicationORContentType=suppression_listORContentType=mysubsORContentType=list-response.xml
new file mode 100644
index 000000000..306c34f4f
--- /dev/null
+++ b/test/resources/9999999/dataFolder/retrieve-ContentType=contextual_suppression_listORContentType=publicationORContentType=suppression_listORContentType=mysubsORContentType=list-response.xml
@@ -0,0 +1,136 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:016c1c21-3227-4e9c-9497-33b0c15d971b
+ urn:uuid:f559d162-26ae-4a2c-8bfe-0abaa0be36aa
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-08-08T12:49:25Z
+ 2023-08-08T12:54:25Z
+
+
+
+
+
+ OK
+ 01c5259b-174e-4c70-9fa7-f5cd984b28c6
+
+
+ 9999999
+
+
+ 2017-02-16T01:59:27.177
+ 2017-02-16T01:59:27.177
+ 404
+
+ list_default
+
+
+ 0
+
+
+ my lists
+
+ list
+ true
+ false
+ true
+
+
+
+ 9999999
+
+
+ 2016-07-22T11:52:17.55
+ 2016-07-22T11:52:17.55
+ 89332
+
+ mysubs_default
+
+
+ 0
+
+
+ my subscribers
+
+ mysubs
+ true
+ false
+ true
+
+
+
+ 9999999
+
+
+ 2017-02-16T01:59:32.323
+ 2017-02-16T01:59:32.323
+ 419
+
+ suppression_list_default
+
+
+ 0
+
+
+ Suppression Lists
+
+ suppression_list
+ true
+ false
+ true
+
+
+
+ 9999999
+
+
+ 2017-02-16T01:59:34.023
+ 2017-02-16T01:59:34.023
+ 424
+
+ publication_default
+
+
+ 0
+
+
+ Publication Lists
+
+ publication
+ true
+ false
+ true
+
+
+
+ 9999999
+
+
+ 2016-07-22T11:52:24.417
+ 2016-07-22T11:52:24.417
+ 89373
+
+ contextual_suppression_list_default
+
+
+ 0
+
+
+ Auto-Suppression Configuration
+
+ contextual_suppression_list
+ true
+ false
+ true
+
+
+
+
diff --git a/test/resources/9999999/dataFolder/retrieve-ContentType=ssjsactivity-response.xml b/test/resources/9999999/dataFolder/retrieve-ContentType=ssjsactivity-response.xml
new file mode 100644
index 000000000..65f4ad08a
--- /dev/null
+++ b/test/resources/9999999/dataFolder/retrieve-ContentType=ssjsactivity-response.xml
@@ -0,0 +1,48 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:f36f3303-3b5a-4641-8109-b26447634d91
+ urn:uuid:33983968-28c4-4379-bb5f-f80ae32eb988
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2022-04-19T20:03:41Z
+ 2022-04-19T20:08:41Z
+
+
+
+
+
+ OK
+ 02cd5ccb-8f84-4651-826f-71169eeecf05
+
+
+ 9999999
+
+
+ 2017-01-24T06:32:42.353
+ 2017-01-24T06:32:42.353
+ 304
+
+ SSJSActivity_default
+
+
+ 0
+
+
+ Scripts
+
+ SSJSActivity
+ true
+ false
+ true
+
+
+
+
diff --git a/test/resources/9999999/dataFolder/retrieve-ContentType=triggered_send_journeybuilderORContentType=triggered_sendORContentType=hidden-response.xml b/test/resources/9999999/dataFolder/retrieve-ContentType=triggered_send_journeybuilderORContentType=triggered_sendORContentType=hidden-response.xml
new file mode 100644
index 000000000..9bbdc78be
--- /dev/null
+++ b/test/resources/9999999/dataFolder/retrieve-ContentType=triggered_send_journeybuilderORContentType=triggered_sendORContentType=hidden-response.xml
@@ -0,0 +1,276 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:d626d883-8ca4-4cd1-b4ea-cb399015e275
+ urn:uuid:b1d23385-97c0-4bc8-b0fe-b54e3310ae6b
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-08-08T12:49:16Z
+ 2023-08-08T12:54:16Z
+
+
+
+
+
+ OK
+ 6e8873dd-03e2-47b6-823a-fb8681d93d78
+
+
+ 9999999
+
+
+ 2016-07-22T11:52:19.28
+ 2016-07-22T11:52:19.28
+ 89348
+
+ triggered_send_default
+
+
+ 0
+
+
+ Triggered Sends
+
+ triggered_send
+ true
+ false
+ true
+
+
+
+ 9999999
+
+
+ 2016-07-22T11:52:34.983
+ 2016-07-22T11:52:34.983
+ 89396
+
+ triggered_send_journeybuilder
+
+
+ 0
+
+
+ Journey Builder Sends
+
+ triggered_send_journeybuilder
+ true
+ false
+ true
+
+
+
+ 9999999
+
+
+ 2016-07-29T12:13:27.28
+ 2016-07-29T12:13:27.28
+ 90889
+
+ HiddenCategory_default
+
+
+ 0
+
+
+ HiddenCategory
+ Hidden folder to store Hidden items
+ Hidden
+ true
+ false
+ true
+
+
+
+ 9999999
+
+
+ 2016-08-25T10:04:09.12
+ 2016-08-25T10:04:09.12
+ 94030
+
+
+
+
+ 89396
+
+ triggered_send_journeybuilder
+
+ Satisfaction Score Survey
+
+ triggered_send_journeybuilder
+ true
+ true
+ true
+
+
+
+ 9999999
+
+
+ 2016-08-25T10:04:09.133
+ 2016-08-25T10:04:09.133
+ 94031
+
+
+
+
+ 94030
+
+
+ Version 1
+
+ triggered_send_journeybuilder
+ true
+ true
+ true
+
+
+
+ 9999999
+
+
+ 2021-06-09T10:17:06.27
+ 2021-06-09T10:17:06.27
+ 664654
+
+ 6aa28490-6577-4cb2-8eac-fd5e4f983cae
+
+
+ 317169
+
+ HiddenJourneyBuilderTriggeredSends_d
+
+ 6aa28490-6577-4cb2-8eac-fd5e4f983cae_V9
+ triggered_send folder to store triggered_send items
+ triggered_send
+ true
+ true
+ true
+
+
+
+ 9999999
+
+
+ 2022-07-31T19:55:31.657
+ 2022-07-31T19:55:31.657
+ 742869
+
+ 77211381-9967-4472-bd12-f58d4d5952a1
+
+
+ 317169
+
+ HiddenJourneyBuilderTriggeredSends_d
+
+ 77211381-9967-4472-bd12-f58d4d5952a1_V1
+ triggered_send folder to store triggered_send items
+ triggered_send
+ true
+ true
+ true
+
+
+
+ 9999999
+
+
+ 2022-07-31T19:56:51.297
+ 2022-07-31T19:56:51.297
+ 742871
+
+ HiddenJourneyBuilderSimulationTrigge
+
+
+ 90889
+
+ HiddenCategory_default
+
+ HiddenJourneyBuilderSimulationTriggeredSends
+ triggered_send_journeybuilder folder to store triggered_send_journeybuilder items
+ triggered_send_journeybuilder
+ true
+ true
+ true
+
+
+
+ 9999999
+
+
+ 2023-03-08T10:26:55.787
+ 2023-03-08T10:26:55.787
+ 771879
+
+ 8c24f428-4da8-4df6-97a7-beba5166c3c7
+
+
+ 317169
+
+ HiddenJourneyBuilderTriggeredSends_d
+
+ 8c24f428-4da8-4df6-97a7-beba5166c3c7_V1
+ triggered_send folder to store triggered_send items
+ triggered_send
+ true
+ true
+ true
+
+
+
+ 9999999
+
+
+ 2023-04-10T15:46:09.947
+ 2023-04-10T15:46:09.947
+ 776623
+
+ 0a85b483-4208-4377-87fb-25794f5df244
+
+
+ 317169
+
+ HiddenJourneyBuilderTriggeredSends_d
+
+ 0a85b483-4208-4377-87fb-25794f5df244_V1
+ triggered_send folder to store triggered_send items
+ triggered_send
+ true
+ true
+ true
+
+
+
+ 9999999
+
+
+ 2020-03-06T07:57:37.633
+ 2020-03-06T07:57:37.633
+ 317169
+
+ HiddenJourneyBuilderTriggeredSends_d
+
+
+ 90889
+
+ HiddenCategory_default
+
+ HiddenJourneyBuilderTriggeredSends
+ triggered_send folder to store triggered_send items
+ triggered_send
+ true
+ true
+ true
+
+
+
+
+
diff --git a/test/resources/9999999/dataFolder/retrieve-response.xml b/test/resources/9999999/dataFolder/retrieve-response.xml
index 29b1d38a8..f203f327c 100644
--- a/test/resources/9999999/dataFolder/retrieve-response.xml
+++ b/test/resources/9999999/dataFolder/retrieve-response.xml
@@ -197,6 +197,29 @@
true
true
+
+
+ 9999999
+
+
+ 2017-02-08T10:19:37.123
+ 2017-02-08T10:19:37.123
+ 386
+
+
+
+
+ 2
+
+ dataextension_default
+
+ Einstein
+
+ dataextension
+ true
+ true
+ true
+
diff --git a/test/resources/9999999/email/retrieve-response.xml b/test/resources/9999999/email/retrieve-response.xml
new file mode 100644
index 000000000..dedb7ab8c
--- /dev/null
+++ b/test/resources/9999999/email/retrieve-response.xml
@@ -0,0 +1,203 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:bda830a5-f8a8-4555-a0f0-9b3cdae02f9f
+ urn:uuid:afa5fcc9-c276-4f3d-9796-6b31a2b55721
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-08-08T12:49:19Z
+ 2023-08-08T12:54:19Z
+
+
+
+
+
+ OK
+ e25a4055-f1b6-4fcd-a771-76bcb1cff6a9
+
+
+ 2020-08-13T10:16:59
+ 2020-11-09T13:33:30.15
+ 483943
+
+ 255f0e7c-cd37-452b-ba59-cd802359f199
+ Sporting Goods for September
+ my emails
+ 283575
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<style type="text/css">
+ReadMsgBody{ width: 100%;}
+.ExternalClass {width: 100%;}
+.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;}
+body {-webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;margin:0 !important; padding:0 !important;}
+p { margin: 1em 0;}
+table td { border-collapse: collapse;}
+img {outline:0;}
+a img {border:none;}
+p {margin: 1em 0;}
+@-ms-viewport{ width: device-width;}
+@media only screen and (max-width: 480px) {
+body[yahoo] .container { width:100% !important; }
+body[yahoo] .footer { width:auto !important; margin-left:0; }
+body[yahoo] .content-padding{ padding:4px !important; }
+body[yahoo] .mobile-hidden { display:none !important; }
+body[yahoo] .logo { display:block !important; padding:0 !important; }
+body[yahoo] img { width:auto !important; max-width:308px !important; height:auto !important; max-height:auto !important;}
+body[yahoo] .header img { width:auto !important; max-width:316px !important; height:auto !important; max-height:auto !important;}
+body[yahoo] .photo img { width:100% !important; max-width:100% !important; height:auto !important;}
+body[yahoo] .drop { display:block !important; width: 100% !important; float:left; clear:both;}
+body[yahoo] .footerlogo { display:block !important; width: 100% !important; padding-top:15px; float:left; clear:both;}
+body[yahoo] .nav4, body[yahoo] .nav5, body[yahoo] .nav6 { display: none !important; }
+}
+@media only screen and (max-width: 640px) {
+body[yahoo] .container { width:100% !important; }
+body[yahoo] .mobile-hidden { display:none !important; }
+body[yahoo] .logo { display:block !important; padding:0 !important; }
+body[yahoo] .photo img { width:100% !important; height:auto !important;}
+body[yahoo] .nav5, body[yahoo] .nav6 { display: none !important;}
+}
+</style>
+</head>
+<body bgcolor="#ffffff" text="#000000" style="background-color: #FFFFFF; color: #000000; margin: 0px; padding:0px; -webkit-text-size-adjust:none;" yahoo="fix">
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" align="center">
+ <tr>
+ <td align="center" valign="top"><custom type="header" name="header"></td>
+ </tr>
+ <tr>
+ <td align="center">
+ <table cellspacing="0" cellpadding="0" border="0" width="600" class="container" align="center">
+ <tr>
+ <td>
+ <table cellspacing="0" cellpadding="0" border="1" bordercolor="#000000" bgcolor="#ffffff" width="100%">
+ <tr>
+ <td align="center" class="header" valign="top"></td>
+ </tr>
+ <tr>
+ <td align="center" valign="top"><table cellspacing="0" cellpadding="0" border="0" width="100%" align="left">
+ <tr>
+ <td class="content-padding" style="padding:10px;">
+ <table cellspacing="0" cellpadding="0" border="0" width="100%">
+ <tr>
+ <td class="drop" valign="top" width="33%" align="left">
+ <custom type="content" name="left">
+ </td>
+ <td class="drop" valign="top" width="2%" height="10"><img alt="" src="https://image.s7.sfmc-content.com/lib/ffcf14/m/1/spacer.gif" height="10" width="10" style="display: block;"/></td>
+ <td class="drop" valign="top" width="65%">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td align="left" valign="top">
+ <custom type="content" name="right1">
+ </td>
+ </tr>
+ <tr>
+ <td align="left" valign="top" style="padding-top: 10px;">
+ <custom type="content" name="right2">
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td align="left" colspan="3" valign="top" class="drop" style="padding-top:10px;">
+ <custom type="content" name="bottom">
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top"><custom type="footer" name="footer"></td>
+ </tr>
+ </table>
+ <custom name="opencounter" type="tracking">
+</body>
+</html>
+
+
+
+ 934961
+ 5E999EA7-97D8-4910-91B3-ED29B16567DA
+ 36D85559-5345-41CB-9E8E-A6B7675E4A6F
+ left
+ <table width="100%" bgcolor="" border="0" bordercolor="" cellpadding="0" cellspacing="0"><tr><td style="font-family:Arial;font-size:13px;">%%First Name%%</td></tr></table>
+ false
+ 0
+
+ false
+ false
+ false
+
+
+
+ 934962
+ 9FA2FEE0-8439-4475-B990-BBC95CB30E31
+ 68DC9A04-6662-4A23-912A-4A349A1EF040
+ right1
+ <table width="100%" bgcolor="" border="0" bordercolor="" cellpadding="0" cellspacing="0"><tr><td style="font-family:Arial;font-size:13px;">%%Last Name%%</td></tr></table>
+ false
+ 0
+
+ false
+ false
+ false
+
+
+
+ 934963
+ 5CE10FC0-CE06-40CC-8BE4-14583E2D02B3
+ AB7920D1-AE37-4137-9BB9-77B746D4A66C
+ right2
+ <table width="100%" bgcolor="" border="0" bordercolor="" cellpadding="0" cellspacing="0"><tr><td style="font-family:Arial;font-size:13px;">%%emailname_%%</td></tr></table>
+ false
+ 0
+
+ false
+ false
+ false
+
+
+
+ 934964
+ AF6501E0-8367-4121-9142-ADAFD632FBE7
+ 84B63EB0-E248-42D4-B6A6-716C18D2718D
+ bottom
+ <table width="100%" bgcolor="" border="0" bordercolor="" cellpadding="0" cellspacing="0"><tr><td style="font-family:Arial;font-size:13px;">%%emailaddr%%</td></tr></table>
+ false
+ 0
+
+ false
+ false
+ false
+
+ Sporting Goods for September
+ true
+ false
+ New
+ Normal
+ utf-8
+ false
+ Not Checked
+
+
+
+
+
diff --git a/test/resources/9999999/emailSendDefinition/retrieve-response.xml b/test/resources/9999999/emailSendDefinition/retrieve-IsPlatformObject=falseANDDescriptionnotEqualsSFSendDefinition-response.xml
similarity index 100%
rename from test/resources/9999999/emailSendDefinition/retrieve-response.xml
rename to test/resources/9999999/emailSendDefinition/retrieve-IsPlatformObject=falseANDDescriptionnotEqualsSFSendDefinition-response.xml
diff --git a/test/resources/9999999/fileTransfer/build-expected.json b/test/resources/9999999/fileTransfer/build-expected.json
new file mode 100644
index 000000000..b2c3e837c
--- /dev/null
+++ b/test/resources/9999999/fileTransfer/build-expected.json
@@ -0,0 +1,15 @@
+{
+ "customerKey": "testTemplated_fileTransfer",
+ "description": "17.11.2022",
+ "fileSpec": "%%Year%%",
+ "isCompressed": false,
+ "isEncrypted": false,
+ "isFileSpecLocalized": false,
+ "isPgp": false,
+ "isUpload": true,
+ "maxFileAge": 0,
+ "maxFileAgeScheduleOffset": 0,
+ "maxImportFrequency": 0,
+ "name": "testTemplated_fileTransfer",
+ "r__fileLocation_name": "ExactTarget Enhanced FTP"
+}
diff --git a/test/resources/9999999/fileTransfer/get-expected.json b/test/resources/9999999/fileTransfer/get-expected.json
new file mode 100644
index 000000000..c33af7903
--- /dev/null
+++ b/test/resources/9999999/fileTransfer/get-expected.json
@@ -0,0 +1,17 @@
+{
+ "createdDate": "2022-11-09T05:31:56.477",
+ "customerKey": "testExisting_fileTransfer",
+ "description": "17.11.2022",
+ "fileSpec": "%%Year%%",
+ "isCompressed": false,
+ "isEncrypted": false,
+ "isFileSpecLocalized": false,
+ "isPgp": false,
+ "isUpload": true,
+ "maxFileAge": 0,
+ "maxFileAgeScheduleOffset": 0,
+ "maxImportFrequency": 0,
+ "modifiedDate": "2022-11-17T07:13:20.05",
+ "name": "testExisting_fileTransfer",
+ "r__fileLocation_name": "ExactTarget Enhanced FTP"
+}
diff --git a/test/resources/9999999/fileTransfer/patch-expected.json b/test/resources/9999999/fileTransfer/patch-expected.json
new file mode 100644
index 000000000..0c460f792
--- /dev/null
+++ b/test/resources/9999999/fileTransfer/patch-expected.json
@@ -0,0 +1,17 @@
+{
+ "createdDate": "2022-11-09T05:31:56.477",
+ "customerKey": "testExisting_fileTransfer",
+ "description": "17.11.2022",
+ "fileSpec": "%%Year%% updated via deploy",
+ "isCompressed": false,
+ "isEncrypted": false,
+ "isFileSpecLocalized": false,
+ "isPgp": false,
+ "isUpload": true,
+ "maxFileAge": 0,
+ "maxFileAgeScheduleOffset": 0,
+ "maxImportFrequency": 0,
+ "modifiedDate": "2022-11-17T07:13:20.05",
+ "name": "testExisting_fileTransfer",
+ "r__fileLocation_name": "ExactTarget Enhanced FTP"
+}
diff --git a/test/resources/9999999/fileTransfer/post-expected.json b/test/resources/9999999/fileTransfer/post-expected.json
new file mode 100644
index 000000000..30de51868
--- /dev/null
+++ b/test/resources/9999999/fileTransfer/post-expected.json
@@ -0,0 +1,17 @@
+{
+ "createdDate": "2022-11-09T05:31:56.477",
+ "customerKey": "testNew_fileTransfer",
+ "description": "17.11.2022",
+ "fileSpec": "%%Year%% created on deploy",
+ "isCompressed": false,
+ "isEncrypted": false,
+ "isFileSpecLocalized": false,
+ "isPgp": false,
+ "isUpload": true,
+ "maxFileAge": 0,
+ "maxFileAgeScheduleOffset": 0,
+ "maxImportFrequency": 0,
+ "modifiedDate": "2022-11-17T07:13:20.05",
+ "name": "testNew_fileTransfer",
+ "r__fileLocation_name": "ExactTarget Enhanced FTP"
+}
diff --git a/test/resources/9999999/fileTransfer/template-expected.json b/test/resources/9999999/fileTransfer/template-expected.json
new file mode 100644
index 000000000..407519655
--- /dev/null
+++ b/test/resources/9999999/fileTransfer/template-expected.json
@@ -0,0 +1,15 @@
+{
+ "customerKey": "{{{prefix}}}fileTransfer",
+ "description": "17.11.2022",
+ "fileSpec": "%%Year%%",
+ "isCompressed": false,
+ "isEncrypted": false,
+ "isFileSpecLocalized": false,
+ "isPgp": false,
+ "isUpload": true,
+ "maxFileAge": 0,
+ "maxFileAgeScheduleOffset": 0,
+ "maxImportFrequency": 0,
+ "name": "{{{prefix}}}fileTransfer",
+ "r__fileLocation_name": "ExactTarget Enhanced FTP"
+}
diff --git a/test/resources/9999999/hub/v1/contacts/schema/attributeGroups/get-response.json b/test/resources/9999999/hub/v1/contacts/schema/attributeGroups/get-response.json
new file mode 100644
index 000000000..078668f80
--- /dev/null
+++ b/test/resources/9999999/hub/v1/contacts/schema/attributeGroups/get-response.json
@@ -0,0 +1,585 @@
+{
+ "attributeGroupDefinitions": [
+ {
+ "mID": 1111111,
+ "objectState": "Created",
+ "attributeSetIdentifiers": [
+ {
+ "definitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Email Addresses"
+ },
+ "definitionKey": "EmailAddresses",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "9093dc39-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Contact"
+ },
+ "definitionKey": "Contact",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ }
+ ],
+ "isOwner": true,
+ "isPrimary": false,
+ "isSystemDefined": true,
+ "isHidden": false,
+ "canAddProperties": false,
+ "canAddRelationships": false,
+ "containsSchemaAttributes": true,
+ "canRemove": false,
+ "canChangeProperties": false,
+ "displayOrder": 0,
+ "requiredRelationships": [
+ "0e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "1451de3f-31e2-e611-80cc-1402ec7222b4",
+ "9893dc39-31e2-e611-80cc-1402ec7222b4"
+ ],
+ "applicationID": "ce703ed3-e01f-4f5f-900d-76a95b363e29",
+ "canModify": false,
+ "applicationKey": "com.exacttarget.contacts",
+ "attributeGroupIconKey": "People",
+ "fullyQualifiedName": "System Data",
+ "attributeGroupType": "Standard",
+ "localizedDescription": {},
+ "attributeCount": 7,
+ "definitionID": "8f93dc39-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "System Data"
+ },
+ "definitionKey": "ETSystem",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "mID": 1111111,
+ "objectState": "Created",
+ "attributeSetIdentifiers": [
+ {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "definitionKey": "ChatMessageDemographics",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "definitionKey": "ChatMessageSubscriptions",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ }
+ ],
+ "isOwner": true,
+ "isPrimary": false,
+ "isSystemDefined": true,
+ "isHidden": false,
+ "canAddProperties": true,
+ "canAddRelationships": true,
+ "containsSchemaAttributes": false,
+ "canRemove": false,
+ "canChangeProperties": true,
+ "displayOrder": 1,
+ "requiredRelationships": [
+ "9a42dcad-ae72-4cde-9937-193e17485ad6",
+ "04ea847d-696d-eb11-b81e-48df37d1df5a"
+ ],
+ "canModify": true,
+ "fullyQualifiedName": "Chat Message Data",
+ "attributeGroupType": "Standard",
+ "localizedDescription": {},
+ "attributeCount": 37,
+ "definitionID": "cae9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionName": {
+ "value": "Chat Message Data"
+ },
+ "definitionKey": "ETChatMessage",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "mID": 1111111,
+ "objectState": "Created",
+ "attributeSetIdentifiers": [
+ {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "definitionKey": "EmailDemographics",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ }
+ ],
+ "isOwner": true,
+ "isPrimary": false,
+ "isSystemDefined": true,
+ "isHidden": false,
+ "canAddProperties": false,
+ "canAddRelationships": true,
+ "containsSchemaAttributes": false,
+ "canRemove": false,
+ "canChangeProperties": false,
+ "displayOrder": 2,
+ "requiredRelationships": ["b751de3f-31e2-e611-80cc-1402ec7222b4"],
+ "applicationID": "b2ca1f50-3cc4-4fd7-a3a3-88bf09fb59fa",
+ "canModify": false,
+ "applicationKey": "com.exacttarget.email",
+ "attributeGroupIconKey": "Email",
+ "fullyQualifiedName": "Email Data",
+ "attributeGroupType": "Standard",
+ "localizedDescription": {},
+ "attributeCount": 16,
+ "definitionID": "b451de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Email Data"
+ },
+ "definitionKey": "ETEmail",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "mID": 1111111,
+ "objectState": "Created",
+ "attributeSetIdentifiers": [
+ {
+ "definitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "definitionKey": "GroupConnectLineAddress",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "definitionKey": "GroupConnectLineDemographics",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "definitionKey": "GroupConnectLineSubscriptions",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ }
+ ],
+ "isOwner": true,
+ "isPrimary": false,
+ "isSystemDefined": true,
+ "isHidden": false,
+ "canAddProperties": false,
+ "canAddRelationships": true,
+ "containsSchemaAttributes": false,
+ "canRemove": false,
+ "canChangeProperties": false,
+ "displayOrder": 3,
+ "requiredRelationships": [
+ "8686d247-3045-ea11-a2e0-1402ec94ec41",
+ "a686d247-3045-ea11-a2e0-1402ec94ec41",
+ "9386d247-3045-ea11-a2e0-1402ec94ec41"
+ ],
+ "applicationID": "4e9519db-ad21-483a-a3fc-8ab4557eded1",
+ "canModify": false,
+ "applicationKey": "com.exacttarget.GroupConnect",
+ "attributeGroupIconKey": "Mobile",
+ "fullyQualifiedName": "GroupConnect LINE Data",
+ "attributeGroupType": "Standard",
+ "localizedDescription": {},
+ "attributeCount": 23,
+ "definitionID": "ab51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "GroupConnect LINE Data"
+ },
+ "definitionKey": "ETGroupConnectLine",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "mID": 1111111,
+ "objectState": "Created",
+ "attributeSetIdentifiers": [
+ {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "definitionKey": "MobileDemographics",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "definitionKey": "MobileSubscriptions",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ }
+ ],
+ "isOwner": true,
+ "isPrimary": false,
+ "isSystemDefined": true,
+ "isHidden": false,
+ "canAddProperties": false,
+ "canAddRelationships": true,
+ "containsSchemaAttributes": false,
+ "canRemove": false,
+ "canChangeProperties": false,
+ "displayOrder": 4,
+ "requiredRelationships": [
+ "4651de3f-31e2-e611-80cc-1402ec7222b4",
+ "4352de3f-31e2-e611-80cc-1402ec7222b4"
+ ],
+ "applicationID": "e25893f9-08f3-480f-8def-7f8ab0583611",
+ "canModify": false,
+ "applicationKey": "com.exacttarget.mobileconnect",
+ "attributeGroupIconKey": "Mobile",
+ "fullyQualifiedName": "MobileConnect Data",
+ "attributeGroupType": "Standard",
+ "localizedDescription": {},
+ "attributeCount": 37,
+ "definitionID": "4351de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "MobileConnect Data"
+ },
+ "definitionKey": "ETMobileConnect",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "mID": 1111111,
+ "objectState": "Created",
+ "attributeSetIdentifiers": [
+ {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "definitionKey": "PushDemographics",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "definitionKey": "PushSubscriptions",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "MobilePush Tags"
+ },
+ "definitionKey": "PushTags",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ }
+ ],
+ "isOwner": true,
+ "isPrimary": false,
+ "isSystemDefined": true,
+ "isHidden": false,
+ "canAddProperties": false,
+ "canAddRelationships": true,
+ "containsSchemaAttributes": false,
+ "canRemove": false,
+ "canChangeProperties": false,
+ "displayOrder": 5,
+ "requiredRelationships": [
+ "9651de3f-31e2-e611-80cc-1402ec7222b4",
+ "d052de3f-31e2-e611-80cc-1402ec7222b4",
+ "bc52de3f-31e2-e611-80cc-1402ec7222b4"
+ ],
+ "applicationID": "2051892d-5de2-4ecf-98af-8ca9a40d2c9c",
+ "canModify": false,
+ "applicationKey": "com.exacttarget.mobilepush",
+ "attributeGroupIconKey": "Mobile",
+ "fullyQualifiedName": "MobilePush Data",
+ "attributeGroupType": "Standard",
+ "localizedDescription": {},
+ "attributeCount": 65,
+ "definitionID": "9351de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "MobilePush Data"
+ },
+ "definitionKey": "ETMobilePush",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "mID": 1111111,
+ "objectState": "Created",
+ "attributeSetIdentifiers": [
+ {
+ "definitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "definitionKey": "PredictiveIntelProductSessions",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "definitionKey": "PredictiveIntelContentViews",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "definitionKey": "PredictiveIntelContent",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "definitionKey": "PredictiveIntelContentAttribs",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "definitionKey": "PredictiveIntelAbandonedCartItems",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "definitionKey": "PredictiveIntelSessionEnds",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Scores"
+ },
+ "definitionKey": "PredictiveIntelScores",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "definitionKey": "PredictiveIntelProductViews",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "definitionKey": "PredictiveIntelProducts",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "definitionKey": "PredictiveIntelProductAttribs",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ },
+ {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "definitionKey": "PredictiveIntelProfiles",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ }
+ ],
+ "isOwner": true,
+ "isPrimary": false,
+ "isSystemDefined": true,
+ "isHidden": false,
+ "canAddProperties": true,
+ "canAddRelationships": false,
+ "containsSchemaAttributes": false,
+ "canRemove": false,
+ "canChangeProperties": true,
+ "displayOrder": 7,
+ "requiredRelationships": [
+ "1586d645-31e2-e611-80cc-1402ec7222b4",
+ "2686d645-31e2-e611-80cc-1402ec7222b4",
+ "3586d645-31e2-e611-80cc-1402ec7222b4",
+ "4686d645-31e2-e611-80cc-1402ec7222b4",
+ "5d86d645-31e2-e611-80cc-1402ec7222b4",
+ "6c86d645-31e2-e611-80cc-1402ec7222b4",
+ "7887d645-31e2-e611-80cc-1402ec7222b4",
+ "7d86d645-31e2-e611-80cc-1402ec7222b4",
+ "c80f6472-c416-ec11-b839-48df37d1dc79",
+ "a985d645-31e2-e611-80cc-1402ec7222b4",
+ "ba85d645-31e2-e611-80cc-1402ec7222b4",
+ "cd85d645-31e2-e611-80cc-1402ec7222b4",
+ "0086d645-31e2-e611-80cc-1402ec7222b4",
+ "de85d645-31e2-e611-80cc-1402ec7222b4",
+ "fd85d645-31e2-e611-80cc-1402ec7222b4",
+ "9885d645-31e2-e611-80cc-1402ec7222b4"
+ ],
+ "applicationID": "aed181bc-d7b7-465e-a3dd-9cdfb13943e2",
+ "canModify": false,
+ "applicationKey": "com.sfmc-einstein.Einstein Engagement Scoring",
+ "attributeGroupIconKey": "PredictiveIntel",
+ "fullyQualifiedName": "Predictive Intelligence Data",
+ "attributeGroupType": "Standard",
+ "description": "Attribute Group for Einstein Engagement Scoring",
+ "localizedDescription": {
+ "resourceSetKey": "ContactsMeta.SystemAttributeGroupDescriptions",
+ "resourceValueKey": "ATTR_GROUP_DESC_ETPredictiveIntel",
+ "value": "Attribute Group for Einstein Engagement Scoring"
+ },
+ "attributeCount": 112,
+ "definitionID": "e152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionName": {
+ "value": "Predictive Intelligence Data"
+ },
+ "definitionKey": "ETPredictiveIntel",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "namespace": ""
+ }
+ ],
+ "responseContext": {
+ "operationStatus": "OK",
+ "schemaType": "Contacts",
+ "populateInternalProperties": false
+ },
+ "requestServiceMessageID": "9dac2279-40db-4e67-a862-d6ecbadf109a",
+ "responseDateTime": "2023-07-12T09:17:31.8837381-06:00",
+ "resultMessages": [],
+ "serviceMessageID": "92930c00-cacf-41e1-ba8d-04ad4d903f65"
+}
diff --git a/test/resources/9999999/hub/v1/contacts/schema/setDefinitions/get-response.json b/test/resources/9999999/hub/v1/contacts/schema/setDefinitions/get-response.json
new file mode 100644
index 000000000..8e5dc97ff
--- /dev/null
+++ b/test/resources/9999999/hub/v1/contacts/schema/setDefinitions/get-response.json
@@ -0,0 +1,19807 @@
+{
+ "setDefinition": [
+ {
+ "definitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductSessions",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "1386d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence Product Sessions.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductSessions",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "1386d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductSessions",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "parentIdentifier": "0b86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "session_id",
+ "localizedDescription": {
+ "value": "session_id"
+ },
+ "definitionID": "1086d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "session_id",
+ "definitionName": {
+ "value": "Session ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence Product Sessions.Session ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "1086d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductSessions",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "session_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "1ca32e3d-4f4e-4771-8d99-057f8bad3733"
+ },
+ "valueDefinitionID": "1086d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "session_id",
+ "name": "Session ID",
+ "setDefinitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductSessions",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "parentIdentifier": "0b86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "user_id",
+ "localizedDescription": {
+ "value": "user_id"
+ },
+ "definitionID": "1286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "User_ID",
+ "definitionName": {
+ "value": "User ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence Product Sessions.User ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "1286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductSessions",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "user_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f2e9ddf5-e18d-43db-ad52-cc754c929811"
+ },
+ "valueDefinitionID": "1286d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "User_ID",
+ "name": "User ID",
+ "setDefinitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductSessions",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "parentIdentifier": "0b86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "Batch_ID",
+ "localizedDescription": {
+ "value": "Batch_ID"
+ },
+ "definitionID": "0c86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Batch_ID",
+ "definitionName": {
+ "value": "Batch ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence Product Sessions.Batch ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "0c86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductSessions",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Batch_ID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "fed66cad-7da4-469c-b49c-79e8c82ae37f"
+ },
+ "valueDefinitionID": "0c86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Batch_ID",
+ "name": "Batch ID",
+ "setDefinitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductSessions",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "parentIdentifier": "0b86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "List_ID",
+ "localizedDescription": {
+ "value": "List_ID"
+ },
+ "definitionID": "0f86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "List_ID",
+ "definitionName": {
+ "value": "List ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence Product Sessions.List ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "0f86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductSessions",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "List_ID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "39471713-05c1-43d5-ac0f-9ecb66bae213"
+ },
+ "valueDefinitionID": "0f86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "List_ID",
+ "name": "List ID",
+ "setDefinitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductSessions",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "parentIdentifier": "0b86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "Job_ID",
+ "localizedDescription": {
+ "value": "Job_ID"
+ },
+ "definitionID": "0d86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Job_ID",
+ "definitionName": {
+ "value": "Job ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Intelligence Product Sessions.Job ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "0d86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductSessions",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Job_ID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "5c73cf1c-8fbd-4275-bca1-5a232c5ebb35"
+ },
+ "valueDefinitionID": "0d86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Job_ID",
+ "name": "Job ID",
+ "setDefinitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductSessions",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "parentIdentifier": "0b86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "Landing_URL_ID",
+ "localizedDescription": {
+ "value": "Landing_URL_ID"
+ },
+ "definitionID": "0e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Landing_URL_ID",
+ "definitionName": {
+ "value": "Landing URL ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "Predictive Intelligence Product Sessions.Landing URL ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "0e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductSessions",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Landing_URL_ID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "60fd37ce-3306-4197-a0e2-7c1b51b46d3a"
+ },
+ "valueDefinitionID": "0e86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Landing_URL_ID",
+ "name": "Landing URL ID",
+ "setDefinitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductSessions",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "parentIdentifier": "0b86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "Subscriber_ID",
+ "localizedDescription": {
+ "value": "Subscriber_ID"
+ },
+ "definitionID": "1186d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Subscriber_ID",
+ "definitionName": {
+ "value": "Subscriber_ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "Predictive Intelligence Product Sessions.Subscriber_ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "1186d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductSessions",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Subscriber_ID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f239f3c3-3ecc-4ec4-a4c9-de258fdefdea"
+ },
+ "valueDefinitionID": "1186d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Subscriber_ID",
+ "name": "Subscriber_ID",
+ "setDefinitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductSessions",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Sessions"
+ },
+ "parentIdentifier": "0b86d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence Product Sessions",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 0,
+ "storageLogicalType": "DataExtension",
+ "storageName": "PI_SESSIONS",
+ "storageObjectIDs": ["0286d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "dd52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductSessions",
+ "name": "Predictive Intelligence Product Sessions"
+ },
+ {
+ "definitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailAddresses",
+ "definitionName": {
+ "value": "Email Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": true,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "8f93dc39-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeGroup"
+ },
+ "leftRelationshipIDs": [
+ {
+ "type": "int16",
+ "value": "4"
+ }
+ ],
+ "leftRelationshipReferenceType": "CustomerData",
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "1151de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "1151de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "1451de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "1251de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ListID",
+ "definitionName": {
+ "value": "List ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 0,
+ "fullyQualifiedName": "Email Addresses.List ID",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 0,
+ "parentDefinition": {
+ "definitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailAddresses",
+ "definitionName": {
+ "value": "Email Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ListID",
+ "valueDefinitionID": "1251de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ListID",
+ "name": "List ID",
+ "setDefinitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailAddresses",
+ "setDefinitionName": {
+ "value": "Email Addresses"
+ },
+ "parentIdentifier": "1051de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "1351de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MemberID",
+ "definitionName": {
+ "value": "Member ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 0,
+ "fullyQualifiedName": "Email Addresses.Member ID",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 0,
+ "parentDefinition": {
+ "definitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailAddresses",
+ "definitionName": {
+ "value": "Email Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "MemberID_",
+ "valueDefinitionID": "1351de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "MemberID",
+ "name": "Member ID",
+ "setDefinitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailAddresses",
+ "setDefinitionName": {
+ "value": "Email Addresses"
+ },
+ "parentIdentifier": "1051de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "customerDataID": 4,
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "EmailAddress",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "1151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailAddress",
+ "definitionName": {
+ "value": "Email Address"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Email Addresses.Email Address",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailAddresses",
+ "definitionName": {
+ "value": "Email Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "EmailAddr_",
+ "valueDefinitionID": "1151de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "EmailAddress",
+ "name": "Email Address",
+ "setDefinitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailAddresses",
+ "setDefinitionName": {
+ "value": "Email Addresses"
+ },
+ "parentIdentifier": "1051de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b951de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "HTMLEnabled",
+ "definitionName": {
+ "value": "HTML Enabled"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Email Addresses.HTML Enabled",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailAddresses",
+ "definitionName": {
+ "value": "Email Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "IsHTMLEnabled",
+ "valueDefinitionID": "b951de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "HTMLEnabled",
+ "name": "HTML Enabled",
+ "setDefinitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailAddresses",
+ "setDefinitionName": {
+ "value": "Email Addresses"
+ },
+ "parentIdentifier": "1051de3f-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "b2ca1f50-3cc4-4fd7-a3a3-88bf09fb59fa",
+ "applicationKey": "com.exacttarget.email",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "localizedDescription": {},
+ "fullyQualifiedName": "Email Addresses",
+ "isCustomObjectBacked": false,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isSystemDefined": true,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 1,
+ "storageObjectIDs": [
+ "92492fc1-7a08-4c96-8536-0344719009e1",
+ "c336765a-f24f-49b2-8a1f-b54f903def2a"
+ ],
+ "setDefinitionID": "1051de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailAddresses",
+ "name": "Email Addresses"
+ },
+ {
+ "definitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "1f86d645-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "3086d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "3586d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "2486d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence Content Views.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "2486d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "parentIdentifier": "1e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "content_id",
+ "localizedDescription": {
+ "value": "content_id"
+ },
+ "definitionID": "1f86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Content_ID",
+ "definitionName": {
+ "value": "Content ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence Content Views.Content ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "1f86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "content_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "1abf7b9d-1222-469f-9df9-7835829ec41f"
+ },
+ "valueDefinitionID": "1f86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Content_ID",
+ "name": "Content ID",
+ "setDefinitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "parentIdentifier": "1e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "user_Id",
+ "localizedDescription": {
+ "value": "user_Id"
+ },
+ "definitionID": "2386d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "User_ID",
+ "definitionName": {
+ "value": "User ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence Content Views.User ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "2386d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "user_Id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a6c60012-6673-4402-8262-c6f06e1b0d13"
+ },
+ "valueDefinitionID": "2386d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "User_ID",
+ "name": "User ID",
+ "setDefinitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "parentIdentifier": "1e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "session_id",
+ "localizedDescription": {
+ "value": "session_id"
+ },
+ "definitionID": "2186d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Session_ID",
+ "definitionName": {
+ "value": "Session ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence Content Views.Session ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "2186d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "session_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "78820841-1579-42dd-8300-3cfe4eec96cc"
+ },
+ "valueDefinitionID": "2186d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Session_ID",
+ "name": "Session ID",
+ "setDefinitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "parentIdentifier": "1e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Search",
+ "localizedDescription": {
+ "value": "Search"
+ },
+ "definitionID": "2086d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Search",
+ "definitionName": {
+ "value": "Search"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence Content Views.Search",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 1000,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "2086d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Search",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f1ecc397-6be7-4a53-8792-0fdbaff63505"
+ },
+ "valueDefinitionID": "2086d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Search",
+ "name": "Search",
+ "setDefinitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "parentIdentifier": "1e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "Timestamp",
+ "localizedDescription": {
+ "value": "Timestamp"
+ },
+ "definitionID": "2286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Timestamp",
+ "definitionName": {
+ "value": "Timestamp"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Intelligence Content Views.Timestamp",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "2286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Timestamp",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "e5c8ef5d-f2df-464d-b0ba-aa06536ac934"
+ },
+ "valueDefinitionID": "2286d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Timestamp",
+ "name": "Timestamp",
+ "setDefinitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Views"
+ },
+ "parentIdentifier": "1e86d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence Content Views",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 1,
+ "storageLogicalType": "DataExtension",
+ "storageName": "PI_CONTENTVIEWS",
+ "storageObjectIDs": ["1786d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "da52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentViews",
+ "name": "Predictive Intelligence Content Views"
+ },
+ {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": true,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "4351de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeGroup"
+ },
+ "leftRelationshipIDs": [
+ {
+ "type": "int16",
+ "value": "2"
+ }
+ ],
+ "leftRelationshipReferenceType": "CustomerData",
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "9293dc39-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "2f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "4651de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "3651de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "3452de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "4352de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "2c51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CarrierID",
+ "definitionName": {
+ "value": "Carrier ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "MobileConnect Demographics.Carrier ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "2c51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CarrierID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "3fdc8842-cc0f-407c-a3ec-930d7a027d1d"
+ },
+ "valueDefinitionID": "2c51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CarrierID",
+ "name": "Carrier ID",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "2d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Channel",
+ "definitionName": {
+ "value": "Channel"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "MobileConnect Demographics.Channel",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 20,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "2d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Channel",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "ef36ded9-67b2-4daf-899f-6862af8e5ee7"
+ },
+ "valueDefinitionID": "2d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Channel",
+ "name": "Channel",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "2e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "City",
+ "definitionName": {
+ "value": "City"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "MobileConnect Demographics.City",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "2e51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_City",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "be7b4554-bf03-4a80-9101-3e396b2e345f"
+ },
+ "valueDefinitionID": "2e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "City",
+ "name": "City",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "2f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ContactID",
+ "definitionName": {
+ "value": "Contact ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "MobileConnect Demographics.Contact ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "2f51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ContactID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "b0e31883-cae8-4bc5-aa24-88565d375a18"
+ },
+ "valueDefinitionID": "2f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ContactID",
+ "name": "Contact ID",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedBy",
+ "definitionName": {
+ "value": "Created By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "MobileConnect Demographics.Created By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedBy",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "1671a32a-8eb0-4dc5-b30d-8ad16e55a601"
+ },
+ "valueDefinitionID": "3151de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedBy",
+ "name": "Created By",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3251de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedDate",
+ "definitionName": {
+ "value": "Created Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "MobileConnect Demographics.Created Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3251de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "de543ca5-5920-4309-adb9-33472144defe"
+ },
+ "valueDefinitionID": "3251de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedDate",
+ "name": "Created Date",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3351de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "FirstName",
+ "definitionName": {
+ "value": "First Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "MobileConnect Demographics.First Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3351de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_FirstName",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "125f7c91-2f11-44bd-9687-f22cf2461496"
+ },
+ "valueDefinitionID": "3351de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "FirstName",
+ "name": "First Name",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "defaultValue": "False",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3451de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "IsHonorDST",
+ "definitionName": {
+ "value": "Is Honor DST"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "MobileConnect Demographics.Is Honor DST",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3451de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_IsHonorDST",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "17abe00a-4306-43c5-b27f-a81f015d6dfb"
+ },
+ "valueDefinitionID": "3451de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "IsHonorDST",
+ "name": "Is Honor DST",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "LastName",
+ "definitionName": {
+ "value": "Last Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "MobileConnect Demographics.Last Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3551de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_LastName",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "e31f18f4-5422-410b-adcc-1b60f61cce5f"
+ },
+ "valueDefinitionID": "3551de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "LastName",
+ "name": "Last Name",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3051de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CountryCode",
+ "definitionName": {
+ "value": "Locale"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 12,
+ "fullyQualifiedName": "MobileConnect Demographics.Locale",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 2,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3051de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 12,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CountryCode",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4b5fda70-47cb-4f4b-8ba6-f5cac53ee344"
+ },
+ "valueDefinitionID": "3051de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CountryCode",
+ "name": "Locale",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "2ddd5f89-bca1-ed11-b852-48df37d1df5b",
+ "definitionKey": "MobileID",
+ "definitionName": {
+ "value": "Mobile ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 13,
+ "fullyQualifiedName": "MobileConnect Demographics.Mobile ID",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 13,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_MobileId",
+ "valueDefinitionID": "2ddd5f89-bca1-ed11-b852-48df37d1df5b",
+ "valueDefinitionKey": "MobileID",
+ "name": "Mobile ID",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "customerDataID": 5,
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Phone",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3651de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileNumber",
+ "definitionName": {
+ "value": "Mobile Number"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 14,
+ "fullyQualifiedName": "MobileConnect Demographics.Mobile Number",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 15,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3651de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 14,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_MobileNumber",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "e31a7e3b-e943-440e-9be6-77224a4928fe"
+ },
+ "valueDefinitionID": "3651de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "MobileNumber",
+ "name": "Mobile Number",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3751de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedBy",
+ "definitionName": {
+ "value": "Modified By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 15,
+ "fullyQualifiedName": "MobileConnect Demographics.Modified By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3751de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 15,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedBy",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a9be58ef-884d-44f4-9926-d73ebe587847"
+ },
+ "valueDefinitionID": "3751de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedBy",
+ "name": "Modified By",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3851de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedDate",
+ "definitionName": {
+ "value": "Modified Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 16,
+ "fullyQualifiedName": "MobileConnect Demographics.Modified Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3851de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 16,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "216659c1-9512-47de-a9ee-822f48148514"
+ },
+ "valueDefinitionID": "3851de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedDate",
+ "name": "Modified Date",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3951de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Priority",
+ "definitionName": {
+ "value": "Priority"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 17,
+ "fullyQualifiedName": "MobileConnect Demographics.Priority",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3951de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 17,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Priority",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "71153ee5-a33f-4cf6-a963-0c3a893d9348"
+ },
+ "valueDefinitionID": "3951de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Priority",
+ "name": "Priority",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3a51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Source",
+ "definitionName": {
+ "value": "Source"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 18,
+ "fullyQualifiedName": "MobileConnect Demographics.Source",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3a51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 18,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 5,
+ "storageName": "_Source",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f6bafdfb-86bf-45e8-9b76-b878c904d6c5"
+ },
+ "valueDefinitionID": "3a51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Source",
+ "name": "Source",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "SourceObjectID",
+ "definitionName": {
+ "value": "Source Object ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 19,
+ "fullyQualifiedName": "MobileConnect Demographics.Source Object ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 19,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_SourceObjectId",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "c67a7922-44e5-4c4b-a4c8-2ac3550a5f07"
+ },
+ "valueDefinitionID": "3b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "SourceObjectID",
+ "name": "Source Object ID",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 4,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "67ace0e3-8563-e811-80d4-1402ec721f75",
+ "definitionKey": "SFContactID",
+ "definitionName": {
+ "value": "SFContactID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 19,
+ "fullyQualifiedName": "MobileConnect Demographics.SFContactID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 50,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "67ace0e3-8563-e811-80d4-1402ec721f75"
+ },
+ "ordinal": 19,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "SFContactID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "ce5a90ea-88eb-4683-9a1a-5c776b5763ce"
+ },
+ "valueDefinitionID": "67ace0e3-8563-e811-80d4-1402ec721f75",
+ "valueDefinitionKey": "SFContactID",
+ "name": "SFContactID",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3c51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "State",
+ "definitionName": {
+ "value": "State"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 20,
+ "fullyQualifiedName": "MobileConnect Demographics.State",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3c51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 20,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_State",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "c0ea1fac-d939-4dde-b45a-16586f661924"
+ },
+ "valueDefinitionID": "3c51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "State",
+ "name": "State",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Status",
+ "definitionName": {
+ "value": "Status"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 21,
+ "fullyQualifiedName": "MobileConnect Demographics.Status",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 21,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 6,
+ "storageName": "_Status",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "fafff407-c055-411c-81ec-78907f5dbd58"
+ },
+ "valueDefinitionID": "3d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Status",
+ "name": "Status",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "UTCOffset",
+ "definitionName": {
+ "value": "UTC Offset"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 22,
+ "fullyQualifiedName": "MobileConnect Demographics.UTC Offset",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 4,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3e51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 22,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 2,
+ "storageName": "_UTCOffset",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "84d29656-a348-43c2-ac2f-8c7ec5b18a3e"
+ },
+ "valueDefinitionID": "3e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "UTCOffset",
+ "name": "UTC Offset",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ZipCode",
+ "definitionName": {
+ "value": "Zip Code"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 23,
+ "fullyQualifiedName": "MobileConnect Demographics.Zip Code",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 20,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3f51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 23,
+ "parentDefinition": {
+ "definitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileDemographics",
+ "definitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ZipCode",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "11ce9d05-a1e3-47ba-9077-11097e0b4c8d"
+ },
+ "valueDefinitionID": "3f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ZipCode",
+ "name": "Zip Code",
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "setDefinitionName": {
+ "value": "MobileConnect Demographics"
+ },
+ "parentIdentifier": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "e25893f9-08f3-480f-8def-7f8ab0583611",
+ "applicationKey": "com.exacttarget.mobileconnect",
+ "attributeCount": 0,
+ "canAddValues": true,
+ "canChangeValues": true,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 2,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "MobileConnect Demographics",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": true,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 2,
+ "sendAttributeStorageName": "_ContactID",
+ "sendContactKeyStorageName": "_SubscriberID",
+ "storageLogicalType": "MobileAttributes",
+ "storageName": "_MobileAddress",
+ "storageObjectIDs": ["1651de3f-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "7693dc39-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "2b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileDemographics",
+ "name": "MobileConnect Demographics"
+ },
+ {
+ "definitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContent",
+ "definitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "3086d645-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "4286d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "4686d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3386d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence Content.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContent",
+ "definitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "3386d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContent",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "parentIdentifier": "2e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "content_id",
+ "localizedDescription": {
+ "value": "content_id"
+ },
+ "definitionID": "3086d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Content_ID",
+ "definitionName": {
+ "value": "Content ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence Content.Content ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3086d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContent",
+ "definitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "content_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "9fd67d4d-cae5-4230-8cf1-f19cd230a233"
+ },
+ "valueDefinitionID": "3086d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Content_ID",
+ "name": "Content ID",
+ "setDefinitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContent",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "parentIdentifier": "2e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "description": "availability",
+ "localizedDescription": {
+ "value": "availability"
+ },
+ "definitionID": "2f86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Availability",
+ "definitionName": {
+ "value": "Availability"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence Content.Availability",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "2f86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContent",
+ "definitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "availability",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d32b9706-78a0-40fd-aae5-e345b1f217a6"
+ },
+ "valueDefinitionID": "2f86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Availability",
+ "name": "Availability",
+ "setDefinitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContent",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "parentIdentifier": "2e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "title",
+ "localizedDescription": {
+ "value": "title"
+ },
+ "definitionID": "3186d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Title",
+ "definitionName": {
+ "value": "Title"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence Content.Title",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 1000,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3186d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContent",
+ "definitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "title",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "93497a91-7e2d-4c5f-8546-fd035fea3e92"
+ },
+ "valueDefinitionID": "3186d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Title",
+ "name": "Title",
+ "setDefinitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContent",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "parentIdentifier": "2e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "uuid",
+ "localizedDescription": {
+ "value": "uuid"
+ },
+ "definitionID": "3286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "UUID",
+ "definitionName": {
+ "value": "UUID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence Content.UUID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContent",
+ "definitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "uuid",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d42586c8-bb5b-46a1-ac88-32fc232dbcc7"
+ },
+ "valueDefinitionID": "3286d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "UUID",
+ "name": "UUID",
+ "setDefinitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContent",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content"
+ },
+ "parentIdentifier": "2e86d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence Content",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 1,
+ "storageLogicalType": "DataExtension",
+ "storageName": "PI_CONTENT",
+ "storageObjectIDs": ["2886d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "db52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "2e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContent",
+ "name": "Predictive Intelligence Content"
+ },
+ {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3252de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedBy",
+ "definitionName": {
+ "value": "Created By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Created By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3252de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedBy",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a64a3ed9-b8fd-46cc-a10b-1d5fdf074ce6"
+ },
+ "valueDefinitionID": "3252de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedBy",
+ "name": "Created By",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedDate",
+ "definitionName": {
+ "value": "Created Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Created Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3352de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "dfc3f6fb-a250-4ef8-93ed-bb079ced468d"
+ },
+ "valueDefinitionID": "3352de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedDate",
+ "name": "Created Date",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3f52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "SubscriptionDefinitionID",
+ "definitionName": {
+ "value": "Keyword"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Keyword",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3f52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 7,
+ "storageName": "_SubscriptionDefinitionID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "c13ab46d-6e65-475a-990d-291bd43e5063"
+ },
+ "valueDefinitionID": "3f52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "SubscriptionDefinitionID",
+ "name": "Keyword",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Phone",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileNumber",
+ "definitionName": {
+ "value": "Mobile Number"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Mobile Number",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 15,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_MobileNumber",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "ead8a6d2-bc6c-4768-a6e3-c3cc749bfc1d"
+ },
+ "valueDefinitionID": "3452de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "MobileNumber",
+ "name": "Mobile Number",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "53dd5f89-bca1-ed11-b852-48df37d1df5b",
+ "definitionKey": "MobileSubscriptionID",
+ "definitionName": {
+ "value": "Mobile Subscription ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Mobile Subscription ID",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_MobileSubscriptionID",
+ "valueDefinitionID": "53dd5f89-bca1-ed11-b852-48df37d1df5b",
+ "valueDefinitionKey": "MobileSubscriptionID",
+ "name": "Mobile Subscription ID",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3552de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedBy",
+ "definitionName": {
+ "value": "Modified By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Modified By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3552de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedBy",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "30d7ec39-85d1-46dc-9888-771f11ffe10d"
+ },
+ "valueDefinitionID": "3552de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedBy",
+ "name": "Modified By",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedDate",
+ "definitionName": {
+ "value": "Modified Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Modified Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "b68155cc-e483-4949-82f9-fb47cbd59764"
+ },
+ "valueDefinitionID": "3652de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedDate",
+ "name": "Modified Date",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3752de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptInDate",
+ "definitionName": {
+ "value": "Opt In Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Opt In Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3752de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptInDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "8da557ee-7ba7-44f4-99ba-0681cbeb1ba1"
+ },
+ "valueDefinitionID": "3752de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptInDate",
+ "name": "Opt In Date",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3852de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptInMethodID",
+ "definitionName": {
+ "value": "Opt In Method"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Opt In Method",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3852de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 2,
+ "storageName": "_OptInMethodID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "da2713ab-a802-4cd6-9e05-0a7444d62388"
+ },
+ "valueDefinitionID": "3852de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptInMethodID",
+ "name": "Opt In Method",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3952de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptInStatusID",
+ "definitionName": {
+ "value": "Opt In Status"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Opt In Status",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3952de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 1,
+ "storageName": "_OptInStatusID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "c733b80d-2ed5-4fb6-94a3-9c996cbae558"
+ },
+ "valueDefinitionID": "3952de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptInStatusID",
+ "name": "Opt In Status",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3a52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptOutDate",
+ "definitionName": {
+ "value": "Opt Out Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Opt Out Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3a52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptOutDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "27c3ccec-47ad-4578-9051-a41f85178049"
+ },
+ "valueDefinitionID": "3a52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptOutDate",
+ "name": "Opt Out Date",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3b52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptOutMethodID",
+ "definitionName": {
+ "value": "Opt Out Method"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 12,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Opt Out Method",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3b52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 12,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 4,
+ "storageName": "_OptOutMethodID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "089b96fc-bfc6-402e-a481-1e18d3e18a8d"
+ },
+ "valueDefinitionID": "3b52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptOutMethodID",
+ "name": "Opt Out Method",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3c52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptOutStatusID",
+ "definitionName": {
+ "value": "Opt Out Status"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 13,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Opt Out Status",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3c52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 13,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 3,
+ "storageName": "_OptOutStatusID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "67194503-acd8-4c1c-b042-9dfb3f3ebd44"
+ },
+ "valueDefinitionID": "3c52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptOutStatusID",
+ "name": "Opt Out Status",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3d52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Source",
+ "definitionName": {
+ "value": "Source"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 14,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Source",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3d52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 14,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 5,
+ "storageName": "_Source",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "2e903257-43e8-4a7b-8ed4-757ca772ddbb"
+ },
+ "valueDefinitionID": "3d52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Source",
+ "name": "Source",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "3e52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "SourceObjectID",
+ "definitionName": {
+ "value": "Source Object ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 15,
+ "fullyQualifiedName": "MobileConnect Subscriptions.Source Object ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3e52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 15,
+ "parentDefinition": {
+ "definitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "MobileSubscriptions",
+ "definitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_SourceObjectId",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "1d4f26f5-ec91-46de-9fc1-d819832f07e7"
+ },
+ "valueDefinitionID": "3e52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "SourceObjectID",
+ "name": "Source Object ID",
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "setDefinitionName": {
+ "value": "MobileConnect Subscriptions"
+ },
+ "parentIdentifier": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "e25893f9-08f3-480f-8def-7f8ab0583611",
+ "applicationKey": "com.exacttarget.mobileconnect",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 2,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "MobileConnect Subscriptions",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 0,
+ "storageLogicalType": "DataExtension",
+ "storageName": "_MobileSubscription",
+ "storageObjectIDs": ["2252de3f-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "7793dc39-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "3152de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "MobileSubscriptions",
+ "name": "MobileConnect Subscriptions"
+ },
+ {
+ "definitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "4486d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence Content Attributes.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "4486d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "parentIdentifier": "3e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "content_id",
+ "localizedDescription": {
+ "value": "content_id"
+ },
+ "definitionID": "4286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Content_ID",
+ "definitionName": {
+ "value": "Content ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence Content Attributes.Content ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "4286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "content_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d1abd045-4670-41f2-a368-9e0a6f732146"
+ },
+ "valueDefinitionID": "4286d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Content_ID",
+ "name": "Content ID",
+ "setDefinitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "parentIdentifier": "3e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "AttribName",
+ "localizedDescription": {
+ "value": "AttribName"
+ },
+ "definitionID": "3f86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_Name",
+ "definitionName": {
+ "value": "Attribute Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence Content Attributes.Attribute Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 1000,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "3f86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "AttribName",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a55251d7-c1c5-49b3-bdc1-8ebdbf7cb517"
+ },
+ "valueDefinitionID": "3f86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_Name",
+ "name": "Attribute Name",
+ "setDefinitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "parentIdentifier": "3e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "AttribValue",
+ "localizedDescription": {
+ "value": "AttribValue"
+ },
+ "definitionID": "4186d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_Value",
+ "definitionName": {
+ "value": "Attribute Value"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence Content Attributes.Attribute Value",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 1000,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "4186d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "AttribValue",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "1742dd68-39af-4da9-ace4-0ad50ae08f05"
+ },
+ "valueDefinitionID": "4186d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_Value",
+ "name": "Attribute Value",
+ "setDefinitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "parentIdentifier": "3e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "updated_at",
+ "localizedDescription": {
+ "value": "updated_at"
+ },
+ "definitionID": "4386d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Updated_At",
+ "definitionName": {
+ "value": "Updated At"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence Content Attributes.Updated At",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "4386d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "updated_at",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4ad58eb4-5e13-4064-ae43-71ab9786be00"
+ },
+ "valueDefinitionID": "4386d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Updated_At",
+ "name": "Updated At",
+ "setDefinitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "parentIdentifier": "3e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "attributeValueIndex",
+ "localizedDescription": {
+ "value": "attributeValueIndex"
+ },
+ "definitionID": "4086d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_Value_Index",
+ "definitionName": {
+ "value": "Attribute Value Index"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Intelligence Content Attributes.Attribute Value Index",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "4086d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelContentAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "attributeValueIndex",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "3635848d-5e04-4fed-95ed-d487202a80b8"
+ },
+ "valueDefinitionID": "4086d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_Value_Index",
+ "name": "Attribute Value Index",
+ "setDefinitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Content Attributes"
+ },
+ "parentIdentifier": "3e86d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence Content Attributes",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 0,
+ "storageLogicalType": "DataExtension",
+ "storageName": "PI_CONTENTATTRIBS",
+ "storageObjectIDs": ["3786d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "dc52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "3e86d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelContentAttribs",
+ "name": "Predictive Intelligence Content Attributes"
+ },
+ {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "5386d645-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "6686d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "6c86d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "5b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Custom_Object_Key",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartEvents.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "5b86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Custom_Object_Key",
+ "name": "Custom Object Key",
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartEvents",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "parentIdentifier": "5286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "user_id",
+ "localizedDescription": {
+ "value": "user_id"
+ },
+ "definitionID": "5a86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "user_id",
+ "definitionName": {
+ "value": "user_id"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartEvents.user_id",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "5a86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "user_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "e6f01b13-78b2-4cf7-956a-7a9a5db31a82"
+ },
+ "valueDefinitionID": "5a86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "user_id",
+ "name": "user_id",
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartEvents",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "parentIdentifier": "5286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "cart_id",
+ "localizedDescription": {
+ "value": "cart_id"
+ },
+ "definitionID": "5386d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Cart_ID",
+ "definitionName": {
+ "value": "Cart ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartEvents.Cart ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "5386d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "cart_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "3f7d9be8-3af9-425b-9537-442a9e389582"
+ },
+ "valueDefinitionID": "5386d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Cart_ID",
+ "name": "Cart ID",
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartEvents",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "parentIdentifier": "5286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "contact_key",
+ "localizedDescription": {
+ "value": "contact_key"
+ },
+ "definitionID": "5586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Contact_Key",
+ "definitionName": {
+ "value": "Contact Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartEvents.Contact Key",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "5586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "contact_key",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "7a8eb4a3-5270-4e28-9562-96067a13a6fd"
+ },
+ "valueDefinitionID": "5586d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Contact_Key",
+ "name": "Contact Key",
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartEvents",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "parentIdentifier": "5286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "currency_type",
+ "localizedDescription": {
+ "value": "currency_type"
+ },
+ "definitionID": "5686d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Currency_Type",
+ "definitionName": {
+ "value": "Currency Type"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartEvents.Currency Type",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "5686d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "currency_type",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "32d910c3-7e8e-4cf6-af31-596b395246f0"
+ },
+ "valueDefinitionID": "5686d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Currency_Type",
+ "name": "Currency Type",
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartEvents",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "parentIdentifier": "5286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "no_items_cart",
+ "localizedDescription": {
+ "value": "no_items_cart"
+ },
+ "definitionID": "5886d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "No_Items_Cart",
+ "definitionName": {
+ "value": "No Items Cart"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartEvents.No Items Cart",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "5886d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "no_items_cart",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "74f890d4-eb4b-46c1-9cd5-f2f89702825d"
+ },
+ "valueDefinitionID": "5886d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "No_Items_Cart",
+ "name": "No Items Cart",
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartEvents",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "parentIdentifier": "5286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "cart_value",
+ "localizedDescription": {
+ "value": "cart_value"
+ },
+ "definitionID": "5486d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Cart_Value",
+ "definitionName": {
+ "value": "Cart Value"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartEvents.Cart Value",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "5486d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 2,
+ "storageName": "cart_value",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "dc3238a5-1546-47b1-95ac-cfebae4bb4b6"
+ },
+ "valueDefinitionID": "5486d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Cart_Value",
+ "name": "Cart Value",
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartEvents",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "parentIdentifier": "5286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "getdate()",
+ "description": "timestamp",
+ "localizedDescription": {
+ "value": "timestamp"
+ },
+ "definitionID": "5986d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Time_Stamp",
+ "definitionName": {
+ "value": "Time Stamp"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartEvents.Time Stamp",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "5986d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "timestamp",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "e8051d08-f6e2-492b-9476-db03d0b4e71b"
+ },
+ "valueDefinitionID": "5986d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Time_Stamp",
+ "name": "Time Stamp",
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartEvents",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "parentIdentifier": "5286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "email_address",
+ "localizedDescription": {
+ "value": "email_address"
+ },
+ "definitionID": "5786d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "email_address",
+ "definitionName": {
+ "value": "email_address"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartEvents.email_address",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "5786d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartEvents",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "email_address",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "1a242f2d-4161-4713-b7b1-6426f26f5157"
+ },
+ "valueDefinitionID": "5786d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "email_address",
+ "name": "email_address",
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartEvents",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartEvents"
+ },
+ "parentIdentifier": "5286d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartEvents",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 1,
+ "storageLogicalType": "DataExtension",
+ "storageName": "PI_ABANDONED_CART_EVENT",
+ "storageObjectIDs": ["4886d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "df52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartEvents",
+ "name": "Predictive Intelligence AbandonedCartEvents"
+ },
+ {
+ "definitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartItems",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "6686d645-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "6686d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "7887d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "6a86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Custom_Object_Key",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartItems.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartItems",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "6a86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Custom_Object_Key",
+ "name": "Custom Object Key",
+ "setDefinitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartItems",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "parentIdentifier": "6586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "sku",
+ "localizedDescription": {
+ "value": "sku"
+ },
+ "definitionID": "6986d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "sku",
+ "definitionName": {
+ "value": "sku"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartItems.sku",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "6986d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartItems",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "sku",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "85feb2dd-3ea4-4e33-93ca-a0b2e129342f"
+ },
+ "valueDefinitionID": "6986d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "sku",
+ "name": "sku",
+ "setDefinitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartItems",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "parentIdentifier": "6586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "cart_id",
+ "localizedDescription": {
+ "value": "cart_id"
+ },
+ "definitionID": "6686d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "cart_id",
+ "definitionName": {
+ "value": "Cart ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartItems.Cart ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "6686d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartItems",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "cart_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "686a5045-b1b9-497f-9226-9e43b5b09906"
+ },
+ "valueDefinitionID": "6686d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "cart_id",
+ "name": "Cart ID",
+ "setDefinitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartItems",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "parentIdentifier": "6586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "price",
+ "localizedDescription": {
+ "value": "price"
+ },
+ "definitionID": "6786d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Price",
+ "definitionName": {
+ "value": "Price"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartItems.Price",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "6786d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartItems",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 2,
+ "storageName": "price",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "9a62ef64-4993-4876-a16c-9786eae6fd53"
+ },
+ "valueDefinitionID": "6786d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Price",
+ "name": "Price",
+ "setDefinitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartItems",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "parentIdentifier": "6586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "quantity",
+ "localizedDescription": {
+ "value": "quantity"
+ },
+ "definitionID": "6886d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Quantity",
+ "definitionName": {
+ "value": "Quantity"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartItems.Quantity",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "6886d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelAbandonedCartItems",
+ "definitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "quantity",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "20d85be0-e56d-4888-b66e-bb8b6466d07c"
+ },
+ "valueDefinitionID": "6886d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Quantity",
+ "name": "Quantity",
+ "setDefinitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartItems",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence AbandonedCartItems"
+ },
+ "parentIdentifier": "6586d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "6586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence AbandonedCartItems",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 1,
+ "storageLogicalType": "DataExtension",
+ "storageName": "PI_ABANDONED_CART_ITEMS",
+ "storageObjectIDs": ["5f86d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "e052de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "6586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelAbandonedCartItems",
+ "name": "Predictive Intelligence AbandonedCartItems"
+ },
+ {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": true,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "9351de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeGroup"
+ },
+ "leftRelationshipIDs": [
+ {
+ "type": "int16",
+ "value": "2"
+ }
+ ],
+ "leftRelationshipReferenceType": "CustomerData",
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "9293dc39-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "7351de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "9651de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "6f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "b452de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ {
+ "leftAttributeID": "7751de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "b552de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "bc52de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "6f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "c752de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ {
+ "leftAttributeID": "7751de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "ca52de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "d052de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "6e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Alias",
+ "definitionName": {
+ "value": "Alias"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "MobilePush Demographics.Alias",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "6e51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Alias",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "dcef58d9-dcaa-4a68-9ecf-6c663a57fb33"
+ },
+ "valueDefinitionID": "6e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Alias",
+ "name": "Alias",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "customerDataID": 7,
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "6f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushAppID",
+ "definitionName": {
+ "value": "Application"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "MobilePush Demographics.Application",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 38,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "6f51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 11,
+ "storageName": "_APID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4e82734e-ff8a-4868-a786-20e9596a94d2"
+ },
+ "valueDefinitionID": "6f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "PushAppID",
+ "name": "Application",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7051de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Badge",
+ "definitionName": {
+ "value": "Badge"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "MobilePush Demographics.Badge",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7051de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Badge",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "ae73cf07-6b58-4ae4-a75e-ccd1d4bdb98f"
+ },
+ "valueDefinitionID": "7051de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Badge",
+ "name": "Badge",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Channel",
+ "definitionName": {
+ "value": "Channel"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "MobilePush Demographics.Channel",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 20,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Channel",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "84490d74-3c83-46b1-8a0b-b073dc45c208"
+ },
+ "valueDefinitionID": "7151de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Channel",
+ "name": "Channel",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7251de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "City",
+ "definitionName": {
+ "value": "City"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "MobilePush Demographics.City",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7251de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_City",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "905b7a96-ba4e-4265-a271-6b8d32fdf56e"
+ },
+ "valueDefinitionID": "7251de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "City",
+ "name": "City",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7351de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ContactID",
+ "definitionName": {
+ "value": "Contact ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "MobilePush Demographics.Contact ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7351de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ContactID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f5c616a4-6ba4-4c3f-a55b-85d12dd41932"
+ },
+ "valueDefinitionID": "7351de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ContactID",
+ "name": "Contact ID",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7451de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedBy",
+ "definitionName": {
+ "value": "Created By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "MobilePush Demographics.Created By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7451de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedBy",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "bf010c22-fd43-4303-a732-aff2510133f8"
+ },
+ "valueDefinitionID": "7451de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedBy",
+ "name": "Created By",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedDate",
+ "definitionName": {
+ "value": "Created Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "MobilePush Demographics.Created Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7551de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "1b450c10-bd4e-448e-ae6f-583ac616cc46"
+ },
+ "valueDefinitionID": "7551de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedDate",
+ "name": "Created Date",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "9151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "MobilePush Demographics.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "9151de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7651de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Device",
+ "definitionName": {
+ "value": "Device"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "MobilePush Demographics.Device",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7651de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Device",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "1aa7b10f-f32a-4620-af79-4210aeacf996"
+ },
+ "valueDefinitionID": "7651de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Device",
+ "name": "Device",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "customerDataID": 6,
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7751de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDeviceID",
+ "definitionName": {
+ "value": "Device ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "MobilePush Demographics.Device ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7751de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_DeviceID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "9d8db1d4-c00e-49bc-98d9-e30d2e3ed7cf"
+ },
+ "valueDefinitionID": "7751de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "PushDeviceID",
+ "name": "Device ID",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7851de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "DeviceType",
+ "definitionName": {
+ "value": "Device Type"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 12,
+ "fullyQualifiedName": "MobilePush Demographics.Device Type",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 20,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7851de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 12,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_DeviceType",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "75f38dcd-559f-4663-8e84-a5f85abc3e0a"
+ },
+ "valueDefinitionID": "7851de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "DeviceType",
+ "name": "Device Type",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7951de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "FirstName",
+ "definitionName": {
+ "value": "First Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 13,
+ "fullyQualifiedName": "MobilePush Demographics.First Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7951de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 13,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_FirstName",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "cf0e8f08-bba3-4ca3-b05c-e1360897f0f6"
+ },
+ "valueDefinitionID": "7951de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "FirstName",
+ "name": "First Name",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7a51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "HardwareID",
+ "definitionName": {
+ "value": "Hardware ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 14,
+ "fullyQualifiedName": "MobilePush Demographics.Hardware ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7a51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 14,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_HardwareId",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a7c7ac11-c93d-4512-ae1b-25e9debbdddc"
+ },
+ "valueDefinitionID": "7a51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "HardwareID",
+ "name": "Hardware ID",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "defaultValue": "False",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "IsHonorDST",
+ "definitionName": {
+ "value": "Is Honor DST"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 15,
+ "fullyQualifiedName": "MobilePush Demographics.Is Honor DST",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 15,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_IsHonorDST",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "e5d1a20d-ec5a-40a2-a474-64513204cbac"
+ },
+ "valueDefinitionID": "7b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "IsHonorDST",
+ "name": "Is Honor DST",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7c51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "LastName",
+ "definitionName": {
+ "value": "Last Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 16,
+ "fullyQualifiedName": "MobilePush Demographics.Last Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7c51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 16,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_LastName",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "92c01cad-907d-48c0-ac6a-691c12d62358"
+ },
+ "valueDefinitionID": "7c51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "LastName",
+ "name": "Last Name",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "LocationEnabled",
+ "definitionName": {
+ "value": "Location Enabled"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 17,
+ "fullyQualifiedName": "MobilePush Demographics.Location Enabled",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 17,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_LocationEnabled",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "30b5144d-9b73-4804-b17b-fbf4d2d03bfe"
+ },
+ "valueDefinitionID": "7d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "LocationEnabled",
+ "name": "Location Enabled",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedBy",
+ "definitionName": {
+ "value": "Modified By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 18,
+ "fullyQualifiedName": "MobilePush Demographics.Modified By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7e51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 18,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedBy",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "46975e48-0dbb-4ec4-91e9-9823aa2a5d0a"
+ },
+ "valueDefinitionID": "7e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedBy",
+ "name": "Modified By",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedDate",
+ "definitionName": {
+ "value": "Modified Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 19,
+ "fullyQualifiedName": "MobilePush Demographics.Modified Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7f51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 19,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4602d692-06de-4974-84e4-e8facfa25be9"
+ },
+ "valueDefinitionID": "7f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedDate",
+ "name": "Modified Date",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8051de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptInDate",
+ "definitionName": {
+ "value": "Opt In Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 20,
+ "fullyQualifiedName": "MobilePush Demographics.Opt In Date",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8051de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 20,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptInDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "68c6681d-6f0f-4ec2-9407-55c5eb19fc19"
+ },
+ "valueDefinitionID": "8051de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptInDate",
+ "name": "Opt In Date",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptInMethodID",
+ "definitionName": {
+ "value": "Opt In Method"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 21,
+ "fullyQualifiedName": "MobilePush Demographics.Opt In Method",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 21,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 9,
+ "storageName": "_OptInMethodID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "8b821a18-6cee-4204-9ef9-18d94112e84f"
+ },
+ "valueDefinitionID": "8151de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptInMethodID",
+ "name": "Opt In Method",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8251de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptInStatusID",
+ "definitionName": {
+ "value": "Opt In Status"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 22,
+ "fullyQualifiedName": "MobilePush Demographics.Opt In Status",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8251de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 22,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 8,
+ "storageName": "_OptInStatusID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "673470b8-8503-4c4c-b9ae-9bf554d0a235"
+ },
+ "valueDefinitionID": "8251de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptInStatusID",
+ "name": "Opt In Status",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8351de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptOutDate",
+ "definitionName": {
+ "value": "Opt Out Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 23,
+ "fullyQualifiedName": "MobilePush Demographics.Opt Out Date",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8351de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 23,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptOutDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "8424262e-6904-4915-a4b3-2957b044b3ee"
+ },
+ "valueDefinitionID": "8351de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptOutDate",
+ "name": "Opt Out Date",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8451de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptOutMethodID",
+ "definitionName": {
+ "value": "Opt Out Method"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 24,
+ "fullyQualifiedName": "MobilePush Demographics.Opt Out Method",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8451de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 24,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 10,
+ "storageName": "_OptOutMethodID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "3919bba5-e953-435d-8874-66be31cb1821"
+ },
+ "valueDefinitionID": "8451de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptOutMethodID",
+ "name": "Opt Out Method",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptOutStatusID",
+ "definitionName": {
+ "value": "Opt Out Status"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 25,
+ "fullyQualifiedName": "MobilePush Demographics.Opt Out Status",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8551de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 25,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptOutStatusID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "df789a9d-cfbc-4ed9-8a2b-e6427a631e28"
+ },
+ "valueDefinitionID": "8551de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptOutStatusID",
+ "name": "Opt Out Status",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8651de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Platform",
+ "definitionName": {
+ "value": "Platform"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 26,
+ "fullyQualifiedName": "MobilePush Demographics.Platform",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8651de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 26,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Platform",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "353dc3ed-7578-4ee1-a1c1-e843f8b487f5"
+ },
+ "valueDefinitionID": "8651de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Platform",
+ "name": "Platform",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8751de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PlatformVersion",
+ "definitionName": {
+ "value": "Platform Version"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 27,
+ "fullyQualifiedName": "MobilePush Demographics.Platform Version",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8751de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 27,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_PlatformVersion",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "99c03236-d908-498f-936a-6b7e110ef76a"
+ },
+ "valueDefinitionID": "8751de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "PlatformVersion",
+ "name": "Platform Version",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8851de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ProviderToken",
+ "definitionName": {
+ "value": "Provider Token"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 28,
+ "fullyQualifiedName": "MobilePush Demographics.Provider Token",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8851de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 28,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ProviderToken",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "03b1ac7c-3cc4-4b82-b3db-7e6b43cefd7c"
+ },
+ "valueDefinitionID": "8851de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ProviderToken",
+ "name": "Provider Token",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8951de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Source",
+ "definitionName": {
+ "value": "Source"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 29,
+ "fullyQualifiedName": "MobilePush Demographics.Source",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8951de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 29,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 12,
+ "storageName": "_Source",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a0c5a9fe-d72b-41dd-9307-77db3da0b9f4"
+ },
+ "valueDefinitionID": "8951de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Source",
+ "name": "Source",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8a51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "SourceObjectID",
+ "definitionName": {
+ "value": "Source Object ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 30,
+ "fullyQualifiedName": "MobilePush Demographics.Source Object ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8a51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 30,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_SourceObjectId",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "020d90c4-4c9c-4a00-b661-5b75ec0c9b88"
+ },
+ "valueDefinitionID": "8a51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "SourceObjectID",
+ "name": "Source Object ID",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "State",
+ "definitionName": {
+ "value": "State"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 31,
+ "fullyQualifiedName": "MobilePush Demographics.State",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8b51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 31,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_State",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "e65c52fd-e623-45cc-bb7a-1842617c5491"
+ },
+ "valueDefinitionID": "8b51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "State",
+ "name": "State",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8c51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Status",
+ "definitionName": {
+ "value": "Status"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 32,
+ "fullyQualifiedName": "MobilePush Demographics.Status",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8c51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 32,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 13,
+ "storageName": "_Status",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a1c13a7c-566e-487f-8cc9-439064b6bfb4"
+ },
+ "valueDefinitionID": "8c51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Status",
+ "name": "Status",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "SystemToken",
+ "definitionName": {
+ "value": "System Token"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 33,
+ "fullyQualifiedName": "MobilePush Demographics.System Token",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 4000,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 33,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_SystemToken",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d7e80e54-124c-4260-986b-b32b58b8c0ee"
+ },
+ "valueDefinitionID": "8d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "SystemToken",
+ "name": "System Token",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "TimeZone",
+ "definitionName": {
+ "value": "Time Zone"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 34,
+ "fullyQualifiedName": "MobilePush Demographics.Time Zone",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 50,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8e51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 34,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_TimeZone",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "980d0010-a443-4044-9ca1-5d1cfeaedec7"
+ },
+ "valueDefinitionID": "8e51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "TimeZone",
+ "name": "Time Zone",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "UTCOffset",
+ "definitionName": {
+ "value": "UTC Offset"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 35,
+ "fullyQualifiedName": "MobilePush Demographics.UTC Offset",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 4,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8f51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 35,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 2,
+ "storageName": "_UTCOffset",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "5c7c2a61-80da-4233-b895-54fd7e957e48"
+ },
+ "valueDefinitionID": "8f51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "UTCOffset",
+ "name": "UTC Offset",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "9051de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ZipCode",
+ "definitionName": {
+ "value": "Zip Code"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 36,
+ "fullyQualifiedName": "MobilePush Demographics.Zip Code",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 20,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "9051de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 36,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ZipCode",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "ac282849-4bc1-4373-8412-16a5d9ab31e4"
+ },
+ "valueDefinitionID": "9051de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ZipCode",
+ "name": "Zip Code",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "08b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "PushAddressExtensionID",
+ "definitionName": {
+ "value": "Push Address Extension ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 37,
+ "fullyQualifiedName": "MobilePush Demographics.Push Address Extension ID",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 37,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "PushAddressExtensionId",
+ "valueDefinitionID": "08b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "PushAddressExtensionID",
+ "name": "Push Address Extension ID",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "09b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "DeviceLanguage",
+ "definitionName": {
+ "value": "Device Language"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 38,
+ "fullyQualifiedName": "MobilePush Demographics.Device Language",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": -1,
+ "ordinal": 38,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "DeviceLanguage",
+ "valueDefinitionID": "09b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "DeviceLanguage",
+ "name": "Device Language",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "0ab0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "GcmSenderId",
+ "definitionName": {
+ "value": "GCM Sender ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 39,
+ "fullyQualifiedName": "MobilePush Demographics.GCM Sender ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": -1,
+ "ordinal": 39,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "GcmSenderId",
+ "valueDefinitionID": "0ab0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "GcmSenderId",
+ "name": "GCM Sender ID",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "0bb0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "AppVersion",
+ "definitionName": {
+ "value": "Application Version"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 40,
+ "fullyQualifiedName": "MobilePush Demographics.Application Version",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": -1,
+ "ordinal": 40,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "AppVersion",
+ "valueDefinitionID": "0bb0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "AppVersion",
+ "name": "Application Version",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "0cb0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "SdkVersion",
+ "definitionName": {
+ "value": "SDK Version"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 41,
+ "fullyQualifiedName": "MobilePush Demographics.SDK Version",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": -1,
+ "ordinal": 41,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "SdkVersion",
+ "valueDefinitionID": "0cb0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "SdkVersion",
+ "name": "SDK Version",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "0db0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "LastAppOpen",
+ "definitionName": {
+ "value": "Last Application Open"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 42,
+ "fullyQualifiedName": "MobilePush Demographics.Last Application Open",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 42,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "LastAppOpen",
+ "valueDefinitionID": "0db0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "LastAppOpen",
+ "name": "Last Application Open",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "0eb0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "LastMessageOpen",
+ "definitionName": {
+ "value": "Last Message Open"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 43,
+ "fullyQualifiedName": "MobilePush Demographics.Last Message Open",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 43,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "LastMessageOpen",
+ "valueDefinitionID": "0eb0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "LastMessageOpen",
+ "name": "Last Message Open",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "0fb0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "LastSend",
+ "definitionName": {
+ "value": "Last Send"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 44,
+ "fullyQualifiedName": "MobilePush Demographics.Last Send",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 44,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "LastSend",
+ "valueDefinitionID": "0fb0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "LastSend",
+ "name": "Last Send",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "10b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "SendCount",
+ "definitionName": {
+ "value": "Send Count"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 45,
+ "fullyQualifiedName": "MobilePush Demographics.Send Count",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 45,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "SendCount",
+ "valueDefinitionID": "10b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "SendCount",
+ "name": "Send Count",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "11b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "MessageOpenCount",
+ "definitionName": {
+ "value": "Message Open Count"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 46,
+ "fullyQualifiedName": "MobilePush Demographics.Message Open Count",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 46,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "MessageOpenCount",
+ "valueDefinitionID": "11b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "MessageOpenCount",
+ "name": "Message Open Count",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "12b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "ProximityEnabled",
+ "definitionName": {
+ "value": "Proximity Enabled"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 47,
+ "fullyQualifiedName": "MobilePush Demographics.Proximity Enabled",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 47,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ProximityEnabled",
+ "valueDefinitionID": "12b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "ProximityEnabled",
+ "name": "Proximity Enabled",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "13b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "BackgroundRefreshEnabled",
+ "definitionName": {
+ "value": "Background Refresh Enabled"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 48,
+ "fullyQualifiedName": "MobilePush Demographics.Background Refresh Enabled",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 48,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "BackgroundRefreshEnabled",
+ "valueDefinitionID": "13b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "BackgroundRefreshEnabled",
+ "name": "Background Refresh Enabled",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "14b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "QuietPushEnabled",
+ "definitionName": {
+ "value": "Quiet Push Enabled"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 49,
+ "fullyQualifiedName": "MobilePush Demographics.Quiet Push Enabled",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 49,
+ "parentDefinition": {
+ "definitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDemographics",
+ "definitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "QuietPushEnabled",
+ "valueDefinitionID": "14b0ae24-ee46-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "QuietPushEnabled",
+ "name": "Quiet Push Enabled",
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "setDefinitionName": {
+ "value": "MobilePush Demographics"
+ },
+ "parentIdentifier": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "2051892d-5de2-4ecf-98af-8ca9a40d2c9c",
+ "applicationKey": "com.exacttarget.mobilepush",
+ "attributeCount": 0,
+ "canAddValues": true,
+ "canChangeValues": true,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 2,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "MobilePush Demographics",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": true,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 3,
+ "sendAttributeStorageName": "_ContactID",
+ "sendContactKeyStorageName": "_SubscriberID",
+ "storageLogicalType": "PushAttributes",
+ "storageName": "_PushAddress",
+ "storageObjectIDs": [
+ "4851de3f-31e2-e611-80cc-1402ec7222b4",
+ "9552de3f-31e2-e611-80cc-1402ec7222b4"
+ ],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "7893dc39-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "6d51de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushDemographics",
+ "name": "MobilePush Demographics"
+ },
+ {
+ "definitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelSessionEnds",
+ "definitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7b86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Custom_Object_Key",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence Session Ends.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelSessionEnds",
+ "definitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "7b86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Custom_Object_Key",
+ "name": "Custom Object Key",
+ "setDefinitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelSessionEnds",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "parentIdentifier": "7586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "user_id",
+ "localizedDescription": {
+ "value": "user_id"
+ },
+ "definitionID": "7a86d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "user_id",
+ "definitionName": {
+ "value": "User Id"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence Session Ends.User Id",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7a86d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelSessionEnds",
+ "definitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "user_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "037a4978-3ce8-4311-95c3-b59d2e3f1a7f"
+ },
+ "valueDefinitionID": "7a86d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "user_id",
+ "name": "User Id",
+ "setDefinitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelSessionEnds",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "parentIdentifier": "7586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "session_id",
+ "localizedDescription": {
+ "value": "session_id"
+ },
+ "definitionID": "7886d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "session_id",
+ "definitionName": {
+ "value": "Session Id"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence Session Ends.Session Id",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7886d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelSessionEnds",
+ "definitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "session_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "67b9fcff-4136-4b07-b5f6-e86d616e4136"
+ },
+ "valueDefinitionID": "7886d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "session_id",
+ "name": "Session Id",
+ "setDefinitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelSessionEnds",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "parentIdentifier": "7586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "email_address",
+ "localizedDescription": {
+ "value": "email_address"
+ },
+ "definitionID": "7786d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "email_address",
+ "definitionName": {
+ "value": "Email Address"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence Session Ends.Email Address",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7786d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelSessionEnds",
+ "definitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "email_address",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "8f1bc9c8-32a3-4b54-83aa-ffb6e56ec709"
+ },
+ "valueDefinitionID": "7786d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "email_address",
+ "name": "Email Address",
+ "setDefinitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelSessionEnds",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "parentIdentifier": "7586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "contact_key",
+ "localizedDescription": {
+ "value": "contact_key"
+ },
+ "definitionID": "7686d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "contact_key",
+ "definitionName": {
+ "value": "Contact Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence Session Ends.Contact Key",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7686d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelSessionEnds",
+ "definitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "contact_key",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "0dc0b53e-ce26-4508-89b2-f9cb0ab8404a"
+ },
+ "valueDefinitionID": "7686d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "contact_key",
+ "name": "Contact Key",
+ "setDefinitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelSessionEnds",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "parentIdentifier": "7586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "getdate()",
+ "description": "timestamp",
+ "localizedDescription": {
+ "value": "timestamp"
+ },
+ "definitionID": "7986d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "timestamp",
+ "definitionName": {
+ "value": "Time stamp"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Intelligence Session Ends.Time stamp",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "7986d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelSessionEnds",
+ "definitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "timestamp",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "0c87ce00-c3f1-4c88-b652-ba8dfc3cc10f"
+ },
+ "valueDefinitionID": "7986d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "timestamp",
+ "name": "Time stamp",
+ "setDefinitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelSessionEnds",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Session Ends"
+ },
+ "parentIdentifier": "7586d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "7586d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence Session Ends",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 0,
+ "storageLogicalType": "DataExtension",
+ "storageName": "PI_SESSION_ENDS",
+ "storageObjectIDs": ["6e86d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "d652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelSessionEnds",
+ "name": "Predictive Intelligence Session Ends"
+ },
+ {
+ "definitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "GroupConnectLineAddress",
+ "definitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": true,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "ab51de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeGroup"
+ },
+ "leftRelationshipIDs": [
+ {
+ "type": "int16",
+ "value": "2"
+ }
+ ],
+ "leftRelationshipReferenceType": "CustomerData",
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "9293dc39-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "7c86d247-3045-ea11-a2e0-1402ec94ec41",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "8686d247-3045-ea11-a2e0-1402ec94ec41",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "7b86d247-3045-ea11-a2e0-1402ec94ec41",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "a251de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "9386d247-3045-ea11-a2e0-1402ec94ec41",
+ "rightItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "7b86d247-3045-ea11-a2e0-1402ec94ec41",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "e651de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "a686d247-3045-ea11-a2e0-1402ec94ec41",
+ "rightItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Text",
+ "customerDataID": 8,
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7b86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "AddressID",
+ "definitionName": {
+ "value": "Address ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "GroupConnect LINE Addresses.Address ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 100,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "GroupConnectLineAddress",
+ "definitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "AddressId",
+ "valueDefinitionID": "7b86d247-3045-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "AddressID",
+ "name": "Address ID",
+ "setDefinitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "setDefinitionKey": "GroupConnectLineAddress",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "parentIdentifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7c86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "ContactID",
+ "definitionName": {
+ "value": "Contact ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "GroupConnect LINE Addresses.Contact ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "GroupConnectLineAddress",
+ "definitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ContactId",
+ "valueDefinitionID": "7c86d247-3045-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "ContactID",
+ "name": "Contact ID",
+ "setDefinitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "setDefinitionKey": "GroupConnectLineAddress",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "parentIdentifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7d86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "ContactKey",
+ "definitionName": {
+ "value": "Contact Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "GroupConnect LINE Addresses.Contact Key",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 100,
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "GroupConnectLineAddress",
+ "definitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ContactKey",
+ "valueDefinitionID": "7d86d247-3045-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "ContactKey",
+ "name": "Contact Key",
+ "setDefinitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "setDefinitionKey": "GroupConnectLineAddress",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "parentIdentifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "defaultValue": "True",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7e86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "IsActive",
+ "definitionName": {
+ "value": "Is Active"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "GroupConnect LINE Addresses.Is Active",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "GroupConnectLineAddress",
+ "definitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "IsActive",
+ "valueDefinitionID": "7e86d247-3045-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "IsActive",
+ "name": "Is Active",
+ "setDefinitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "setDefinitionKey": "GroupConnectLineAddress",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "parentIdentifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "7f86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "CreatedDate",
+ "definitionName": {
+ "value": "Created Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "GroupConnect LINE Addresses.Created Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "GroupConnectLineAddress",
+ "definitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "CreatedDate",
+ "valueDefinitionID": "7f86d247-3045-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "CreatedDate",
+ "name": "Created Date",
+ "setDefinitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "setDefinitionKey": "GroupConnectLineAddress",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "parentIdentifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8086d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "CreatedBy",
+ "definitionName": {
+ "value": "Created By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "GroupConnect LINE Addresses.Created By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "GroupConnectLineAddress",
+ "definitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "CreatedBy",
+ "valueDefinitionID": "8086d247-3045-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "CreatedBy",
+ "name": "Created By",
+ "setDefinitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "setDefinitionKey": "GroupConnectLineAddress",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "parentIdentifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8186d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "ModifiedDate",
+ "definitionName": {
+ "value": "Modified Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "GroupConnect LINE Addresses.Modified Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "GroupConnectLineAddress",
+ "definitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ModifiedDate",
+ "valueDefinitionID": "8186d247-3045-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "ModifiedDate",
+ "name": "Modified Date",
+ "setDefinitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "setDefinitionKey": "GroupConnectLineAddress",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "parentIdentifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8286d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "ModifiedBy",
+ "definitionName": {
+ "value": "Modified By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "GroupConnect LINE Addresses.Modified By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "definitionKey": "GroupConnectLineAddress",
+ "definitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ModifiedBy",
+ "valueDefinitionID": "8286d247-3045-ea11-a2e0-1402ec94ec41",
+ "valueDefinitionKey": "ModifiedBy",
+ "name": "Modified By",
+ "setDefinitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "setDefinitionKey": "GroupConnectLineAddress",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Addresses"
+ },
+ "parentIdentifier": "7a86d247-3045-ea11-a2e0-1402ec94ec41"
+ }
+ ],
+ "applicationID": "4e9519db-ad21-483a-a3fc-8ab4557eded1",
+ "applicationKey": "com.exacttarget.GroupConnect",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "createDate": "2020-02-01T14:20:00",
+ "localizedDescription": {},
+ "fullyQualifiedName": "GroupConnect LINE Addresses",
+ "isCustomObjectBacked": false,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": false,
+ "isSystemDefined": true,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 3,
+ "storageObjectIDs": ["9851de3f-31e2-e611-80cc-1402ec7222b4"],
+ "setDefinitionID": "7a86d247-3045-ea11-a2e0-1402ec94ec41",
+ "setDefinitionKey": "GroupConnectLineAddress",
+ "name": "GroupConnect LINE Addresses"
+ },
+ {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": true,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "e152de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeGroup"
+ },
+ "leftRelationshipIDs": [
+ {
+ "type": "int16",
+ "value": "4"
+ }
+ ],
+ "leftRelationshipReferenceType": "CustomerData",
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "1151de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "9174266c-c416-ec11-b839-48df37d1dc79",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "c80f6472-c416-ec11-b839-48df37d1dc79",
+ "rightItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "9274266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "_CustomObjectKey"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "fullyQualifiedName": "Einstein MC Predictive Scores._CustomObjectKey",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "9274266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "_CustomObjectKey",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "9174266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "Email Address",
+ "definitionName": {
+ "value": "Email Address"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 0,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.Email Address",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "9174266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 0,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "email_address",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "29554274-39da-460d-b721-15badcd533e0"
+ },
+ "valueDefinitionID": "9174266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "Email Address",
+ "name": "Email Address",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8b74266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "Email Open Likelihood",
+ "definitionName": {
+ "value": "Email Open Likelihood"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.Email Open Likelihood",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8b74266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "EmailOpenLikelihood",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "6a64b510-d27a-4d35-9bb4-23760adaa1f4"
+ },
+ "valueDefinitionID": "8b74266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "Email Open Likelihood",
+ "name": "Email Open Likelihood",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8d74266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "Email Click Likelihood",
+ "definitionName": {
+ "value": "Email Click Likelihood"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.Email Click Likelihood",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8d74266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "EmailClickLikelihood",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "6602de48-581e-497a-afae-2f97434db9b4"
+ },
+ "valueDefinitionID": "8d74266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "Email Click Likelihood",
+ "name": "Email Click Likelihood",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8f74266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "Email Open Score",
+ "definitionName": {
+ "value": "Email Open Score"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.Email Open Score",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8f74266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 4,
+ "storageName": "EmailOpenScore",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "5e315b7d-7135-4ffc-8520-8c9ec91e33fa"
+ },
+ "valueDefinitionID": "8f74266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "Email Open Score",
+ "name": "Email Open Score",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8774266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "Email Subscribe Likelihood",
+ "definitionName": {
+ "value": "Email Subscribe Likelihood"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.Email Subscribe Likelihood",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8774266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "EmailSubscribeLikelihood",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "be9bdd26-6875-4c1d-b9cc-64667e9155aa"
+ },
+ "valueDefinitionID": "8774266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "Email Subscribe Likelihood",
+ "name": "Email Subscribe Likelihood",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8e74266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EmailClickScore",
+ "definitionName": {
+ "value": "EmailClickScore"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.EmailClickScore",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8e74266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 4,
+ "storageName": "EmailClickScore",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "64515ffd-067d-4abe-9a4e-c72eb303db0b"
+ },
+ "valueDefinitionID": "8e74266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "EmailClickScore",
+ "name": "EmailClickScore",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8674266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "Email Subscribe Score",
+ "definitionName": {
+ "value": "Email Subscribe Score"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.Email Subscribe Score",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8674266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 4,
+ "storageName": "EmailSubscribeScore",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d392d512-6c6e-40dd-8bbf-a50c36321372"
+ },
+ "valueDefinitionID": "8674266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "Email Subscribe Score",
+ "name": "Email Subscribe Score",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8c74266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EmailEngagementPersona",
+ "definitionName": {
+ "value": "EmailEngagementPersona"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.EmailEngagementPersona",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8c74266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "EmailEngagementPersona",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "67b5a098-1374-4d0a-9ffa-ad9a465eac66"
+ },
+ "valueDefinitionID": "8c74266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "EmailEngagementPersona",
+ "name": "EmailEngagementPersona",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8974266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "Conversion Likelihood",
+ "definitionName": {
+ "value": "Conversion Likelihood"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.Conversion Likelihood",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8974266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ConversionLikelihood",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a293ae7a-dc35-462d-8909-32eccc22fc58"
+ },
+ "valueDefinitionID": "8974266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "Conversion Likelihood",
+ "name": "Conversion Likelihood",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8a74266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "Conversion Score",
+ "definitionName": {
+ "value": "Conversion Score"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.Conversion Score",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8a74266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 4,
+ "storageName": "ConversionScore",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "75a99602-df46-4fcc-a731-1b56c0d24d0e"
+ },
+ "valueDefinitionID": "8a74266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "Conversion Score",
+ "name": "Conversion Score",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "getdate()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "9074266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "Updated Date",
+ "definitionName": {
+ "value": "Updated Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.Updated Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "9074266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 4,
+ "storageName": "UpdatedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4457d74f-2c14-4a3f-baf2-2cc34cf8858b"
+ },
+ "valueDefinitionID": "9074266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "Updated Date",
+ "name": "Updated Date",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "getdate()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8874266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "Created Date",
+ "definitionName": {
+ "value": "Created Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "Einstein MC Predictive Scores.Created Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8874266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "definitionKey": "EinsteinMCPredictiveScores",
+ "definitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 4,
+ "storageName": "CreatedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a4852a5f-2952-4648-911a-452533298dab"
+ },
+ "valueDefinitionID": "8874266c-c416-ec11-b839-48df37d1dc79",
+ "valueDefinitionKey": "Created Date",
+ "name": "Created Date",
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "setDefinitionName": {
+ "value": "Einstein MC Predictive Scores"
+ },
+ "parentIdentifier": "8574266c-c416-ec11-b839-48df37d1dc79"
+ }
+ ],
+ "applicationID": "aed181bc-d7b7-465e-a3dd-9cdfb13943e2",
+ "applicationKey": "com.sfmc-einstein.Einstein Engagement Scoring",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 2,
+ "createdBy": -1000,
+ "createDate": "2021-09-16T02:03:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Einstein MC Predictive Scores",
+ "isCustomObjectBacked": false,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 1,
+ "storageLogicalType": "ExactTargetSchema",
+ "storageName": "Einstein_MC_Predictive_Scores",
+ "storageObjectIDs": ["c90f6472-c416-ec11-b839-48df37d1dc79"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "e5ca7d21-aba6-e811-a2bf-1402ec94ecf1"
+ },
+ "setDefinitionID": "8574266c-c416-ec11-b839-48df37d1dc79",
+ "setDefinitionKey": "EinsteinMCPredictiveScores",
+ "name": "Einstein MC Predictive Scores"
+ },
+ {
+ "definitionID": "9093dc39-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Contact",
+ "definitionName": {
+ "value": "Contact"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": true,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "8f93dc39-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeGroup"
+ },
+ "leftRelationshipIDs": [
+ {
+ "type": "int16",
+ "value": "2"
+ }
+ ],
+ "leftRelationshipReferenceType": "CustomerData",
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "9293dc39-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "9293dc39-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "9893dc39-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "9093dc39-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "customerDataID": 2,
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "9293dc39-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ContactID",
+ "definitionName": {
+ "value": "Contact ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "fullyQualifiedName": "Contact.Contact ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "parentDefinition": {
+ "definitionID": "9093dc39-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Contact",
+ "definitionName": {
+ "value": "Contact"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "SubscriberID",
+ "valueDefinitionID": "9293dc39-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ContactID",
+ "name": "Contact ID",
+ "setDefinitionID": "9093dc39-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "Contact",
+ "setDefinitionName": {
+ "value": "Contact"
+ },
+ "parentIdentifier": "9093dc39-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "customerDataID": 3,
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "9393dc39-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ContactKey",
+ "definitionName": {
+ "value": "Contact Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "fullyQualifiedName": "Contact.Contact Key",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": -1,
+ "parentDefinition": {
+ "definitionID": "9093dc39-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Contact",
+ "definitionName": {
+ "value": "Contact"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "SubscriberKey",
+ "valueDefinitionID": "9393dc39-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ContactKey",
+ "name": "Contact Key",
+ "setDefinitionID": "9093dc39-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "Contact",
+ "setDefinitionName": {
+ "value": "Contact"
+ },
+ "parentIdentifier": "9093dc39-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "customerDataID": 1,
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "9193dc39-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "BusinessUnitID",
+ "definitionName": {
+ "value": "Business Unit ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "fullyQualifiedName": "Contact.Business Unit ID",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "parentDefinition": {
+ "definitionID": "9093dc39-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Contact",
+ "definitionName": {
+ "value": "Contact"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ClientID",
+ "valueDefinitionID": "9193dc39-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "BusinessUnitID",
+ "name": "Business Unit ID",
+ "setDefinitionID": "9093dc39-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "Contact",
+ "setDefinitionName": {
+ "value": "Contact"
+ },
+ "parentIdentifier": "9093dc39-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "ce703ed3-e01f-4f5f-900d-76a95b363e29",
+ "applicationKey": "com.exacttarget.contacts",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "localizedDescription": {},
+ "fullyQualifiedName": "Contact",
+ "isCustomObjectBacked": false,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isSystemDefined": true,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 1,
+ "storageObjectIDs": ["2ba72136-9f31-4a79-ab62-4ba5d19cd759"],
+ "setDefinitionID": "9093dc39-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "Contact",
+ "name": "Contact"
+ },
+ {
+ "definitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineDemographics",
+ "definitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "valueDefinitions": [
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "a251de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "AddressID",
+ "definitionName": {
+ "value": "Address ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "GroupConnect LINE Demographics.Address ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 100,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineDemographics",
+ "definitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "AddressId",
+ "valueDefinitionID": "a251de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "AddressID",
+ "name": "Address ID",
+ "setDefinitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineDemographics",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "parentIdentifier": "a151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "da51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "DisplayName",
+ "definitionName": {
+ "value": "Display Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "GroupConnect LINE Demographics.Display Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineDemographics",
+ "definitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "DisplayName",
+ "valueDefinitionID": "da51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "DisplayName",
+ "name": "Display Name",
+ "setDefinitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineDemographics",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "parentIdentifier": "a151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "db51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PictureUrl",
+ "definitionName": {
+ "value": "Picture Url"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "GroupConnect LINE Demographics.Picture Url",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineDemographics",
+ "definitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "PictureUrl",
+ "valueDefinitionID": "db51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "PictureUrl",
+ "name": "Picture Url",
+ "setDefinitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineDemographics",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "parentIdentifier": "a151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "dc51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "StatusMessage",
+ "definitionName": {
+ "value": "Status Message"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "GroupConnect LINE Demographics.Status Message",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineDemographics",
+ "definitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "StatusMessage",
+ "valueDefinitionID": "dc51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "StatusMessage",
+ "name": "Status Message",
+ "setDefinitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineDemographics",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "parentIdentifier": "a151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "a651de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedDate",
+ "definitionName": {
+ "value": "Created Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "GroupConnect LINE Demographics.Created Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineDemographics",
+ "definitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "CreatedDate",
+ "valueDefinitionID": "a651de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedDate",
+ "name": "Created Date",
+ "setDefinitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineDemographics",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "parentIdentifier": "a151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "a751de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedBy",
+ "definitionName": {
+ "value": "Created By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "GroupConnect LINE Demographics.Created By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineDemographics",
+ "definitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "CreatedBy",
+ "valueDefinitionID": "a751de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedBy",
+ "name": "Created By",
+ "setDefinitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineDemographics",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "parentIdentifier": "a151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "a851de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedDate",
+ "definitionName": {
+ "value": "Modified Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "GroupConnect LINE Demographics.Modified Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineDemographics",
+ "definitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ModifiedDate",
+ "valueDefinitionID": "a851de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedDate",
+ "name": "Modified Date",
+ "setDefinitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineDemographics",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "parentIdentifier": "a151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "a951de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedBy",
+ "definitionName": {
+ "value": "Modified By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "GroupConnect LINE Demographics.Modified By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineDemographics",
+ "definitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ModifiedBy",
+ "valueDefinitionID": "a951de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedBy",
+ "name": "Modified By",
+ "setDefinitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineDemographics",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Demographics"
+ },
+ "parentIdentifier": "a151de3f-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "4e9519db-ad21-483a-a3fc-8ab4557eded1",
+ "applicationKey": "com.exacttarget.GroupConnect",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "localizedDescription": {},
+ "fullyQualifiedName": "GroupConnect LINE Demographics",
+ "isCustomObjectBacked": false,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": false,
+ "isSystemDefined": true,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 0,
+ "storageObjectIDs": [
+ "9851de3f-31e2-e611-80cc-1402ec7222b4",
+ "d351de3f-31e2-e611-80cc-1402ec7222b4"
+ ],
+ "setDefinitionID": "a151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineDemographics",
+ "name": "GroupConnect LINE Demographics"
+ },
+ {
+ "definitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelScores",
+ "definitionName": {
+ "value": "Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": true,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "e152de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeGroup"
+ },
+ "leftRelationshipIDs": [
+ {
+ "type": "int16",
+ "value": "3"
+ }
+ ],
+ "leftRelationshipReferenceType": "CustomerData",
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "9393dc39-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "a585d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "a985d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "a785d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Scores.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelScores",
+ "definitionName": {
+ "value": "Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "a785d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelScores",
+ "setDefinitionName": {
+ "value": "Predictive Scores"
+ },
+ "parentIdentifier": "a185d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "subscriber_key",
+ "localizedDescription": {
+ "value": "subscriber_key"
+ },
+ "definitionID": "a585d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Subscriber Key",
+ "definitionName": {
+ "value": "Subscriber Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Scores.Subscriber Key",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "a585d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelScores",
+ "definitionName": {
+ "value": "Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "subscriber_key",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f6ce2639-bfff-40c0-835c-9fa89e627592"
+ },
+ "valueDefinitionID": "a585d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Subscriber Key",
+ "name": "Subscriber Key",
+ "setDefinitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelScores",
+ "setDefinitionName": {
+ "value": "Predictive Scores"
+ },
+ "parentIdentifier": "a185d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "goal_name",
+ "localizedDescription": {
+ "value": "goal_name"
+ },
+ "definitionID": "a285d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Goal Name",
+ "definitionName": {
+ "value": "Goal Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Scores.Goal Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "a285d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelScores",
+ "definitionName": {
+ "value": "Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "goal_name",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "62f73dda-4116-4fdd-ae38-a5cb74fafc6b"
+ },
+ "valueDefinitionID": "a285d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Goal Name",
+ "name": "Goal Name",
+ "setDefinitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelScores",
+ "setDefinitionName": {
+ "value": "Predictive Scores"
+ },
+ "parentIdentifier": "a185d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "goal_name_key",
+ "localizedDescription": {
+ "value": "goal_name_key"
+ },
+ "definitionID": "a385d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Goal Name Key",
+ "definitionName": {
+ "value": "Goal Name Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Scores.Goal Name Key",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "a385d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelScores",
+ "definitionName": {
+ "value": "Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "goal_name_key",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "5c34b4cc-5d35-460e-a0b7-ba8e349d725b"
+ },
+ "valueDefinitionID": "a385d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Goal Name Key",
+ "name": "Goal Name Key",
+ "setDefinitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelScores",
+ "setDefinitionName": {
+ "value": "Predictive Scores"
+ },
+ "parentIdentifier": "a185d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "score",
+ "localizedDescription": {
+ "value": "score"
+ },
+ "definitionID": "a485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Score",
+ "definitionName": {
+ "value": "Score"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Scores.Score",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "a485d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelScores",
+ "definitionName": {
+ "value": "Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 4,
+ "storageName": "score",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "8baf5deb-f215-4984-9d91-6e05b88c2f94"
+ },
+ "valueDefinitionID": "a485d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Score",
+ "name": "Score",
+ "setDefinitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelScores",
+ "setDefinitionName": {
+ "value": "Predictive Scores"
+ },
+ "parentIdentifier": "a185d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "updated_at",
+ "localizedDescription": {
+ "value": "updated_at"
+ },
+ "definitionID": "a685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Updated At",
+ "definitionName": {
+ "value": "Updated At"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Scores.Updated At",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "a685d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelScores",
+ "definitionName": {
+ "value": "Predictive Scores"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "updated_at",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d6fefe2f-e2d5-42bb-bee2-5dd8da16b8e4"
+ },
+ "valueDefinitionID": "a685d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Updated At",
+ "name": "Updated At",
+ "setDefinitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelScores",
+ "setDefinitionName": {
+ "value": "Predictive Scores"
+ },
+ "parentIdentifier": "a185d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "a185d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Scores",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 1,
+ "storageLogicalType": "DataExtension",
+ "storageName": "PREDICTIVE_SCORES",
+ "storageObjectIDs": ["9a85d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "de52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "a185d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelScores",
+ "name": "Predictive Scores"
+ },
+ {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": true,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "b451de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeGroup"
+ },
+ "leftRelationshipIDs": [
+ {
+ "type": "int16",
+ "value": "2"
+ }
+ ],
+ "leftRelationshipReferenceType": "CustomerData",
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "9293dc39-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "b351de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "b751de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b351de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ContactsID",
+ "definitionName": {
+ "value": "Contacts ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 0,
+ "fullyQualifiedName": "Email Demographics.Contacts ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": true,
+ "ordinal": 0,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_SubscriberID",
+ "valueDefinitionID": "b351de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ContactsID",
+ "name": "Contacts ID",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b4e96cfc-85f7-e611-80cc-1402ec7222b4",
+ "definitionKey": "First Name",
+ "definitionName": {
+ "value": "First Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Email Demographics.First Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b4e96cfc-85f7-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "First Name",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "eef81ae9-14e8-47b3-bede-5a691614c7c3"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10025"
+ },
+ "valueDefinitionID": "b4e96cfc-85f7-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "First Name",
+ "name": "First Name",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b6e96cfc-85f7-e611-80cc-1402ec7222b4",
+ "definitionKey": "Last Name",
+ "definitionName": {
+ "value": "Last Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Email Demographics.Last Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b6e96cfc-85f7-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Last Name",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4434d534-4fb8-4ec4-9ffc-fe386781f8ef"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10026"
+ },
+ "valueDefinitionID": "b6e96cfc-85f7-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Last Name",
+ "name": "Last Name",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b2e96cfc-85f7-e611-80cc-1402ec7222b4",
+ "definitionKey": "Language",
+ "definitionName": {
+ "value": "Language"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Email Demographics.Language",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 50,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b2e96cfc-85f7-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Language",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4b06d940-5f23-461f-859d-9c2aeee53525"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10027"
+ },
+ "valueDefinitionID": "b2e96cfc-85f7-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Language",
+ "name": "Language",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "720e6c78-9709-e711-80cc-1402ec7222b4",
+ "definitionKey": "Transaction Points1",
+ "definitionName": {
+ "value": "Transaction Points"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Email Demographics.Transaction Points",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "720e6c78-9709-e711-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Transaction Points",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "fdcb28a8-59fd-489a-bdce-b286bccc147e"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10033"
+ },
+ "valueDefinitionID": "720e6c78-9709-e711-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Transaction Points1",
+ "name": "Transaction Points",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "f05cc16f-8a14-e711-80cc-1402ec7222b4",
+ "definitionKey": "Market",
+ "definitionName": {
+ "value": "Market"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "Email Demographics.Market",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 50,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f05cc16f-8a14-e711-80cc-1402ec7222b4"
+ },
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Market",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d6f80d57-488f-401b-822b-1b556d631d1c"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10034"
+ },
+ "valueDefinitionID": "f05cc16f-8a14-e711-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Market",
+ "name": "Market",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "32c8b204-85ff-e711-80d0-1402ec7222b5",
+ "definitionKey": "SFOrg",
+ "definitionName": {
+ "value": "SFOrg"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "Email Demographics.SFOrg",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 50,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "32c8b204-85ff-e711-80d0-1402ec7222b5"
+ },
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "SFOrg",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "5d1032d3-5c92-4de4-bfb8-0e377f4483e2"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10081"
+ },
+ "valueDefinitionID": "32c8b204-85ff-e711-80d0-1402ec7222b5",
+ "valueDefinitionKey": "SFOrg",
+ "name": "SFOrg",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "8775d770-e194-e911-a2cf-1402ec94ecf1",
+ "definitionKey": "Username",
+ "definitionName": {
+ "value": "Username"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "Email Demographics.Username",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 255,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "8775d770-e194-e911-a2cf-1402ec94ecf1"
+ },
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Username",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "55ac244c-2afd-4134-8495-9c1c188debdc"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10299"
+ },
+ "valueDefinitionID": "8775d770-e194-e911-a2cf-1402ec94ecf1",
+ "valueDefinitionKey": "Username",
+ "name": "Username",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "570dea88-6e94-ea11-a2e5-1402ec9386e5",
+ "definitionKey": "Account Id",
+ "definitionName": {
+ "value": "Account Id"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "Email Demographics.Account Id",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 50,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "570dea88-6e94-ea11-a2e5-1402ec9386e5"
+ },
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Account Id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "eb2f7e92-f7f8-435c-835a-3c24d5e003d5"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10334"
+ },
+ "valueDefinitionID": "570dea88-6e94-ea11-a2e5-1402ec9386e5",
+ "valueDefinitionKey": "Account Id",
+ "name": "Account Id",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "74c1c047-9e94-ea11-a2e5-1402ec9386e5",
+ "definitionKey": "AccountId",
+ "definitionName": {
+ "value": "AccountId"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "Email Demographics.AccountId",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 50,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "74c1c047-9e94-ea11-a2e5-1402ec9386e5"
+ },
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Account Id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "eb2f7e92-f7f8-435c-835a-3c24d5e003d5"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10334"
+ },
+ "valueDefinitionID": "74c1c047-9e94-ea11-a2e5-1402ec9386e5",
+ "valueDefinitionKey": "AccountId",
+ "name": "AccountId",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "560dea88-6e94-ea11-a2e5-1402ec9386e5",
+ "definitionKey": "Preferred language",
+ "definitionName": {
+ "value": "Preferred language"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 12,
+ "fullyQualifiedName": "Email Demographics.Preferred language",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 50,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "560dea88-6e94-ea11-a2e5-1402ec9386e5"
+ },
+ "ordinal": 12,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Preferred language",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "be1fac02-93ef-4c9e-b06d-22757e1aeda8"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10336"
+ },
+ "valueDefinitionID": "560dea88-6e94-ea11-a2e5-1402ec9386e5",
+ "valueDefinitionKey": "Preferred language",
+ "name": "Preferred language",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "550dea88-6e94-ea11-a2e5-1402ec9386e5",
+ "definitionKey": "Flex Parameter 1",
+ "definitionName": {
+ "value": "Flex Parameter 1"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 13,
+ "fullyQualifiedName": "Email Demographics.Flex Parameter 1",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "550dea88-6e94-ea11-a2e5-1402ec9386e5"
+ },
+ "ordinal": 13,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Flex Parameter 1",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "96436704-494e-4bb1-914a-3ad6994bbf2d"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10337"
+ },
+ "valueDefinitionID": "550dea88-6e94-ea11-a2e5-1402ec9386e5",
+ "valueDefinitionKey": "Flex Parameter 1",
+ "name": "Flex Parameter 1",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "866d4451-7d94-ea11-a2e5-1402ec9386e5",
+ "definitionKey": "Flex Parameter 2",
+ "definitionName": {
+ "value": "Flex Parameter 2"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 14,
+ "fullyQualifiedName": "Email Demographics.Flex Parameter 2",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "866d4451-7d94-ea11-a2e5-1402ec9386e5"
+ },
+ "ordinal": 14,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Flex Parameter 2",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "02a5b26c-05f6-426b-8735-de6033503f8f"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10338"
+ },
+ "valueDefinitionID": "866d4451-7d94-ea11-a2e5-1402ec9386e5",
+ "valueDefinitionKey": "Flex Parameter 2",
+ "name": "Flex Parameter 2",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "876d4451-7d94-ea11-a2e5-1402ec9386e5",
+ "definitionKey": "Flex Parameter 3",
+ "definitionName": {
+ "value": "Flex Parameter 3"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 15,
+ "fullyQualifiedName": "Email Demographics.Flex Parameter 3",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "876d4451-7d94-ea11-a2e5-1402ec9386e5"
+ },
+ "ordinal": 15,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Flex Parameter 3",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "058f7489-c272-466c-88ce-b528b5b17955"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10339"
+ },
+ "valueDefinitionID": "876d4451-7d94-ea11-a2e5-1402ec9386e5",
+ "valueDefinitionKey": "Flex Parameter 3",
+ "name": "Flex Parameter 3",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "886d4451-7d94-ea11-a2e5-1402ec9386e5",
+ "definitionKey": "Flex Parameter 4",
+ "definitionName": {
+ "value": "Flex Parameter 4"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 16,
+ "fullyQualifiedName": "Email Demographics.Flex Parameter 4",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "886d4451-7d94-ea11-a2e5-1402ec9386e5"
+ },
+ "ordinal": 16,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Flex Parameter 4",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "2702b318-539d-4fe3-9c52-c7ba3e32a949"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10340"
+ },
+ "valueDefinitionID": "886d4451-7d94-ea11-a2e5-1402ec9386e5",
+ "valueDefinitionKey": "Flex Parameter 4",
+ "name": "Flex Parameter 4",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 2,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "1a4f88cd-a194-ea11-a2e5-1402ec9386e5",
+ "definitionKey": "Contact Role",
+ "definitionName": {
+ "value": "Contact Role"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 17,
+ "fullyQualifiedName": "Email Demographics.Contact Role",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "1a4f88cd-a194-ea11-a2e5-1402ec9386e5"
+ },
+ "ordinal": 17,
+ "parentDefinition": {
+ "definitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "EmailDemographics",
+ "definitionName": {
+ "value": "Email Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Contact Role",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f3412d1f-bf50-4e3a-8db8-7e1bc15e019b"
+ },
+ "storageFieldValueID": {
+ "type": "int32",
+ "value": "10341"
+ },
+ "valueDefinitionID": "1a4f88cd-a194-ea11-a2e5-1402ec9386e5",
+ "valueDefinitionKey": "Contact Role",
+ "name": "Contact Role",
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "setDefinitionName": {
+ "value": "Email Demographics"
+ },
+ "parentIdentifier": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "b2ca1f50-3cc4-4fd7-a3a3-88bf09fb59fa",
+ "applicationKey": "com.exacttarget.email",
+ "attributeCount": 0,
+ "canAddValues": true,
+ "canChangeValues": true,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 2,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 0,
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Email Demographics",
+ "isCustomObjectBacked": false,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 1,
+ "storageLogicalType": "EnterpriseAttributes",
+ "storageName": "_EnterpriseAttribute",
+ "storageObjectIDs": ["b051de3f-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "1ba7e67d-2647-4537-beb3-b0c5bac65d3c"
+ },
+ "setDefinitionID": "b151de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "EmailDemographics",
+ "name": "Email Demographics"
+ },
+ {
+ "definitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "b485d645-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "7886d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "7d86d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "7586d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "b585d645-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "c885d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "cd85d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b885d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence Product Views.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "b885d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "parentIdentifier": "b285d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "sku",
+ "localizedDescription": {
+ "value": "sku"
+ },
+ "definitionID": "b585d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "SKU",
+ "definitionName": {
+ "value": "SKU"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence Product Views.SKU",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b585d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "sku",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f8553b64-8076-449d-aea0-450aed1a793c"
+ },
+ "valueDefinitionID": "b585d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "SKU",
+ "name": "SKU",
+ "setDefinitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "parentIdentifier": "b285d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "user_id",
+ "localizedDescription": {
+ "value": "user_id"
+ },
+ "definitionID": "b785d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "User_ID",
+ "definitionName": {
+ "value": "User ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence Product Views.User ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b785d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "user_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f8e9c116-3218-4064-92e4-dcccaf730a4f"
+ },
+ "valueDefinitionID": "b785d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "User_ID",
+ "name": "User ID",
+ "setDefinitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "parentIdentifier": "b285d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "session_id",
+ "localizedDescription": {
+ "value": "session_id"
+ },
+ "definitionID": "b485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Session_ID",
+ "definitionName": {
+ "value": "Session ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence Product Views.Session ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b485d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "session_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "bbca44f6-6353-464d-aba1-4285ae5072b6"
+ },
+ "valueDefinitionID": "b485d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Session_ID",
+ "name": "Session ID",
+ "setDefinitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "parentIdentifier": "b285d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Search",
+ "localizedDescription": {
+ "value": "Search"
+ },
+ "definitionID": "b385d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Search",
+ "definitionName": {
+ "value": "Search"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence Product Views.Search",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 1000,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b385d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Search",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "68949690-06d5-452d-b4c7-b8daab2f3681"
+ },
+ "valueDefinitionID": "b385d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Search",
+ "name": "Search",
+ "setDefinitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "parentIdentifier": "b285d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "Timestamp",
+ "localizedDescription": {
+ "value": "Timestamp"
+ },
+ "definitionID": "b685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Timestamp",
+ "definitionName": {
+ "value": "Timestamp"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Intelligence Product Views.Timestamp",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b685d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductViews",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Timestamp",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4fb7775d-277f-4f87-ba60-da24b120ba49"
+ },
+ "valueDefinitionID": "b685d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Timestamp",
+ "name": "Timestamp",
+ "setDefinitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductViews",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Views"
+ },
+ "parentIdentifier": "b285d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "b285d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence Product Views",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 2,
+ "storageLogicalType": "DataExtension",
+ "storageName": "IGO_VIEWS",
+ "storageObjectIDs": ["ab85d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "d552de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductViews",
+ "name": "Predictive Intelligence Product Views"
+ },
+ {
+ "definitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushSubscriptions",
+ "definitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "valueDefinitions": [
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushAppID",
+ "definitionName": {
+ "value": "Application"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "MobilePush Subscriptions.Application",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 38,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushSubscriptions",
+ "definitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 11,
+ "storageName": "_APID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4e82734e-ff8a-4868-a786-20e9596a94d2"
+ },
+ "valueDefinitionID": "b452de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "PushAppID",
+ "name": "Application",
+ "setDefinitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushSubscriptions",
+ "setDefinitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "parentIdentifier": "b352de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "bb52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "MobilePush Subscriptions.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushSubscriptions",
+ "definitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "bb52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushSubscriptions",
+ "setDefinitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "parentIdentifier": "b352de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b552de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDeviceID",
+ "definitionName": {
+ "value": "Device ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "MobilePush Subscriptions.Device ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b552de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushSubscriptions",
+ "definitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_DeviceID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "9d8db1d4-c00e-49bc-98d9-e30d2e3ed7cf"
+ },
+ "valueDefinitionID": "b552de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "PushDeviceID",
+ "name": "Device ID",
+ "setDefinitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushSubscriptions",
+ "setDefinitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "parentIdentifier": "b352de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptInDate",
+ "definitionName": {
+ "value": "Opt In Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 20,
+ "fullyQualifiedName": "MobilePush Subscriptions.Opt In Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 20,
+ "parentDefinition": {
+ "definitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushSubscriptions",
+ "definitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptInDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "68c6681d-6f0f-4ec2-9407-55c5eb19fc19"
+ },
+ "valueDefinitionID": "b652de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptInDate",
+ "name": "Opt In Date",
+ "setDefinitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushSubscriptions",
+ "setDefinitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "parentIdentifier": "b352de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b752de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptInMethodID",
+ "definitionName": {
+ "value": "Opt In Method"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 21,
+ "fullyQualifiedName": "MobilePush Subscriptions.Opt In Method",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b752de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 21,
+ "parentDefinition": {
+ "definitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushSubscriptions",
+ "definitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 9,
+ "storageName": "_OptInMethodID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "8b821a18-6cee-4204-9ef9-18d94112e84f"
+ },
+ "valueDefinitionID": "b752de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptInMethodID",
+ "name": "Opt In Method",
+ "setDefinitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushSubscriptions",
+ "setDefinitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "parentIdentifier": "b352de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b852de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptInStatusID",
+ "definitionName": {
+ "value": "Opt In Status"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 22,
+ "fullyQualifiedName": "MobilePush Subscriptions.Opt In Status",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b852de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 22,
+ "parentDefinition": {
+ "definitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushSubscriptions",
+ "definitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 8,
+ "storageName": "_OptInStatusID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "673470b8-8503-4c4c-b9ae-9bf554d0a235"
+ },
+ "valueDefinitionID": "b852de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptInStatusID",
+ "name": "Opt In Status",
+ "setDefinitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushSubscriptions",
+ "setDefinitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "parentIdentifier": "b352de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "b952de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptOutDate",
+ "definitionName": {
+ "value": "Opt Out Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 23,
+ "fullyQualifiedName": "MobilePush Subscriptions.Opt Out Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "b952de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 23,
+ "parentDefinition": {
+ "definitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushSubscriptions",
+ "definitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptOutDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "8424262e-6904-4915-a4b3-2957b044b3ee"
+ },
+ "valueDefinitionID": "b952de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptOutDate",
+ "name": "Opt Out Date",
+ "setDefinitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushSubscriptions",
+ "setDefinitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "parentIdentifier": "b352de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "ba52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "OptOutMethodID",
+ "definitionName": {
+ "value": "Opt Out Method"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 24,
+ "fullyQualifiedName": "MobilePush Subscriptions.Opt Out Method",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "ba52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 24,
+ "parentDefinition": {
+ "definitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushSubscriptions",
+ "definitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 10,
+ "storageName": "_OptOutMethodID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "3919bba5-e953-435d-8874-66be31cb1821"
+ },
+ "valueDefinitionID": "ba52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "OptOutMethodID",
+ "name": "Opt Out Method",
+ "setDefinitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushSubscriptions",
+ "setDefinitionName": {
+ "value": "MobilePush Subscriptions"
+ },
+ "parentIdentifier": "b352de3f-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "2051892d-5de2-4ecf-98af-8ca9a40d2c9c",
+ "applicationKey": "com.exacttarget.mobilepush",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 2,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "setDefinitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "MobilePush Subscriptions",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 0,
+ "sendAttributeStorageName": "_ContactID",
+ "sendContactKeyStorageName": "_SubscriberID",
+ "storageLogicalType": "PushAttributes",
+ "storageName": "_PushAddress",
+ "storageObjectIDs": ["4851de3f-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "7893dc39-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "b352de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushSubscriptions",
+ "name": "MobilePush Subscriptions"
+ },
+ {
+ "definitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProducts",
+ "definitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "c885d645-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "da85d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "de85d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "cb85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence Products.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProducts",
+ "definitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "cb85d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProducts",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "parentIdentifier": "c485d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "name",
+ "localizedDescription": {
+ "value": "name"
+ },
+ "definitionID": "c585d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Name",
+ "definitionName": {
+ "value": "Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence Products.Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 1000,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "c585d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProducts",
+ "definitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "name",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "116f93a1-da7c-4b0a-876c-7f6f107881c5"
+ },
+ "valueDefinitionID": "c585d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Name",
+ "name": "Name",
+ "setDefinitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProducts",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "parentIdentifier": "c485d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "regPrice",
+ "localizedDescription": {
+ "value": "regPrice"
+ },
+ "definitionID": "c685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Regular_Price",
+ "definitionName": {
+ "value": "Regular Price"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence Products.Regular Price",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "c685d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProducts",
+ "definitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 2,
+ "storageName": "regPrice",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d651f3d5-5b32-4fd7-907d-2d6caf42f827"
+ },
+ "valueDefinitionID": "c685d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Regular_Price",
+ "name": "Regular Price",
+ "setDefinitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProducts",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "parentIdentifier": "c485d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "salePrice",
+ "localizedDescription": {
+ "value": "salePrice"
+ },
+ "definitionID": "c785d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Sale_Price",
+ "definitionName": {
+ "value": "Sale Price"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence Products.Sale Price",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "c785d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProducts",
+ "definitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 2,
+ "storageName": "salePrice",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "b10ebf49-6195-40c2-beaa-810d2c5b39d4"
+ },
+ "valueDefinitionID": "c785d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Sale_Price",
+ "name": "Sale Price",
+ "setDefinitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProducts",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "parentIdentifier": "c485d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Uuid",
+ "localizedDescription": {
+ "value": "Uuid"
+ },
+ "definitionID": "ca85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "UUID",
+ "definitionName": {
+ "value": "UUID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence Products.UUID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "ca85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProducts",
+ "definitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Uuid",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "7fc0495c-f03d-496a-a74d-770a9e672518"
+ },
+ "valueDefinitionID": "ca85d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "UUID",
+ "name": "UUID",
+ "setDefinitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProducts",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "parentIdentifier": "c485d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "sku",
+ "localizedDescription": {
+ "value": "sku"
+ },
+ "definitionID": "c885d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "SKU",
+ "definitionName": {
+ "value": "SKU"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Intelligence Products.SKU",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "c885d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProducts",
+ "definitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "sku",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "603870ea-b2e0-4613-bb22-08f582f34a94"
+ },
+ "valueDefinitionID": "c885d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "SKU",
+ "name": "SKU",
+ "setDefinitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProducts",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "parentIdentifier": "c485d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "type",
+ "localizedDescription": {
+ "value": "type"
+ },
+ "definitionID": "c985d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Type",
+ "definitionName": {
+ "value": "Type"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "Predictive Intelligence Products.Type",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 50,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "c985d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProducts",
+ "definitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "type",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "9f3e8ffe-c631-4397-ab2e-8cbc50d7f6c1"
+ },
+ "valueDefinitionID": "c985d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Type",
+ "name": "Type",
+ "setDefinitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProducts",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Products"
+ },
+ "parentIdentifier": "c485d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "c485d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence Products",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 1,
+ "storageLogicalType": "DataExtension",
+ "storageName": "IGO_PRODUCTS",
+ "storageObjectIDs": ["bc85d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "d852de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProducts",
+ "name": "Predictive Intelligence Products"
+ },
+ {
+ "definitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushTags",
+ "definitionName": {
+ "value": "MobilePush Tags"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "valueDefinitions": [
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "c752de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushAppID",
+ "definitionName": {
+ "value": "Application"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "MobilePush Tags.Application",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 38,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "c752de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushTags",
+ "definitionName": {
+ "value": "MobilePush Tags"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 11,
+ "storageName": "_APID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "7f711754-1b97-4c7d-86d8-507f9fcb877d"
+ },
+ "valueDefinitionID": "c752de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "PushAppID",
+ "name": "Application",
+ "setDefinitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushTags",
+ "setDefinitionName": {
+ "value": "MobilePush Tags"
+ },
+ "parentIdentifier": "c652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "ce52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "MobilePush Tags.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushTags",
+ "definitionName": {
+ "value": "MobilePush Tags"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "ce52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushTags",
+ "setDefinitionName": {
+ "value": "MobilePush Tags"
+ },
+ "parentIdentifier": "c652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "c852de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedBy",
+ "definitionName": {
+ "value": "Created By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "MobilePush Tags.Created By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "c852de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushTags",
+ "definitionName": {
+ "value": "MobilePush Tags"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedBy",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "dbc7917c-95cd-4294-b116-eb215d1c5c0b"
+ },
+ "valueDefinitionID": "c852de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedBy",
+ "name": "Created By",
+ "setDefinitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushTags",
+ "setDefinitionName": {
+ "value": "MobilePush Tags"
+ },
+ "parentIdentifier": "c652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "c952de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedDate",
+ "definitionName": {
+ "value": "Created Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "MobilePush Tags.Created Date",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "c952de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushTags",
+ "definitionName": {
+ "value": "MobilePush Tags"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "30e22e41-0415-4d8a-b817-c56b0bffa168"
+ },
+ "valueDefinitionID": "c952de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedDate",
+ "name": "Created Date",
+ "setDefinitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushTags",
+ "setDefinitionName": {
+ "value": "MobilePush Tags"
+ },
+ "parentIdentifier": "c652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "ca52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushDeviceID",
+ "definitionName": {
+ "value": "Device ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "MobilePush Tags.Device ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "ca52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushTags",
+ "definitionName": {
+ "value": "MobilePush Tags"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_DeviceID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "ee23b0fd-76ad-46b5-9e14-aef0e17ec28f"
+ },
+ "valueDefinitionID": "ca52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "PushDeviceID",
+ "name": "Device ID",
+ "setDefinitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushTags",
+ "setDefinitionName": {
+ "value": "MobilePush Tags"
+ },
+ "parentIdentifier": "c652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "cb52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedBy",
+ "definitionName": {
+ "value": "Modified By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "MobilePush Tags.Modified By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "cb52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushTags",
+ "definitionName": {
+ "value": "MobilePush Tags"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedBy",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "36b8827e-6017-4cba-bd0f-ba2261480736"
+ },
+ "valueDefinitionID": "cb52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedBy",
+ "name": "Modified By",
+ "setDefinitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushTags",
+ "setDefinitionName": {
+ "value": "MobilePush Tags"
+ },
+ "parentIdentifier": "c652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "cc52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedDate",
+ "definitionName": {
+ "value": "Modified Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "MobilePush Tags.Modified Date",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "cc52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushTags",
+ "definitionName": {
+ "value": "MobilePush Tags"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "685ea0db-0ecb-4111-8676-0a7c0a29c79f"
+ },
+ "valueDefinitionID": "cc52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedDate",
+ "name": "Modified Date",
+ "setDefinitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushTags",
+ "setDefinitionName": {
+ "value": "MobilePush Tags"
+ },
+ "parentIdentifier": "c652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "cd52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Value",
+ "definitionName": {
+ "value": "Value"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "MobilePush Tags.Value",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 128,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "cd52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PushTags",
+ "definitionName": {
+ "value": "MobilePush Tags"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Value",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "cd7e2a3c-2551-4518-96c7-5c6b0d42423e"
+ },
+ "valueDefinitionID": "cd52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Value",
+ "name": "Value",
+ "setDefinitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushTags",
+ "setDefinitionName": {
+ "value": "MobilePush Tags"
+ },
+ "parentIdentifier": "c652de3f-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "2051892d-5de2-4ecf-98af-8ca9a40d2c9c",
+ "applicationKey": "com.exacttarget.mobilepush",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 2,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "setDefinitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "MobilePush Tags",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 0,
+ "storageLogicalType": "DataExtension",
+ "storageName": "_PushTag",
+ "storageObjectIDs": ["bd52de3f-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "7993dc39-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "c652de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PushTags",
+ "name": "MobilePush Tags"
+ },
+ {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": true,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "cae9847d-696d-eb11-b81e-48df37d1df5a",
+ "relationshipType": "AttributeGroup"
+ },
+ "leftRelationshipIDs": [
+ {
+ "type": "int16",
+ "value": "2"
+ }
+ ],
+ "leftRelationshipReferenceType": "CustomerData",
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "9293dc39-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "cee9847d-696d-eb11-b81e-48df37d1df5a",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "9a42dcad-ae72-4cde-9937-193e17485ad6",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "d5e9847d-696d-eb11-b81e-48df37d1df5a",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "f7e9847d-696d-eb11-b81e-48df37d1df5a",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "04ea847d-696d-eb11-b81e-48df37d1df5a",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "cbe9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "CarrierID",
+ "definitionName": {
+ "value": "Carrier ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Chat Message Demographics.Carrier ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "cbe9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CarrierID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "3fdc8842-cc0f-407c-a3ec-930d7a027d1d"
+ },
+ "valueDefinitionID": "cbe9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "CarrierID",
+ "name": "Carrier ID",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "cce9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "Channel",
+ "definitionName": {
+ "value": "Channel"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Chat Message Demographics.Channel",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 20,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "cce9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Channel",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "ef36ded9-67b2-4daf-899f-6862af8e5ee7"
+ },
+ "valueDefinitionID": "cce9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "Channel",
+ "name": "Channel",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "cde9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "City",
+ "definitionName": {
+ "value": "City"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Chat Message Demographics.City",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "cde9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_City",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "be7b4554-bf03-4a80-9101-3e396b2e345f"
+ },
+ "valueDefinitionID": "cde9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "City",
+ "name": "City",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "cee9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ContactID",
+ "definitionName": {
+ "value": "Contact ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Chat Message Demographics.Contact ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "cee9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ContactID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "b0e31883-cae8-4bc5-aa24-88565d375a18"
+ },
+ "valueDefinitionID": "cee9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "ContactID",
+ "name": "Contact ID",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "d0e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "CreatedBy",
+ "definitionName": {
+ "value": "Created By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Chat Message Demographics.Created By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d0e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedBy",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "1671a32a-8eb0-4dc5-b30d-8ad16e55a601"
+ },
+ "valueDefinitionID": "d0e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "CreatedBy",
+ "name": "Created By",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "d1e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "CreatedDate",
+ "definitionName": {
+ "value": "Created Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Chat Message Demographics.Created Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d1e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "de543ca5-5920-4309-adb9-33472144defe"
+ },
+ "valueDefinitionID": "d1e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "CreatedDate",
+ "name": "Created Date",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "d2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "FirstName",
+ "definitionName": {
+ "value": "First Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "Chat Message Demographics.First Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_FirstName",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "125f7c91-2f11-44bd-9687-f22cf2461496"
+ },
+ "valueDefinitionID": "d2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "FirstName",
+ "name": "First Name",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "defaultValue": "False",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "d3e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "IsHonorDST",
+ "definitionName": {
+ "value": "Is Honor DST"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "Chat Message Demographics.Is Honor DST",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d3e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_IsHonorDST",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "17abe00a-4306-43c5-b27f-a81f015d6dfb"
+ },
+ "valueDefinitionID": "d3e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "IsHonorDST",
+ "name": "Is Honor DST",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "d4e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "LastName",
+ "definitionName": {
+ "value": "Last Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "Chat Message Demographics.Last Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 100,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d4e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_LastName",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "e31f18f4-5422-410b-adcc-1b60f61cce5f"
+ },
+ "valueDefinitionID": "d4e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "LastName",
+ "name": "Last Name",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "cfe9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "CountryCode",
+ "definitionName": {
+ "value": "Locale"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 12,
+ "fullyQualifiedName": "Chat Message Demographics.Locale",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 2,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "cfe9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 12,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CountryCode",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4b5fda70-47cb-4f4b-8ba6-f5cac53ee344"
+ },
+ "valueDefinitionID": "cfe9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "CountryCode",
+ "name": "Locale",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Phone",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "d5e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "MobileNumber",
+ "definitionName": {
+ "value": "Mobile Number"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 14,
+ "fullyQualifiedName": "Chat Message Demographics.Mobile Number",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 15,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d5e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 14,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_MobileNumber",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "e31a7e3b-e943-440e-9be6-77224a4928fe"
+ },
+ "valueDefinitionID": "d5e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "MobileNumber",
+ "name": "Mobile Number",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "d6e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ModifiedBy",
+ "definitionName": {
+ "value": "Modified By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 15,
+ "fullyQualifiedName": "Chat Message Demographics.Modified By",
+ "isHidden": true,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d6e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 15,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedBy",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a9be58ef-884d-44f4-9926-d73ebe587847"
+ },
+ "valueDefinitionID": "d6e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "ModifiedBy",
+ "name": "Modified By",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "d7e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ModifiedDate",
+ "definitionName": {
+ "value": "Modified Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 16,
+ "fullyQualifiedName": "Chat Message Demographics.Modified Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d7e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 16,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "216659c1-9512-47de-a9ee-822f48148514"
+ },
+ "valueDefinitionID": "d7e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "ModifiedDate",
+ "name": "Modified Date",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "d8e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "Priority",
+ "definitionName": {
+ "value": "Priority"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 17,
+ "fullyQualifiedName": "Chat Message Demographics.Priority",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d8e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 17,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Priority",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "71153ee5-a33f-4cf6-a963-0c3a893d9348"
+ },
+ "valueDefinitionID": "d8e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "Priority",
+ "name": "Priority",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "d9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "Source",
+ "definitionName": {
+ "value": "Source"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 18,
+ "fullyQualifiedName": "Chat Message Demographics.Source",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 18,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 5,
+ "storageName": "_Source",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f6bafdfb-86bf-45e8-9b76-b878c904d6c5"
+ },
+ "valueDefinitionID": "d9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "Source",
+ "name": "Source",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "dae9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "SourceObjectID",
+ "definitionName": {
+ "value": "Source Object ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 19,
+ "fullyQualifiedName": "Chat Message Demographics.Source Object ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "dae9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 19,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_SourceObjectId",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "c67a7922-44e5-4c4b-a4c8-2ac3550a5f07"
+ },
+ "valueDefinitionID": "dae9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "SourceObjectID",
+ "name": "Source Object ID",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 4,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "dfe9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "SFContactID",
+ "definitionName": {
+ "value": "SFContactID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 19,
+ "fullyQualifiedName": "Chat Message Demographics.SFContactID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": true,
+ "length": 50,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "dfe9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 19,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "SFContactID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "ce5a90ea-88eb-4683-9a1a-5c776b5763ce"
+ },
+ "valueDefinitionID": "dfe9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "SFContactID",
+ "name": "SFContactID",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "dbe9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "State",
+ "definitionName": {
+ "value": "State"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 20,
+ "fullyQualifiedName": "Chat Message Demographics.State",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 200,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "dbe9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 20,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_State",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "c0ea1fac-d939-4dde-b45a-16586f661924"
+ },
+ "valueDefinitionID": "dbe9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "State",
+ "name": "State",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "dce9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "Status",
+ "definitionName": {
+ "value": "Status"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 21,
+ "fullyQualifiedName": "Chat Message Demographics.Status",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "dce9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 21,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 6,
+ "storageName": "_Status",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "fafff407-c055-411c-81ec-78907f5dbd58"
+ },
+ "valueDefinitionID": "dce9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "Status",
+ "name": "Status",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "dde9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "UTCOffset",
+ "definitionName": {
+ "value": "UTC Offset"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 22,
+ "fullyQualifiedName": "Chat Message Demographics.UTC Offset",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 4,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "dde9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 22,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 2,
+ "storageName": "_UTCOffset",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "84d29656-a348-43c2-ac2f-8c7ec5b18a3e"
+ },
+ "valueDefinitionID": "dde9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "UTCOffset",
+ "name": "UTC Offset",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "e0e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ZipCode",
+ "definitionName": {
+ "value": "Zip Code"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 23,
+ "fullyQualifiedName": "Chat Message Demographics.Zip Code",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": false,
+ "isUpdateable": false,
+ "length": 20,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "e0e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "ordinal": 23,
+ "parentDefinition": {
+ "definitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageDemographics",
+ "definitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ZipCode",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "11ce9d05-a1e3-47ba-9077-11097e0b4c8d"
+ },
+ "valueDefinitionID": "e0e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "ZipCode",
+ "name": "Zip Code",
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "setDefinitionName": {
+ "value": "Chat Message Demographics"
+ },
+ "parentIdentifier": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ }
+ ],
+ "applicationID": "e25893f9-08f3-480f-8def-7f8ab0583611",
+ "applicationKey": "com.exacttarget.mobileconnect",
+ "attributeCount": 0,
+ "canAddValues": true,
+ "canChangeValues": true,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 2,
+ "createDate": "2021-02-12T13:36:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Chat Message Demographics",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": true,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 2,
+ "sendAttributeStorageName": "_ContactID",
+ "sendContactKeyStorageName": "_SubscriberID",
+ "storageLogicalType": "MobileAttributes",
+ "storageName": "_MobileAddress",
+ "storageObjectIDs": ["1651de3f-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "7693dc39-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "c9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageDemographics",
+ "name": "Chat Message Demographics"
+ },
+ {
+ "definitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "dc85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence Product Attributes.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "dc85d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "parentIdentifier": "d685d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "attribName",
+ "localizedDescription": {
+ "value": "attribName"
+ },
+ "definitionID": "d785d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_Name",
+ "definitionName": {
+ "value": "Attribute Name"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence Product Attributes.Attribute Name",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 1000,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d785d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "attribName",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a29facf4-9173-43b7-98d5-57bef44c832f"
+ },
+ "valueDefinitionID": "d785d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_Name",
+ "name": "Attribute Name",
+ "setDefinitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "parentIdentifier": "d685d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "attribValue",
+ "localizedDescription": {
+ "value": "attribValue"
+ },
+ "definitionID": "d985d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_Value",
+ "definitionName": {
+ "value": "Attribute Value"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence Product Attributes.Attribute Value",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 1000,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d985d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "attribValue",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "b023eb98-10c7-481d-a809-38af6af65b17"
+ },
+ "valueDefinitionID": "d985d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_Value",
+ "name": "Attribute Value",
+ "setDefinitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "parentIdentifier": "d685d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "sku",
+ "localizedDescription": {
+ "value": "sku"
+ },
+ "definitionID": "da85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "SKU",
+ "definitionName": {
+ "value": "SKU"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence Product Attributes.SKU",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "da85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "sku",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "35919388-7813-48d0-a45f-2c0cf64d6e1e"
+ },
+ "valueDefinitionID": "da85d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "SKU",
+ "name": "SKU",
+ "setDefinitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "parentIdentifier": "d685d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "updated_at",
+ "localizedDescription": {
+ "value": "updated_at"
+ },
+ "definitionID": "db85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Updated_At",
+ "definitionName": {
+ "value": "Updated At"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence Product Attributes.Updated At",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "db85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "updated_at",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a8a96a08-576c-4b45-842c-fe6c36da6f41"
+ },
+ "valueDefinitionID": "db85d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Updated_At",
+ "name": "Updated At",
+ "setDefinitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "parentIdentifier": "d685d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "attributeValueIndex",
+ "localizedDescription": {
+ "value": "attributeValueIndex"
+ },
+ "definitionID": "d885d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_Value_Index",
+ "definitionName": {
+ "value": "Attribute Value Index"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Intelligence Product Attributes.Attribute Value Index",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "d885d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductAttribs",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "attributeValueIndex",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "619fe747-d142-4522-91dd-4228546d282d"
+ },
+ "valueDefinitionID": "d885d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_Value_Index",
+ "name": "Attribute Value Index",
+ "setDefinitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductAttribs",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Attributes"
+ },
+ "parentIdentifier": "d685d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "d685d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence Product Attributes",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 0,
+ "storageLogicalType": "DataExtension",
+ "storageName": "IGO_PRODUCTATTRIBS",
+ "storageObjectIDs": ["cf85d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "d952de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "d685d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductAttribs",
+ "name": "Predictive Intelligence Product Attributes"
+ },
+ {
+ "definitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineSubscriptions",
+ "definitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "valueDefinitions": [
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "e651de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "AddressID",
+ "definitionName": {
+ "value": "Address ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "GroupConnect LINE Subscriptions.Address ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": -1,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineSubscriptions",
+ "definitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "AddressId",
+ "valueDefinitionID": "e651de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "AddressID",
+ "name": "Address ID",
+ "setDefinitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineSubscriptions",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "parentIdentifier": "e551de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "e751de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ChannelID",
+ "definitionName": {
+ "value": "Channel ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "GroupConnect LINE Subscriptions.Channel ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": -1,
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineSubscriptions",
+ "definitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ChannelId",
+ "valueDefinitionID": "e751de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ChannelID",
+ "name": "Channel ID",
+ "setDefinitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineSubscriptions",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "parentIdentifier": "e551de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Boolean",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Boolean",
+ "defaultValue": "False",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "e851de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "IsSubscribed",
+ "definitionName": {
+ "value": "Is Subscribed"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "GroupConnect LINE Subscriptions.Is Subscribed",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineSubscriptions",
+ "definitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "IsSubscribed",
+ "valueDefinitionID": "e851de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "IsSubscribed",
+ "name": "Is Subscribed",
+ "setDefinitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineSubscriptions",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "parentIdentifier": "e551de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "e951de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedDate",
+ "definitionName": {
+ "value": "Created Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "GroupConnect LINE Subscriptions.Created Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineSubscriptions",
+ "definitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "CreatedDate",
+ "valueDefinitionID": "e951de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedDate",
+ "name": "Created Date",
+ "setDefinitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineSubscriptions",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "parentIdentifier": "e551de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "ea51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CreatedBy",
+ "definitionName": {
+ "value": "Created By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "GroupConnect LINE Subscriptions.Created By",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineSubscriptions",
+ "definitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "CreatedBy",
+ "valueDefinitionID": "ea51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CreatedBy",
+ "name": "Created By",
+ "setDefinitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineSubscriptions",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "parentIdentifier": "e551de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "eb51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedDate",
+ "definitionName": {
+ "value": "Modified Date"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "GroupConnect LINE Subscriptions.Modified Date",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineSubscriptions",
+ "definitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ModifiedDate",
+ "valueDefinitionID": "eb51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedDate",
+ "name": "Modified Date",
+ "setDefinitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineSubscriptions",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "parentIdentifier": "e551de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 3,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "ec51de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "ModifiedBy",
+ "definitionName": {
+ "value": "Modified By"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "GroupConnect LINE Subscriptions.Modified By",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "GroupConnectLineSubscriptions",
+ "definitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "ModifiedBy",
+ "valueDefinitionID": "ec51de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "ModifiedBy",
+ "name": "Modified By",
+ "setDefinitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineSubscriptions",
+ "setDefinitionName": {
+ "value": "GroupConnect LINE Subscriptions"
+ },
+ "parentIdentifier": "e551de3f-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "4e9519db-ad21-483a-a3fc-8ab4557eded1",
+ "applicationKey": "com.exacttarget.GroupConnect",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "localizedDescription": {},
+ "fullyQualifiedName": "GroupConnect LINE Subscriptions",
+ "isCustomObjectBacked": false,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": false,
+ "isSystemDefined": true,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 0,
+ "storageObjectIDs": ["dd51de3f-31e2-e611-80cc-1402ec7222b4"],
+ "setDefinitionID": "e551de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "GroupConnectLineSubscriptions",
+ "name": "GroupConnect LINE Subscriptions"
+ },
+ {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "f785d645-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "c885d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "0086d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "c485d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "fa85d645-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "1286d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "1586d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "0b86d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "fb85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "fb85d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Sku",
+ "localizedDescription": {
+ "value": "Sku"
+ },
+ "definitionID": "f785d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "SKU",
+ "definitionName": {
+ "value": "SKU"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.SKU",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f785d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Sku",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "8fbf489f-b82c-4c03-ab47-e8576a5625db"
+ },
+ "valueDefinitionID": "f785d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "SKU",
+ "name": "SKU",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Decimal",
+ "description": "Price",
+ "localizedDescription": {
+ "value": "Price"
+ },
+ "definitionID": "f485d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Price",
+ "definitionName": {
+ "value": "Price"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.Price",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 18,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f485d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "scale": 2,
+ "storageName": "Price",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f6942680-95e1-4000-9026-77fbfd8d5e41"
+ },
+ "valueDefinitionID": "f485d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Price",
+ "name": "Price",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "Quantity",
+ "localizedDescription": {
+ "value": "Quantity"
+ },
+ "definitionID": "f585d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Quantity",
+ "definitionName": {
+ "value": "Quantity"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.Quantity",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f585d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Quantity",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "29508cf9-fac3-4d64-8e28-e691978bd659"
+ },
+ "valueDefinitionID": "f585d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Quantity",
+ "name": "Quantity",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "order_number",
+ "localizedDescription": {
+ "value": "order_number"
+ },
+ "definitionID": "f385d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Order_Number",
+ "definitionName": {
+ "value": "Order Number"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.Order Number",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f385d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "order_number",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d4024f16-8e2a-4f19-a852-6736071d8ec6"
+ },
+ "valueDefinitionID": "f385d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Order_Number",
+ "name": "Order Number",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "user_id",
+ "localizedDescription": {
+ "value": "user_id"
+ },
+ "definitionID": "fa85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "User_ID",
+ "definitionName": {
+ "value": "User ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.User ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "fa85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "user_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "c318e0f3-c386-4beb-ab78-be4067c5520d"
+ },
+ "valueDefinitionID": "fa85d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "User_ID",
+ "name": "User ID",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "Timestamp",
+ "localizedDescription": {
+ "value": "Timestamp"
+ },
+ "definitionID": "f985d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Timestamp",
+ "definitionName": {
+ "value": "Timestamp"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.Timestamp",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f985d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Timestamp",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "499933ee-cc51-4a79-8db1-bf6bf304d61f"
+ },
+ "valueDefinitionID": "f985d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Timestamp",
+ "name": "Timestamp",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "Job_ID",
+ "localizedDescription": {
+ "value": "Job_ID"
+ },
+ "definitionID": "f085d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Job_ID",
+ "definitionName": {
+ "value": "Job_ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.Job_ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f085d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Job_ID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f021da2f-c005-46ca-a561-b6c3d9e095d0"
+ },
+ "valueDefinitionID": "f085d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Job_ID",
+ "name": "Job_ID",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "List_ID",
+ "localizedDescription": {
+ "value": "List_ID"
+ },
+ "definitionID": "f285d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "List_ID",
+ "definitionName": {
+ "value": "List_ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.List_ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f285d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "List_ID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "6a8da7cf-8496-4ffe-8c5c-057fce68cccc"
+ },
+ "valueDefinitionID": "f285d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "List_ID",
+ "name": "List_ID",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "Batch_ID",
+ "localizedDescription": {
+ "value": "Batch_ID"
+ },
+ "definitionID": "ef85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Batch_ID",
+ "definitionName": {
+ "value": "Batch_ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.Batch_ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "ef85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Batch_ID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "053d483c-62a0-4361-80a4-e99d8bde4550"
+ },
+ "valueDefinitionID": "ef85d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Batch_ID",
+ "name": "Batch_ID",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Number",
+ "description": "Landing_URL_ID",
+ "localizedDescription": {
+ "value": "Landing_URL_ID"
+ },
+ "definitionID": "f185d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Landing_URL_ID",
+ "definitionName": {
+ "value": "Landing_URL_ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 12,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.Landing_URL_ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f185d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 12,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Landing_URL_ID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d37c4358-5810-4d47-bcec-92829b828703"
+ },
+ "valueDefinitionID": "f185d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Landing_URL_ID",
+ "name": "Landing_URL_ID",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "Subscriber_ID",
+ "localizedDescription": {
+ "value": "Subscriber_ID"
+ },
+ "definitionID": "f885d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Subscriber_ID",
+ "definitionName": {
+ "value": "Subscriber_ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 13,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.Subscriber_ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f885d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 13,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Subscriber_ID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "5c0c3f04-baec-434a-b463-4f82e3a9fb9c"
+ },
+ "valueDefinitionID": "f885d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Subscriber_ID",
+ "name": "Subscriber_ID",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "session_id",
+ "localizedDescription": {
+ "value": "session_id"
+ },
+ "definitionID": "f685d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "session_id",
+ "definitionName": {
+ "value": "session_id"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 14,
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases.session_id",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f685d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 14,
+ "parentDefinition": {
+ "definitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProductPurchases",
+ "definitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "session_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "33bf36ba-c6b7-43cd-b996-abf12ced61fb"
+ },
+ "valueDefinitionID": "f685d645-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "session_id",
+ "name": "session_id",
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Product Purchases"
+ },
+ "parentIdentifier": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence Product Purchases",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 2,
+ "storageLogicalType": "DataExtension",
+ "storageName": "IGO_PURCHASES",
+ "storageObjectIDs": ["e085d645-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "d752de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProductPurchases",
+ "name": "Predictive Intelligence Product Purchases"
+ },
+ {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "02ea847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "fullyQualifiedName": "Chat Message Subscriptions.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "02ea847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "f7e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_MobileNumber",
+ "definitionName": {
+ "value": "MobileNumber"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Chat Message Subscriptions.MobileNumber",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 254,
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_MobileNumber",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "169e88d8-d9fe-43f4-82e2-f325674328ee"
+ },
+ "valueDefinitionID": "f7e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_MobileNumber",
+ "name": "MobileNumber",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "f3e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_ChannelId",
+ "definitionName": {
+ "value": "ChannelId"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Chat Message Subscriptions.ChannelId",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 50,
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ChannelId",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "5f56cbc2-6799-4b37-b24d-38b16e9ed30a"
+ },
+ "valueDefinitionID": "f3e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_ChannelId",
+ "name": "ChannelId",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "f4e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_ChannelType",
+ "definitionName": {
+ "value": "ChannelType"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Chat Message Subscriptions.ChannelType",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 20,
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ChannelType",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "d442b162-248b-4546-b0ee-7d86d4444d3b"
+ },
+ "valueDefinitionID": "f4e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_ChannelType",
+ "name": "ChannelType",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "ffe9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_OptOutStatusID",
+ "definitionName": {
+ "value": "OptOutStatusID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Chat Message Subscriptions.OptOutStatusID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "restrictionLookupListID": 15,
+ "storageName": "_OptOutStatusID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "ca82f469-ea9e-44d8-ad4f-d8ed7536518f"
+ },
+ "valueDefinitionID": "ffe9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_OptOutStatusID",
+ "name": "OptOutStatusID",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "fee9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_OptOutMethodID",
+ "definitionName": {
+ "value": "OptOutMethodID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Chat Message Subscriptions.OptOutMethodID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptOutMethodID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "c47ca0dc-f8b3-4476-8ffb-1cbf22b6254e"
+ },
+ "valueDefinitionID": "fee9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_OptOutMethodID",
+ "name": "OptOutMethodID",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "fde9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_OptOutDate",
+ "definitionName": {
+ "value": "OptOutDate"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "Chat Message Subscriptions.OptOutDate",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptOutDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "0b8b6cdd-86ba-4d36-8e27-0e0b4bde256f"
+ },
+ "valueDefinitionID": "fde9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_OptOutDate",
+ "name": "OptOutDate",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "fce9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_OptInStatusID",
+ "definitionName": {
+ "value": "OptInStatusID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "Chat Message Subscriptions.OptInStatusID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptInStatusID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "c0f3cd62-55cb-4f61-bb97-d3676e9c7eea"
+ },
+ "valueDefinitionID": "fce9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_OptInStatusID",
+ "name": "OptInStatusID",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "fbe9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_OptInMethodID",
+ "definitionName": {
+ "value": "OptInMethodID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "Chat Message Subscriptions.OptInMethodID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptInMethodID",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a4d5dea8-cd22-435c-b389-9cdce054149c"
+ },
+ "valueDefinitionID": "fbe9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_OptInMethodID",
+ "name": "OptInMethodID",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "fae9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_OptInDate",
+ "definitionName": {
+ "value": "OptInDate"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "Chat Message Subscriptions.OptInDate",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": false,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_OptInDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4fbd9715-9b10-4e4b-bf89-215786c84e96"
+ },
+ "valueDefinitionID": "fae9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_OptInDate",
+ "name": "OptInDate",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Byte",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "00ea847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_Source",
+ "definitionName": {
+ "value": "Source"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "Chat Message Subscriptions.Source",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_Source",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "2b7a081b-127c-4d65-bdfe-f80f274f4580"
+ },
+ "valueDefinitionID": "00ea847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_Source",
+ "name": "Source",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "01ea847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_SourceObjectId ",
+ "definitionName": {
+ "value": "SourceObjectId"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 12,
+ "fullyQualifiedName": "Chat Message Subscriptions.SourceObjectId",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 200,
+ "ordinal": 12,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_SourceObjectId ",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "47505922-899e-45b8-a1cc-c0049d280504"
+ },
+ "valueDefinitionID": "01ea847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_SourceObjectId ",
+ "name": "SourceObjectId",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "f6e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_CreatedDate",
+ "definitionName": {
+ "value": "CreatedDate"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 13,
+ "fullyQualifiedName": "Chat Message Subscriptions.CreatedDate",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 13,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "ae8a3f3e-1020-484e-8e24-5c11c7393d56"
+ },
+ "valueDefinitionID": "f6e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_CreatedDate",
+ "name": "CreatedDate",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "f5e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_CreatedBy ",
+ "definitionName": {
+ "value": "CreatedBy"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 14,
+ "fullyQualifiedName": "Chat Message Subscriptions.CreatedBy",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 14,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CreatedBy ",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "0b7dac0b-728a-4fb7-a63e-c21311d784d3"
+ },
+ "valueDefinitionID": "f5e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_CreatedBy ",
+ "name": "CreatedBy",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Date",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "Date",
+ "defaultValue": "GETDATE()",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "f9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_ModifiedDate",
+ "definitionName": {
+ "value": "ModifiedDate"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 15,
+ "fullyQualifiedName": "Chat Message Subscriptions.ModifiedDate",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 15,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedDate",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "10d39942-4628-4e99-a927-523fe48d1068"
+ },
+ "valueDefinitionID": "f9e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_ModifiedDate",
+ "name": "ModifiedDate",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "f8e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "_ModifiedBy ",
+ "definitionName": {
+ "value": "ModifiedBy"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 16,
+ "fullyQualifiedName": "Chat Message Subscriptions.ModifiedBy",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 16,
+ "parentDefinition": {
+ "definitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "definitionKey": "ChatMessageSubscriptions",
+ "definitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_ModifiedBy ",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "a0486cff-d96e-41dd-9286-c77ddad92f75"
+ },
+ "valueDefinitionID": "f8e9847d-696d-eb11-b81e-48df37d1df5a",
+ "valueDefinitionKey": "_ModifiedBy ",
+ "name": "ModifiedBy",
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "setDefinitionName": {
+ "value": "Chat Message Subscriptions"
+ },
+ "parentIdentifier": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ }
+ ],
+ "applicationID": "e25893f9-08f3-480f-8def-7f8ab0583611",
+ "applicationKey": "com.exacttarget.mobileconnect",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 2,
+ "createDate": "2021-02-12T13:36:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Chat Message Subscriptions",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": false,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 0,
+ "storageLogicalType": "DataExtension",
+ "storageName": "_ChatMessagingSubscription",
+ "storageObjectIDs": ["e1e9847d-696d-eb11-b81e-48df37d1df5a"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "38042500-a868-eb11-b81e-48df37d1df5a"
+ },
+ "setDefinitionID": "f2e9847d-696d-eb11-b81e-48df37d1df5a",
+ "setDefinitionKey": "ChatMessageSubscriptions",
+ "name": "Chat Message Subscriptions"
+ },
+ {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "relationships": [
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": true,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "e152de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeGroup"
+ },
+ "leftRelationshipIDs": [
+ {
+ "type": "int16",
+ "value": "4"
+ }
+ ],
+ "leftRelationshipReferenceType": "CustomerData",
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "1151de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "fc52de3f-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "9885d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "fe52de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "2386d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "2686d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "1e86d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "fe52de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "5a86d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "5d86d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "5286d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "fe52de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "b785d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "ba85d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "b285d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ },
+ {
+ "canModify": false,
+ "canRemove": false,
+ "isHidden": false,
+ "isSystemDefined": false,
+ "isGroupToSetRelationship": false,
+ "leftItem": {
+ "cardinality": "One",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ },
+ "relationshipAttributes": [
+ {
+ "leftAttributeID": "fe52de3f-31e2-e611-80cc-1402ec7222b4",
+ "leftConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "rightAttributeID": "fa85d645-31e2-e611-80cc-1402ec7222b4",
+ "rightConnectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ }
+ ],
+ "relationshipID": "fd85d645-31e2-e611-80cc-1402ec7222b4",
+ "rightItem": {
+ "cardinality": "Many",
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "identifier": "ee85d645-31e2-e611-80cc-1402ec7222b4",
+ "relationshipType": "AttributeSet"
+ }
+ }
+ ],
+ "valueDefinitions": [
+ {
+ "baseType": "Numeric",
+ "dataSourceID": 1,
+ "dataSourceName": {},
+ "dataType": "LongNumber",
+ "description": "",
+ "localizedDescription": {
+ "value": ""
+ },
+ "definitionID": "0453de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "CustomObjectKey",
+ "definitionName": {
+ "value": "Custom Object Key"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 1,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Custom Object Key",
+ "isHidden": true,
+ "isIdentityValue": true,
+ "isNullable": false,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "ordinal": 1,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "_CustomObjectKey",
+ "valueDefinitionID": "0453de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "CustomObjectKey",
+ "name": "Custom Object Key",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "user_id",
+ "localizedDescription": {
+ "value": "user_id"
+ },
+ "definitionID": "fe52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "User_ID",
+ "definitionName": {
+ "value": "User ID"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 2,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.User ID",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": false,
+ "isPrimaryKey": true,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "fe52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 2,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "user_id",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "eceebc11-78ad-421f-a94f-020667aac6d4"
+ },
+ "valueDefinitionID": "fe52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "User_ID",
+ "name": "User ID",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "email",
+ "localizedDescription": {
+ "value": "email"
+ },
+ "definitionID": "fc52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Email",
+ "definitionName": {
+ "value": "Email"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 3,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Email",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "fc52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 3,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "email",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "71e4d8c6-e3d4-430e-9c9f-7e56b092d36a"
+ },
+ "valueDefinitionID": "fc52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Email",
+ "name": "Email",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Value_1",
+ "localizedDescription": {
+ "value": "Value_1"
+ },
+ "definitionID": "ff52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Value_1",
+ "definitionName": {
+ "value": "Value 1"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 4,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Value 1",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "ff52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 4,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Value_1",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "8e0573f4-8bc8-4fb3-afc8-ad933a8d823b"
+ },
+ "valueDefinitionID": "ff52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Value_1",
+ "name": "Value 1",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Value_2",
+ "localizedDescription": {
+ "value": "Value_2"
+ },
+ "definitionID": "0053de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Value_2",
+ "definitionName": {
+ "value": "Value 2"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 5,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Value 2",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "0053de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 5,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Value_2",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "dcf6690a-4fbe-418c-baa7-e1c50443560b"
+ },
+ "valueDefinitionID": "0053de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Value_2",
+ "name": "Value 2",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Value_3",
+ "localizedDescription": {
+ "value": "Value_3"
+ },
+ "definitionID": "0153de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Value_3",
+ "definitionName": {
+ "value": "Value 3"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 6,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Value 3",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "0153de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 6,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Value_3",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "b2a7de94-c985-4337-afcc-445aa80c2ced"
+ },
+ "valueDefinitionID": "0153de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Value_3",
+ "name": "Value 3",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Value_4",
+ "localizedDescription": {
+ "value": "Value_4"
+ },
+ "definitionID": "0253de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Value_4",
+ "definitionName": {
+ "value": "Value 4"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 7,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Value 4",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "0253de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 7,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Value_4",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "28984526-60dc-4768-aaff-4018d9842e77"
+ },
+ "valueDefinitionID": "0253de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Value_4",
+ "name": "Value 4",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Value_5",
+ "localizedDescription": {
+ "value": "Value_5"
+ },
+ "definitionID": "0353de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Value_5",
+ "definitionName": {
+ "value": "Value 5"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 8,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Value 5",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "0353de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 8,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Value_5",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "aa50e6f3-6863-41fa-a536-8ed1d0fca989"
+ },
+ "valueDefinitionID": "0353de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Value_5",
+ "name": "Value 5",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Attribute_1",
+ "localizedDescription": {
+ "value": "Attribute_1"
+ },
+ "definitionID": "f552de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_1",
+ "definitionName": {
+ "value": "Attribute 1"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 9,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Attribute 1",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f552de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 9,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Attribute_1",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "16934a3e-d869-4b8c-b817-48ff5b554f30"
+ },
+ "valueDefinitionID": "f552de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_1",
+ "name": "Attribute 1",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Attribute_2",
+ "localizedDescription": {
+ "value": "Attribute_2"
+ },
+ "definitionID": "f652de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_2",
+ "definitionName": {
+ "value": "Attribute 2"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 10,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Attribute 2",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f652de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 10,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Attribute_2",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "121ce628-61aa-4344-91b1-7f27413a16e5"
+ },
+ "valueDefinitionID": "f652de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_2",
+ "name": "Attribute 2",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Attribute_3",
+ "localizedDescription": {
+ "value": "Attribute_3"
+ },
+ "definitionID": "f752de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_3",
+ "definitionName": {
+ "value": "Attribute 3"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 11,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Attribute 3",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f752de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 11,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Attribute_3",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "34e53678-e867-4526-9fd6-d31e2771a003"
+ },
+ "valueDefinitionID": "f752de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_3",
+ "name": "Attribute 3",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Attribute_4",
+ "localizedDescription": {
+ "value": "Attribute_4"
+ },
+ "definitionID": "f852de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_4",
+ "definitionName": {
+ "value": "Attribute 4"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 12,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Attribute 4",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f852de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 12,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Attribute_4",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "b3efb625-de9a-4eef-b6eb-6add451d2f7a"
+ },
+ "valueDefinitionID": "f852de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_4",
+ "name": "Attribute 4",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "Attribute_5",
+ "localizedDescription": {
+ "value": "Attribute_5"
+ },
+ "definitionID": "f952de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Attribute_5",
+ "definitionName": {
+ "value": "Attribute 5"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 13,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Attribute 5",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "f952de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 13,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "Attribute_5",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f4836380-72eb-49c2-a8af-5a283d168683"
+ },
+ "valueDefinitionID": "f952de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Attribute_5",
+ "name": "Attribute 5",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "city",
+ "localizedDescription": {
+ "value": "city"
+ },
+ "definitionID": "fa52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "City",
+ "definitionName": {
+ "value": "City"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 14,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.City",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "fa52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 14,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "city",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "486ae151-74f7-4b98-ba9b-6ad927399de9"
+ },
+ "valueDefinitionID": "fa52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "City",
+ "name": "City",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "region",
+ "localizedDescription": {
+ "value": "region"
+ },
+ "definitionID": "fd52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Region",
+ "definitionName": {
+ "value": "Region"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 15,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Region",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "fd52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 15,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "region",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "4b8bb8f1-0bcb-4201-9c26-fdd8e10c7ad8"
+ },
+ "valueDefinitionID": "fd52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Region",
+ "name": "Region",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ {
+ "baseType": "Text",
+ "dataSourceID": 5,
+ "dataSourceName": {},
+ "dataType": "Text",
+ "description": "country",
+ "localizedDescription": {
+ "value": "country"
+ },
+ "definitionID": "fb52de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "Country",
+ "definitionName": {
+ "value": "Country"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ },
+ "displayOrder": 16,
+ "fullyQualifiedName": "Predictive Intelligence Profiles.Country",
+ "isHidden": false,
+ "isIdentityValue": false,
+ "isNullable": true,
+ "isPrimaryKey": false,
+ "isReadOnly": true,
+ "isSystemDefined": true,
+ "isUpdateable": false,
+ "length": 256,
+ "obfuscationProperties": {
+ "maskType": "None",
+ "maskTypeID": 0,
+ "storageTypeID": 1,
+ "storageType": "Plain",
+ "valueDefinitionID": "fb52de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "ordinal": 16,
+ "parentDefinition": {
+ "definitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "definitionKey": "PredictiveIntelProfiles",
+ "definitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "connectingID": {
+ "identifierType": "FullyQualifiedName"
+ }
+ },
+ "parentType": "Set",
+ "storageName": "country",
+ "storageFieldReferenceID": {
+ "type": "guid",
+ "value": "f9e65e6a-45dc-4f08-9a44-715e6e4763f7"
+ },
+ "valueDefinitionID": "fb52de3f-31e2-e611-80cc-1402ec7222b4",
+ "valueDefinitionKey": "Country",
+ "name": "Country",
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "setDefinitionName": {
+ "value": "Predictive Intelligence Profiles"
+ },
+ "parentIdentifier": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ }
+ ],
+ "applicationID": "f4981f88-a13e-4abf-b331-47f41c73258d",
+ "applicationKey": "com.exacttarget.Predictive Web",
+ "attributeCount": 0,
+ "canAddValues": false,
+ "canChangeValues": false,
+ "canModify": false,
+ "canRemove": false,
+ "categoryID": 386,
+ "createdBy": -1000,
+ "createDate": "2017-01-24T06:33:00",
+ "customObjectOwnerMID": 1111111,
+ "dataRetentionProperties": {
+ "isRowBasedRetention": false,
+ "isResetRetentionPeriodOnImport": false,
+ "isDeleteAtEndOfRetentionPeriod": false,
+ "periodUnitOfMeasure": 4,
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "localizedDescription": {},
+ "fullyQualifiedName": "Predictive Intelligence Profiles",
+ "isCustomObjectBacked": true,
+ "isEvent": false,
+ "isHidden": false,
+ "isReadOnly": true,
+ "isRoot": false,
+ "isSendable": false,
+ "isShared": false,
+ "isSystemDefined": true,
+ "isTestaable": false,
+ "parentID": "00000000-0000-0000-0000-000000000000",
+ "relationshipCount": 5,
+ "storageLogicalType": "DataExtension",
+ "storageName": "IGO_PROFILES",
+ "storageObjectIDs": ["e352de3f-31e2-e611-80cc-1402ec7222b4"],
+ "storageReferenceID": {
+ "type": "guid",
+ "value": "d452de3f-31e2-e611-80cc-1402ec7222b4"
+ },
+ "setDefinitionID": "f452de3f-31e2-e611-80cc-1402ec7222b4",
+ "setDefinitionKey": "PredictiveIntelProfiles",
+ "name": "Predictive Intelligence Profiles"
+ }
+ ],
+ "responseContext": {
+ "operationStatus": "OK",
+ "schemaType": "Contacts",
+ "populateInternalProperties": false
+ },
+ "requestServiceMessageID": "ae488366-fa20-449a-ba74-ee353a7ab446",
+ "responseDateTime": "2023-07-12T09:17:32.1332068-06:00",
+ "resultMessages": [],
+ "serviceMessageID": "3206d5b6-f603-4049-bce8-6afce627a7c6"
+}
diff --git a/test/resources/9999999/importFile/build-expected.json b/test/resources/9999999/importFile/build-expected.json
new file mode 100644
index 000000000..a1e8feed7
--- /dev/null
+++ b/test/resources/9999999/importFile/build-expected.json
@@ -0,0 +1,27 @@
+{
+ "allowErrors": true,
+ "c__dataAction": "AddUpdate",
+ "c__destinationType": "DataExtension",
+ "c__subscriberImportType": "DataExtension",
+ "customerKey": "testTemplated_importFile",
+ "dateFormatLocale": "en-US",
+ "deleteFile": false,
+ "description": "17.11.2022",
+ "fieldMappingType": "InferFromColumnHeadings",
+ "fieldMappings": [],
+ "fileNamingPattern": "blabla",
+ "fileTransferLocationTypeId": 0,
+ "fileType": "CSV",
+ "filter": "",
+ "hasColumnHeader": true,
+ "isOrderedImport": true,
+ "isSequential": true,
+ "maxFileAgeHours": 0,
+ "maxFileAgeScheduleOffsetHours": 0,
+ "maxImportFrequencyHours": 0,
+ "name": "testTemplated_importFile",
+ "r__dataExtension_CustomerKey": "testTemplated_dataExtension",
+ "r__fileLocation_name": "ExactTarget Enhanced FTP",
+ "sendEmailNotification": false,
+ "standardQuotedStrings": true
+}
diff --git a/test/resources/9999999/importFile/get-expected.json b/test/resources/9999999/importFile/get-expected.json
new file mode 100644
index 000000000..4175265c2
--- /dev/null
+++ b/test/resources/9999999/importFile/get-expected.json
@@ -0,0 +1,29 @@
+{
+ "allowErrors": true,
+ "createdDate": "2022-11-09T05:32:30.533",
+ "customerKey": "testExisting_importFile",
+ "dateFormatLocale": "en-US",
+ "deleteFile": false,
+ "description": "17.11.2022",
+ "fieldMappingType": "InferFromColumnHeadings",
+ "fieldMappings": [],
+ "fileNamingPattern": "blabla",
+ "fileTransferLocationTypeId": 0,
+ "fileType": "CSV",
+ "filter": "",
+ "hasColumnHeader": true,
+ "isOrderedImport": true,
+ "isSequential": true,
+ "maxFileAgeHours": 0,
+ "maxFileAgeScheduleOffsetHours": 0,
+ "maxImportFrequencyHours": 0,
+ "modifiedDate": "2022-11-17T07:13:03.95",
+ "name": "testExisting_importFile",
+ "sendEmailNotification": false,
+ "standardQuotedStrings": true,
+ "c__dataAction": "AddUpdate",
+ "c__destinationType": "DataExtension",
+ "c__subscriberImportType": "DataExtension",
+ "r__dataExtension_CustomerKey": "testExisting_dataExtension",
+ "r__fileLocation_name": "ExactTarget Enhanced FTP"
+}
diff --git a/test/resources/9999999/importFile/patch-expected.json b/test/resources/9999999/importFile/patch-expected.json
new file mode 100644
index 000000000..844d9dd59
--- /dev/null
+++ b/test/resources/9999999/importFile/patch-expected.json
@@ -0,0 +1,29 @@
+{
+ "allowErrors": true,
+ "c__dataAction": "AddUpdate",
+ "c__destinationType": "DataExtension",
+ "c__subscriberImportType": "DataExtension",
+ "createdDate": "2022-11-09T05:53:03.243",
+ "customerKey": "testExisting_importFile",
+ "dateFormatLocale": "en-US",
+ "deleteFile": false,
+ "description": "updated on deploy",
+ "fieldMappingType": "InferFromColumnHeadings",
+ "fieldMappings": [],
+ "fileNamingPattern": "blabla",
+ "fileTransferLocationTypeId": 0,
+ "fileType": "CSV",
+ "filter": "",
+ "hasColumnHeader": true,
+ "isOrderedImport": true,
+ "isSequential": true,
+ "maxFileAgeHours": 0,
+ "maxFileAgeScheduleOffsetHours": 0,
+ "maxImportFrequencyHours": 0,
+ "modifiedDate": "2023-07-18T09:11:26.19",
+ "name": "testExisting_importFile",
+ "r__dataExtension_CustomerKey": "testExisting_dataExtension",
+ "r__fileLocation_name": "ExactTarget Enhanced FTP",
+ "sendEmailNotification": false,
+ "standardQuotedStrings": true
+}
diff --git a/test/resources/9999999/importFile/post-expected.json b/test/resources/9999999/importFile/post-expected.json
new file mode 100644
index 000000000..0a9440dba
--- /dev/null
+++ b/test/resources/9999999/importFile/post-expected.json
@@ -0,0 +1,29 @@
+{
+ "allowErrors": true,
+ "c__dataAction": "AddUpdate",
+ "c__destinationType": "DataExtension",
+ "c__subscriberImportType": "DataExtension",
+ "createdDate": "2022-11-09T05:53:03.243",
+ "customerKey": "testNew_importFile",
+ "dateFormatLocale": "en-US",
+ "deleteFile": false,
+ "description": "created via deploy",
+ "fieldMappingType": "InferFromColumnHeadings",
+ "fieldMappings": [],
+ "fileNamingPattern": "blabla",
+ "fileTransferLocationTypeId": 0,
+ "fileType": "CSV",
+ "filter": "",
+ "hasColumnHeader": true,
+ "isOrderedImport": true,
+ "isSequential": true,
+ "maxFileAgeHours": 0,
+ "maxFileAgeScheduleOffsetHours": 0,
+ "maxImportFrequencyHours": 0,
+ "modifiedDate": "2023-07-18T09:11:26.19",
+ "name": "testNew_importFile",
+ "r__dataExtension_CustomerKey": "testExisting_dataExtension",
+ "r__fileLocation_name": "ExactTarget Enhanced FTP",
+ "sendEmailNotification": false,
+ "standardQuotedStrings": true
+}
diff --git a/test/resources/9999999/importFile/template-expected.json b/test/resources/9999999/importFile/template-expected.json
new file mode 100644
index 000000000..6be382e91
--- /dev/null
+++ b/test/resources/9999999/importFile/template-expected.json
@@ -0,0 +1,27 @@
+{
+ "allowErrors": true,
+ "c__dataAction": "AddUpdate",
+ "c__destinationType": "DataExtension",
+ "c__subscriberImportType": "DataExtension",
+ "customerKey": "{{{prefix}}}importFile",
+ "dateFormatLocale": "en-US",
+ "deleteFile": false,
+ "description": "17.11.2022",
+ "fieldMappingType": "InferFromColumnHeadings",
+ "fieldMappings": [],
+ "fileNamingPattern": "blabla",
+ "fileTransferLocationTypeId": 0,
+ "fileType": "CSV",
+ "filter": "",
+ "hasColumnHeader": true,
+ "isOrderedImport": true,
+ "isSequential": true,
+ "maxFileAgeHours": 0,
+ "maxFileAgeScheduleOffsetHours": 0,
+ "maxImportFrequencyHours": 0,
+ "name": "{{{prefix}}}importFile",
+ "r__dataExtension_CustomerKey": "{{{prefix}}}dataExtension",
+ "r__fileLocation_name": "ExactTarget Enhanced FTP",
+ "sendEmailNotification": false,
+ "standardQuotedStrings": true
+}
diff --git a/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixKey_pause-response.xml b/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixKey_pause-response.xml
new file mode 100644
index 000000000..b5b72f81b
--- /dev/null
+++ b/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixKey_pause-response.xml
@@ -0,0 +1,32 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:60a72d4a-847e-4d9b-a4eb-a42951078298
+ urn:uuid:0b59ed53-72ec-4481-ae06-4ee78912aef2
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-06-01T12:04:20Z
+ 2023-06-01T12:09:20Z
+
+
+
+
+
+ OK
+ 3b1c8cee-b270-49cb-b77b-e7b33934d1b6
+
+
+ 08afb0e2-b00a-4c88-fixKey_pause
+ testExisting_automation_fixedKey_paused
+ testExisting_automation_fixKey_pause
+
+
+
+
diff --git a/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixKey_schedule-response.xml b/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixKey_schedule-response.xml
new file mode 100644
index 000000000..86773f622
--- /dev/null
+++ b/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixKey_schedule-response.xml
@@ -0,0 +1,32 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:60a72d4a-847e-4d9b-a4eb-a42951078298
+ urn:uuid:0b59ed53-72ec-4481-ae06-4ee78912aef2
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-06-01T12:04:20Z
+ 2023-06-01T12:09:20Z
+
+
+
+
+
+ OK
+ 3b1c8cee-b270-49cb-b77b-e7b33934d1b6
+
+
+ 08afb0e2-b00a-4c88-fixKey_schedule
+ testExisting_automation_fixedKey_scheduled
+ testExisting_automation_fixKey_schedule
+
+
+
+
diff --git a/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixedKey_paused-response.xml b/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixedKey_paused-response.xml
new file mode 100644
index 000000000..ce6885409
--- /dev/null
+++ b/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixedKey_paused-response.xml
@@ -0,0 +1,32 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:60a72d4a-847e-4d9b-a4eb-a42951078298
+ urn:uuid:0b59ed53-72ec-4481-ae06-4ee78912aef2
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-06-01T12:04:20Z
+ 2023-06-01T12:09:20Z
+
+
+
+
+
+ OK
+ 3b1c8cee-b270-49cb-b77b-e7b33934d1b6
+
+
+ 08afb0e2-b00a-4c88-fixKey_pause
+ testExisting_automation_fixedKey_paused
+ testExisting_automation_fixedKey_paused
+
+
+
+
diff --git a/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixedKey_scheduled-response.xml b/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixedKey_scheduled-response.xml
new file mode 100644
index 000000000..a1517f9db
--- /dev/null
+++ b/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixedKey_scheduled-response.xml
@@ -0,0 +1,32 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:60a72d4a-847e-4d9b-a4eb-a42951078298
+ urn:uuid:0b59ed53-72ec-4481-ae06-4ee78912aef2
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-06-01T12:04:20Z
+ 2023-06-01T12:09:20Z
+
+
+
+
+
+ OK
+ 3b1c8cee-b270-49cb-b77b-e7b33934d1b6
+
+
+ 08afb0e2-b00a-4c88-fixKey_schedule
+ testExisting_automation_fixedKey_scheduled
+ testExisting_automation_fixedKey_scheduled
+
+
+
+
diff --git a/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_pause-response.xml b/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_pause-response.xml
new file mode 100644
index 000000000..6d33a7bfc
--- /dev/null
+++ b/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_pause-response.xml
@@ -0,0 +1,30 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:60a72d4a-847e-4d9b-a4eb-a42951078298
+ urn:uuid:0b59ed53-72ec-4481-ae06-4ee78912aef2
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-06-01T12:04:20Z
+ 2023-06-01T12:09:20Z
+
+
+
+
+
+ OK
+ 3b1c8cee-b270-49cb-b77b-e7b33934d1b6
+
+
+ 08afb0e2-b00a-4c88-ad2e-pause
+
+
+
+
diff --git a/test/resources/9999999/program/retrieve-response.xml b/test/resources/9999999/program/retrieve-response.xml
index 67ede7785..6490d5491 100644
--- a/test/resources/9999999/program/retrieve-response.xml
+++ b/test/resources/9999999/program/retrieve-response.xml
@@ -24,9 +24,27 @@
08afb0e2-b00a-4c88-ad2e-1f7f8788c560
- testExisting_automation
- testExisting_automation
+ testExisting_automation
+ testExisting_automation
+
+
+
+ 08afb0e2-b00a-4c88-ad2e-pause
+ testExisting_automation_pause
+ testExisting_automation_pause
+
+
+
+ 08afb0e2-b00a-4c88-fixKey_schedule
+ testExisting_automation_fixedKey_scheduled
+ testExisting_automation_fixKey_schedule
+
+
+
+ 08afb0e2-b00a-4c88-fixKey_pause
+ testExisting_automation_fixedKey_paused
+ testExisting_automation_fixKey_pause
-
\ No newline at end of file
+
diff --git a/test/resources/9999999/query/patch_fixKeys-expected.json b/test/resources/9999999/query/patch_fixKeys-expected.json
new file mode 100644
index 000000000..77a1e032e
--- /dev/null
+++ b/test/resources/9999999/query/patch_fixKeys-expected.json
@@ -0,0 +1,11 @@
+{
+ "name": "testExisting_query_fixedKeys",
+ "key": "testExisting_query_fixedKeys",
+ "description": "updated on deploy",
+ "targetKey": "testExisting_dataExtension",
+ "createdDate": "2022-04-26T15:21:16.453",
+ "modifiedDate": "2022-04-26T16:04:15.88",
+ "targetUpdateTypeName": "Overwrite",
+ "isFrozen": false,
+ "r__folder_Path": "Query"
+}
diff --git a/test/resources/9999999/query/patch_fixKeys-expected.sql b/test/resources/9999999/query/patch_fixKeys-expected.sql
new file mode 100644
index 000000000..2a32f5fad
--- /dev/null
+++ b/test/resources/9999999/query/patch_fixKeys-expected.sql
@@ -0,0 +1,6 @@
+SELECT
+ SubscriberKey AS testField
+FROM
+ _Subscribers
+WHERE
+ country IN ('test')
diff --git a/test/resources/9999999/queryDefinition/retrieve-response.xml b/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_queryANDStatus=Active-response.xml
similarity index 100%
rename from test/resources/9999999/queryDefinition/retrieve-response.xml
rename to test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_queryANDStatus=Active-response.xml
diff --git a/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixKeysANDStatus=Active-response.xml b/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixKeysANDStatus=Active-response.xml
new file mode 100644
index 000000000..d816ae0d9
--- /dev/null
+++ b/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixKeysANDStatus=Active-response.xml
@@ -0,0 +1,30 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:7ef0345e-b559-4fc4-8986-47e54e1a8a58
+ urn:uuid:b2e814a6-517c-4882-9bbb-238bfce951ce
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-04-11T16:33:48Z
+ 2023-04-11T16:38:48Z
+
+
+
+
+
+ OK
+ e8eb2988-2f43-4243-a6b0-6ab6b841a6ab
+
+
+ 549f0568-607c-4940-afef-437965094dat_fixKeys
+
+
+
+
diff --git a/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixedKeysANDStatus=Active-response.xml b/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixedKeysANDStatus=Active-response.xml
new file mode 100644
index 000000000..db31d8288
--- /dev/null
+++ b/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixedKeysANDStatus=Active-response.xml
@@ -0,0 +1,30 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:7ef0345e-b559-4fc4-8986-47e54e1a8a58
+ urn:uuid:b2e814a6-517c-4882-9bbb-238bfce951ce
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-04-11T16:33:48Z
+ 2023-04-11T16:38:48Z
+
+
+
+
+
+ OK
+ e8eb2988-2f43-4243-a6b0-6ab6b841a6ab
+
+
+ 549f0568-607c-4940-afef-437965094dat
+
+
+
+
\ No newline at end of file
diff --git a/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testNew_queryANDStatus=Active-response.xml b/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testNew_queryANDStatus=Active-response.xml
new file mode 100644
index 000000000..ad6aad842
--- /dev/null
+++ b/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testNew_queryANDStatus=Active-response.xml
@@ -0,0 +1,30 @@
+
+
+
+ RetrieveResponse
+ urn:uuid:7ef0345e-b559-4fc4-8986-47e54e1a8a58
+ urn:uuid:b2e814a6-517c-4882-9bbb-238bfce951ce
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-04-11T16:33:48Z
+ 2023-04-11T16:38:48Z
+
+
+
+
+
+ OK
+ e8eb2988-2f43-4243-a6b0-6ab6b841a6ab
+
+
+ 549f0568-607c-4940-afef-437965094dae
+
+
+
+
\ No newline at end of file
diff --git a/test/resources/9999999/script/build-expected.json b/test/resources/9999999/script/build-expected.json
new file mode 100644
index 000000000..6daa00403
--- /dev/null
+++ b/test/resources/9999999/script/build-expected.json
@@ -0,0 +1,6 @@
+{
+ "description": "",
+ "key": "testTemplated_script",
+ "name": "testTemplated_script",
+ "r__folder_Path": "Scripts"
+}
diff --git a/test/resources/9999999/script/build-expected.ssjs b/test/resources/9999999/script/build-expected.ssjs
new file mode 100644
index 000000000..27c4b7e5c
--- /dev/null
+++ b/test/resources/9999999/script/build-expected.ssjs
@@ -0,0 +1 @@
+//dummy
diff --git a/test/resources/9999999/script/get-expected.json b/test/resources/9999999/script/get-expected.json
new file mode 100644
index 000000000..6572bab64
--- /dev/null
+++ b/test/resources/9999999/script/get-expected.json
@@ -0,0 +1,8 @@
+{
+ "createdDate": "2022-10-20T00:41:26.163",
+ "description": "",
+ "key": "testExisting_script",
+ "modifiedDate": "2022-10-20T00:41:26.163",
+ "name": "testExisting_script",
+ "r__folder_Path": "Scripts"
+}
diff --git a/test/resources/9999999/script/get-expected.ssjs b/test/resources/9999999/script/get-expected.ssjs
new file mode 100644
index 000000000..27c4b7e5c
--- /dev/null
+++ b/test/resources/9999999/script/get-expected.ssjs
@@ -0,0 +1 @@
+//dummy
diff --git a/test/resources/9999999/script/get_noScriptTag-expected.html b/test/resources/9999999/script/get_noScriptTag-expected.html
new file mode 100644
index 000000000..634388fcc
--- /dev/null
+++ b/test/resources/9999999/script/get_noScriptTag-expected.html
@@ -0,0 +1 @@
+// no script tag
diff --git a/test/resources/9999999/script/get_noScriptTag-expected.json b/test/resources/9999999/script/get_noScriptTag-expected.json
new file mode 100644
index 000000000..f6090804f
--- /dev/null
+++ b/test/resources/9999999/script/get_noScriptTag-expected.json
@@ -0,0 +1,8 @@
+{
+ "createdDate": "2022-10-20T00:41:26.163",
+ "description": "",
+ "key": "testExisting_script_noScriptTag",
+ "modifiedDate": "2022-10-20T00:41:26.163",
+ "name": "testExisting_script_noScriptTag",
+ "r__folder_Path": "Scripts"
+}
diff --git a/test/resources/9999999/script/patch-expected.json b/test/resources/9999999/script/patch-expected.json
new file mode 100644
index 000000000..81f145a49
--- /dev/null
+++ b/test/resources/9999999/script/patch-expected.json
@@ -0,0 +1,8 @@
+{
+ "createdDate": "2022-10-20T00:41:26.163",
+ "description": "updated on deploy",
+ "key": "testExisting_script",
+ "modifiedDate": "2022-10-20T00:41:26.163",
+ "name": "testExisting_script",
+ "r__folder_Path": "Scripts"
+}
diff --git a/test/resources/9999999/script/patch-expected.ssjs b/test/resources/9999999/script/patch-expected.ssjs
new file mode 100644
index 000000000..e20d1ee2d
--- /dev/null
+++ b/test/resources/9999999/script/patch-expected.ssjs
@@ -0,0 +1 @@
+// dummy updated
diff --git a/test/resources/9999999/script/post-expected.json b/test/resources/9999999/script/post-expected.json
new file mode 100644
index 000000000..a2389daac
--- /dev/null
+++ b/test/resources/9999999/script/post-expected.json
@@ -0,0 +1,8 @@
+{
+ "createdDate": "2022-10-20T00:41:26.163",
+ "description": "created on deploy",
+ "key": "testNew_script",
+ "modifiedDate": "2022-10-20T00:41:26.163",
+ "name": "testNew_script",
+ "r__folder_Path": "Scripts"
+}
diff --git a/test/resources/9999999/script/post-expected.ssjs b/test/resources/9999999/script/post-expected.ssjs
new file mode 100644
index 000000000..bbfd28311
--- /dev/null
+++ b/test/resources/9999999/script/post-expected.ssjs
@@ -0,0 +1 @@
+// dummy created
diff --git a/test/resources/9999999/script/template-expected.json b/test/resources/9999999/script/template-expected.json
new file mode 100644
index 000000000..bd3ae9904
--- /dev/null
+++ b/test/resources/9999999/script/template-expected.json
@@ -0,0 +1,6 @@
+{
+ "description": "",
+ "key": "{{{prefix}}}script",
+ "name": "{{{prefix}}}script",
+ "r__folder_Path": "Scripts"
+}
diff --git a/test/resources/9999999/script/template-expected.ssjs b/test/resources/9999999/script/template-expected.ssjs
new file mode 100644
index 000000000..27c4b7e5c
--- /dev/null
+++ b/test/resources/9999999/script/template-expected.ssjs
@@ -0,0 +1 @@
+//dummy
diff --git a/test/resources/9999999/triggeredSend/build-expected.json b/test/resources/9999999/triggeredSend/build-expected.json
new file mode 100644
index 000000000..7a80475ea
--- /dev/null
+++ b/test/resources/9999999/triggeredSend/build-expected.json
@@ -0,0 +1,29 @@
+{
+ "AllowedSlots": 0,
+ "AutoAddSubscribers": false,
+ "AutoUpdateSubscribers": false,
+ "BatchInterval": 0,
+ "BccEmail": "",
+ "CreatedDate": "2018-06-25T05:58:00",
+ "CustomerKey": "testTemplated_triggeredSend",
+ "Description": "Unsubscribe_Email",
+ "DynamicEmailSubject": "You are successfully unsubscribed",
+ "EmailSubject": "You are successfully unsubscribed",
+ "FromAddress": "unsubscribe@emails.mcdev.accenture.com",
+ "FromName": "unsubscribe",
+ "IsMultipart": false,
+ "IsWrapped": true,
+ "Keyword": "",
+ "ModifiedDate": "2018-06-25T05:58:00",
+ "Name": "testTemplated_triggeredSend",
+ "NewSlotTrigger": 0,
+ "Priority": 4,
+ "SendClassification": {
+ "CustomerKey": "Default Transactional"
+ },
+ "SuppressTracking": false,
+ "TriggeredSendStatus": "New",
+ "TriggeredSendType": "Continuous",
+ "r__email_Name": "Sporting Goods for September",
+ "r__folder_Path": "Triggered Sends"
+}
diff --git a/test/resources/9999999/triggeredSend/get-expected.json b/test/resources/9999999/triggeredSend/get-expected.json
new file mode 100644
index 000000000..49858491f
--- /dev/null
+++ b/test/resources/9999999/triggeredSend/get-expected.json
@@ -0,0 +1,29 @@
+{
+ "AllowedSlots": 0,
+ "AutoAddSubscribers": false,
+ "AutoUpdateSubscribers": false,
+ "BatchInterval": 0,
+ "BccEmail": "",
+ "CreatedDate": "2018-06-25T05:58:00",
+ "CustomerKey": "testExisting_triggeredSend",
+ "Description": "Unsubscribe_Email",
+ "DynamicEmailSubject": "You are successfully unsubscribed",
+ "EmailSubject": "You are successfully unsubscribed",
+ "FromAddress": "unsubscribe@emails.mcdev.accenture.com",
+ "FromName": "unsubscribe",
+ "IsMultipart": false,
+ "IsWrapped": true,
+ "Keyword": "",
+ "ModifiedDate": "2018-06-25T05:58:00",
+ "Name": "testExisting_triggeredSend",
+ "NewSlotTrigger": 0,
+ "Priority": 4,
+ "SendClassification": {
+ "CustomerKey": "Default Transactional"
+ },
+ "SuppressTracking": false,
+ "TriggeredSendStatus": "New",
+ "TriggeredSendType": "Continuous",
+ "r__email_Name": "Sporting Goods for September",
+ "r__folder_Path": "Triggered Sends"
+}
diff --git a/test/resources/9999999/triggeredSend/patch-expected.json b/test/resources/9999999/triggeredSend/patch-expected.json
new file mode 100644
index 000000000..89a0da5fd
--- /dev/null
+++ b/test/resources/9999999/triggeredSend/patch-expected.json
@@ -0,0 +1,29 @@
+{
+ "AllowedSlots": 0,
+ "AutoAddSubscribers": false,
+ "AutoUpdateSubscribers": false,
+ "BatchInterval": 0,
+ "BccEmail": "",
+ "CreatedDate": "2018-06-25T05:58:00",
+ "CustomerKey": "testExisting_triggeredSend",
+ "Description": "updated on deploy",
+ "DynamicEmailSubject": "You are successfully unsubscribed",
+ "EmailSubject": "You are successfully unsubscribed",
+ "FromAddress": "unsubscribe@emails.mcdev.accenture.com",
+ "FromName": "unsubscribe",
+ "IsMultipart": false,
+ "IsWrapped": true,
+ "Keyword": "",
+ "ModifiedDate": "2018-06-25T05:58:00",
+ "Name": "testExisting_triggeredSend",
+ "NewSlotTrigger": 0,
+ "Priority": 4,
+ "SendClassification": {
+ "CustomerKey": "Default Transactional"
+ },
+ "SuppressTracking": false,
+ "TriggeredSendStatus": "New",
+ "TriggeredSendType": "Continuous",
+ "r__email_Name": "Sporting Goods for September",
+ "r__folder_Path": "Triggered Sends"
+}
diff --git a/test/resources/9999999/triggeredSend/post-expected.json b/test/resources/9999999/triggeredSend/post-expected.json
new file mode 100644
index 000000000..e9031ce8c
--- /dev/null
+++ b/test/resources/9999999/triggeredSend/post-expected.json
@@ -0,0 +1,29 @@
+{
+ "AllowedSlots": 0,
+ "AutoAddSubscribers": false,
+ "AutoUpdateSubscribers": false,
+ "BatchInterval": 0,
+ "BccEmail": "",
+ "CreatedDate": "2018-06-25T05:58:00",
+ "CustomerKey": "testNew_triggeredSend",
+ "Description": "created on deploy",
+ "DynamicEmailSubject": "You are successfully unsubscribed",
+ "EmailSubject": "You are successfully unsubscribed",
+ "FromAddress": "unsubscribe@emails.mcdev.accenture.com",
+ "FromName": "unsubscribe",
+ "IsMultipart": false,
+ "IsWrapped": true,
+ "Keyword": "",
+ "ModifiedDate": "2018-06-25T05:58:00",
+ "Name": "testNew_triggeredSend",
+ "NewSlotTrigger": 0,
+ "Priority": 4,
+ "SendClassification": {
+ "CustomerKey": "Default Transactional"
+ },
+ "SuppressTracking": false,
+ "TriggeredSendStatus": "New",
+ "TriggeredSendType": "Continuous",
+ "r__email_Name": "Sporting Goods for September",
+ "r__folder_Path": "Triggered Sends"
+}
diff --git a/test/resources/9999999/triggeredSend/template-expected.json b/test/resources/9999999/triggeredSend/template-expected.json
new file mode 100644
index 000000000..0dd1252a2
--- /dev/null
+++ b/test/resources/9999999/triggeredSend/template-expected.json
@@ -0,0 +1,29 @@
+{
+ "AllowedSlots": 0,
+ "AutoAddSubscribers": false,
+ "AutoUpdateSubscribers": false,
+ "BatchInterval": 0,
+ "BccEmail": "",
+ "CreatedDate": "2018-06-25T05:58:00",
+ "CustomerKey": "{{{prefix}}}triggeredSend",
+ "Description": "Unsubscribe_Email",
+ "DynamicEmailSubject": "You are successfully unsubscribed",
+ "EmailSubject": "You are successfully unsubscribed",
+ "FromAddress": "unsubscribe@emails.mcdev.accenture.com",
+ "FromName": "unsubscribe",
+ "IsMultipart": false,
+ "IsWrapped": true,
+ "Keyword": "",
+ "ModifiedDate": "2018-06-25T05:58:00",
+ "Name": "{{{prefix}}}triggeredSend",
+ "NewSlotTrigger": 0,
+ "Priority": 4,
+ "SendClassification": {
+ "CustomerKey": "Default Transactional"
+ },
+ "SuppressTracking": false,
+ "TriggeredSendStatus": "New",
+ "TriggeredSendType": "Continuous",
+ "r__email_Name": "Sporting Goods for September",
+ "r__folder_Path": "Triggered Sends"
+}
diff --git a/test/resources/9999999/triggeredSendDefinition/create-response.xml b/test/resources/9999999/triggeredSendDefinition/create-response.xml
new file mode 100644
index 000000000..decdebd9d
--- /dev/null
+++ b/test/resources/9999999/triggeredSendDefinition/create-response.xml
@@ -0,0 +1,75 @@
+
+
+
+ CreateResponse
+ urn:uuid:9d4bb477-f79f-4f3f-8304-5c0dcd0e5b66
+ urn:uuid:dd06e2ef-2adc-4227-b872-1fc34e48a984
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-08-08T13:42:51Z
+ 2023-08-08T13:47:51Z
+
+
+
+
+
+
+ OK
+ TriggeredSendDefinition created
+ 0
+ 0
+ 6cfadead-f635-ee11-b85a-48df37d1de8a
+
+
+
+ TestEmailAddr
+
+
+ 2018-06-25T05:58:00
+ 2018-06-25T05:58:00
+ 6cfadead-f635-ee11-b85a-48df37d1de8a
+ testNew_triggeredSend
+ false
+ testNew_triggeredSend
+ created on deploy
+
+ 89348
+
+
+
+ Default Transactional
+
+ unsubscribe
+ unsubscribe@emails.mcdev.accenture.com
+ false
+ Continuous
+ New
+
+
+ 483943
+
+
+ false
+ false
+ 0
+
+ You are successfully unsubscribed
+ You are successfully unsubscribed
+ false
+ true
+ 0
+ 0
+ 4
+
+
+ 25fe1ec4-1204-42fd-9f0e-32166b82a5a5
+ OK
+
+
+
diff --git a/test/resources/9999999/triggeredSendDefinition/delete-response.xml b/test/resources/9999999/triggeredSendDefinition/delete-response.xml
new file mode 100644
index 000000000..712935560
--- /dev/null
+++ b/test/resources/9999999/triggeredSendDefinition/delete-response.xml
@@ -0,0 +1,36 @@
+
+
+
+ DeleteResponse
+ urn:uuid:9b7ec2d4-b9cf-4443-aa99-7d790b0d8ed9
+ urn:uuid:b9274179-8dba-4434-9f06-7e3f5dcc5d36
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-08-08T13:33:37Z
+ 2023-08-08T13:38:37Z
+
+
+
+
+
+
+ OK
+ TriggeredSendDefinition deleted
+ 0
+
+
+
+ TestKey-419705
+
+
+ e63109fe-085f-4d9d-950b-05d827c74b0e
+ OK
+
+
+
diff --git a/test/resources/9999999/triggeredSendDefinition/retrieve-response.xml b/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml
similarity index 94%
rename from test/resources/9999999/triggeredSendDefinition/retrieve-response.xml
rename to test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml
index d2c1eebdd..174140d06 100644
--- a/test/resources/9999999/triggeredSendDefinition/retrieve-response.xml
+++ b/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml
@@ -30,12 +30,12 @@
2018-06-25T05:58:00
2018-06-25T05:58:00
b3150cf0-6e78-e811-80d4-1402ec721c9d
- 2621
+ testExisting_triggeredSend
false
- Unsubscribe_Email
+ testExisting_triggeredSend
Unsubscribe_Email
- 5654
+ 89348
@@ -48,7 +48,7 @@
New
- 1960
+ 483943
false
diff --git a/test/resources/9999999/triggeredSendDefinition/update-response.xml b/test/resources/9999999/triggeredSendDefinition/update-response.xml
new file mode 100644
index 000000000..036e60f5e
--- /dev/null
+++ b/test/resources/9999999/triggeredSendDefinition/update-response.xml
@@ -0,0 +1,74 @@
+
+
+
+ UpdateResponse
+ urn:uuid:9d4bb477-f79f-4f3f-8304-5c0dcd0e5b66
+ urn:uuid:dd06e2ef-2adc-4227-b872-1fc34e48a984
+ http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
+
+
+ 2023-08-08T13:42:51Z
+ 2023-08-08T13:47:51Z
+
+
+
+
+
+
+
+ OK
+ TriggeredSendDefinition updated
+ 0
+
+
+
+ TestEmailAddr
+
+
+ 2018-06-25T05:58:00
+ 2018-06-25T05:58:00
+ b3150cf0-6e78-e811-80d4-1402ec721c9d
+ testExisting_triggeredSend
+ false
+ testExisting_triggeredSend
+ updated on deploy
+
+ 89348
+
+
+
+ Default Transactional
+
+ unsubscribe
+ unsubscribe@emails.mcdev.accenture.com
+ false
+ Continuous
+ New
+
+
+ 483943
+
+
+ false
+ false
+ 0
+
+ You are successfully unsubscribed
+ You are successfully unsubscribed
+ false
+ true
+ 0
+ 0
+ 4
+
+
+ 25fe1ec4-1204-42fd-9f0e-32166b82a5a5
+ OK
+
+
+
diff --git a/test/type.attributeGroup.test.js b/test/type.attributeGroup.test.js
new file mode 100644
index 000000000..49ff53a13
--- /dev/null
+++ b/test/type.attributeGroup.test.js
@@ -0,0 +1,55 @@
+const chai = require('chai');
+const chaiFiles = require('chai-files');
+
+chai.use(chaiFiles);
+
+const assert = chai.assert;
+const cache = require('../lib/util/cache');
+const testUtils = require('./utils');
+const handler = require('../lib/index');
+
+describe('type: attributeGroup', () => {
+ beforeEach(() => {
+ testUtils.mockSetup();
+ });
+ afterEach(() => {
+ testUtils.mockReset();
+ });
+ describe('Retrieve ================', () => {
+ it('Should retrieve a attributeGroup', async () => {
+ // WHEN
+ const retrieve = await handler.retrieve('testInstance/testBU', ['attributeGroup']);
+
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+ assert.equal(
+ retrieve['testInstance/testBU'].attributeGroup
+ ? Object.keys(retrieve['testInstance/testBU'].attributeGroup).length
+ : 0,
+ 7,
+ 'only 7 attributeGroups expected in retrieve response'
+ );
+
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.attributeGroup ? Object.keys(result.attributeGroup).length : 0,
+ 7,
+ 'only 7 attributeGroups expected in cache'
+ );
+ assert.deepEqual(
+ await testUtils.getActualJson('ETMobileConnect', 'attributeGroup'),
+ await testUtils.getExpectedJson('9999999', 'attributeGroup', 'retrieve'),
+
+ 'returned metadata was not equal expected'
+ );
+
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 2,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+});
diff --git a/test/type.attributeSet.test.js b/test/type.attributeSet.test.js
new file mode 100644
index 000000000..d05ea88a0
--- /dev/null
+++ b/test/type.attributeSet.test.js
@@ -0,0 +1,55 @@
+const chai = require('chai');
+const chaiFiles = require('chai-files');
+
+chai.use(chaiFiles);
+
+const assert = chai.assert;
+const cache = require('../lib/util/cache');
+const testUtils = require('./utils');
+const handler = require('../lib/index');
+
+describe('type: attributeSet', () => {
+ beforeEach(() => {
+ testUtils.mockSetup();
+ });
+ afterEach(() => {
+ testUtils.mockReset();
+ });
+ describe('Retrieve ================', () => {
+ it('Should retrieve a attributeSet', async () => {
+ // WHEN
+ const retrieve = await handler.retrieve('testInstance/testBU', ['attributeSet']);
+
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+ assert.equal(
+ retrieve['testInstance/testBU'].attributeSet
+ ? Object.keys(retrieve['testInstance/testBU'].attributeSet).length
+ : 0,
+ 27,
+ 'only 27 attributeSets expected in retrieve response'
+ );
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.attributeSet ? Object.keys(result.attributeSet).length : 0,
+ 27,
+ 'only 27 attributeSets expected in cache'
+ );
+
+ assert.deepEqual(
+ await testUtils.getActualJson('MobileSubscriptions', 'attributeSet'),
+ await testUtils.getExpectedJson('9999999', 'attributeSet', 'retrieve'),
+
+ 'returned metadata was not equal expected'
+ );
+
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 7,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+});
diff --git a/test/type.automation.test.js b/test/type.automation.test.js
index 5f9dd60bb..b4643f3fe 100644
--- a/test/type.automation.test.js
+++ b/test/type.automation.test.js
@@ -27,8 +27,8 @@ describe('type: automation', () => {
const result = cache.getCache();
assert.equal(
result.automation ? Object.keys(result.automation).length : 0,
- 1,
- 'only one automation expected'
+ 4,
+ 'only four automations expected'
);
assert.deepEqual(
await testUtils.getActualJson('testExisting_automation', 'automation'),
@@ -50,7 +50,7 @@ describe('type: automation', () => {
assert.equal(
testUtils.getAPIHistoryLength(),
- 14,
+ 17,
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
);
return;
@@ -62,16 +62,25 @@ describe('type: automation', () => {
});
it('Should create & update a automation', async () => {
// WHEN
- await handler.deploy('testInstance/testBU', ['automation']);
+ const deployResult = await handler.deploy('testInstance/testBU', ['automation']);
// THEN
assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
- // get results from cache
- const result = cache.getCache();
+ // check how many items were deployed
assert.equal(
- result.automation ? Object.keys(result.automation).length : 0,
+ deployResult['testInstance/testBU']?.automation
+ ? Object.keys(deployResult['testInstance/testBU']?.automation).length
+ : 0,
2,
- 'two automations expected'
+ 'two automations to be deployed'
+ );
+
+ // get results from cache
+ const cacheResult = cache.getCache();
+ assert.equal(
+ cacheResult.automation ? Object.keys(cacheResult.automation).length : 0,
+ 5,
+ 'three automations expected'
);
// insert
assert.deepEqual(
@@ -111,12 +120,437 @@ describe('type: automation', () => {
assert.equal(
testUtils.getAPIHistoryLength(),
- 15,
+ 16,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should update & schedule an automation with --schedule option', async () => {
+ // WHEN
+ handler.setOptions({ schedule: true });
+ const deployed = await handler.deploy(
+ 'testInstance/testBU',
+ ['automation'],
+ ['testExisting_automation', 'testNew_automation']
+ );
+ // THEN
+ assert.equal(
+ process.exitCode,
+ false,
+ 'deploy with --execute should not have thrown an error'
+ );
+
+ // get results from cache
+ const cached = cache.getCache();
+ assert.equal(
+ cached.automation ? Object.keys(cached.automation).length : 0,
+ 5,
+ 'five cached automation expected'
+ );
+ assert.equal(
+ deployed['testInstance/testBU'].automation
+ ? Object.keys(deployed['testInstance/testBU'].automation).length
+ : 0,
+ 2,
+ 'two deployed automation expected'
+ );
+ assert.equal(
+ deployed['testInstance/testBU'].automation
+ ? Object.keys(deployed['testInstance/testBU'].automation)[0]
+ : null,
+ 'testNew_automation',
+ 'expected specific automation to have been deployed'
+ );
+ assert.equal(
+ deployed['testInstance/testBU'].automation
+ ? Object.keys(deployed['testInstance/testBU'].automation)[1]
+ : null,
+ 'testExisting_automation',
+ 'expected specific automation to have been deployed'
+ );
+
+ // update
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_automation', 'automation'),
+ await testUtils.getExpectedJson('9999999', 'automation', 'update'),
+ 'returned metadata was not equal expected for update'
+ );
+ // check if MD file was created and equals expectations
+ expect(file(testUtils.getActualDoc('testExisting_automation', 'automation'))).to.equal(
+ file(
+ testUtils.getExpectedFile(
+ '9999999',
+ 'automation',
+ 'update-testExisting_automation',
+ 'md'
+ )
+ )
+ );
+
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 24,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should update & runOnce an automation with --execute option', async () => {
+ // WHEN
+ handler.setOptions({ execute: true });
+ const deployed = await handler.deploy(
+ 'testInstance/testBU',
+ ['automation'],
+ ['testExisting_automation', 'testNew_automation']
+ );
+ // THEN
+ assert.equal(
+ process.exitCode,
+ false,
+ 'deploy with --execute should not have thrown an error'
+ );
+
+ // get results from cache
+ const cached = cache.getCache();
+ assert.equal(
+ cached.automation ? Object.keys(cached.automation).length : 0,
+ 5,
+ 'five cached automation expected'
+ );
+ assert.equal(
+ deployed['testInstance/testBU'].automation
+ ? Object.keys(deployed['testInstance/testBU'].automation).length
+ : 0,
+ 2,
+ 'two deployed automation expected'
+ );
+ assert.equal(
+ deployed['testInstance/testBU'].automation
+ ? Object.keys(deployed['testInstance/testBU'].automation)[0]
+ : null,
+ 'testNew_automation',
+ 'expected specific automation to have been deployed'
+ );
+ assert.equal(
+ deployed['testInstance/testBU'].automation
+ ? Object.keys(deployed['testInstance/testBU'].automation)[1]
+ : null,
+ 'testExisting_automation',
+ 'expected specific automation to have been deployed'
+ );
+ // update
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_automation', 'automation'),
+ await testUtils.getExpectedJson('9999999', 'automation', 'update'),
+ 'returned metadata was not equal expected for update'
+ );
+ // check if MD file was created and equals expectations
+ expect(file(testUtils.getActualDoc('testExisting_automation', 'automation'))).to.equal(
+ file(
+ testUtils.getExpectedFile(
+ '9999999',
+ 'automation',
+ 'update-testExisting_automation',
+ 'md'
+ )
+ )
+ );
+
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 20,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('FixKeys ================', () => {
+ beforeEach(() => {
+ testUtils.mockSetup(true);
+ });
+ it('Should run fixKeys but not find fixable keys and hence stop', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: false } });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'automation', [
+ 'testExisting_automation',
+ ]);
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // check which keys were fixed
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 0,
+ 'expected to find no keys to be fixed'
+ );
+
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.automation ? Object.keys(result.automation).length : 0,
+ 1,
+ 'one automation expected'
+ );
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 14,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys by key w/o re-retrieving, auto-schedule', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: false } });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'automation', [
+ 'testExisting_automation_fixKey_schedule',
+ 'testExisting_automation',
+ ]);
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_automation_fixedKey_scheduled',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson(
+ 'testExisting_automation_fixedKey_scheduled',
+ 'automation'
+ ),
+ await testUtils.getExpectedJson('9999999', 'automation', 'patch_fixKeys-schedule'),
+ 'returned metadata was not equal expected for update automation'
+ );
+ expect(
+ file(
+ testUtils.getActualDoc(
+ 'testExisting_automation_fixedKey_scheduled',
+ 'automation'
+ )
+ )
+ ).to.exist;
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 29,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys by key w/o re-retrieving, auto-schedule and then --execute', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: false }, execute: true });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'automation', [
+ 'testExisting_automation_fixKey_schedule',
+ 'testExisting_automation',
+ ]);
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_automation_fixedKey_scheduled',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson(
+ 'testExisting_automation_fixedKey_scheduled',
+ 'automation'
+ ),
+ await testUtils.getExpectedJson('9999999', 'automation', 'patch_fixKeys-schedule'),
+ 'returned metadata was not equal expected for update automation'
+ );
+ expect(
+ file(
+ testUtils.getActualDoc(
+ 'testExisting_automation_fixedKey_scheduled',
+ 'automation'
+ )
+ )
+ ).to.exist;
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 31,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys by key w/o re-retrieving, auto-schedule and then --schedule', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: false }, schedule: true });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'automation', [
+ 'testExisting_automation_fixKey_schedule',
+ 'testExisting_automation',
+ ]);
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_automation_fixedKey_scheduled',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson(
+ 'testExisting_automation_fixedKey_scheduled',
+ 'automation'
+ ),
+ await testUtils.getExpectedJson('9999999', 'automation', 'patch_fixKeys-schedule'),
+ 'returned metadata was not equal expected for update automation'
+ );
+ expect(
+ file(
+ testUtils.getActualDoc(
+ 'testExisting_automation_fixedKey_scheduled',
+ 'automation'
+ )
+ )
+ ).to.exist;
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 32,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys by key w/o re-retrieving, deploy paused', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: false } });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'automation', [
+ 'testExisting_automation_fixKey_pause',
+ ]);
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_automation_fixedKey_paused',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson(
+ 'testExisting_automation_fixedKey_paused',
+ 'automation'
+ ),
+ await testUtils.getExpectedJson('9999999', 'automation', 'patch_fixKeys-pause'),
+ 'returned metadata was not equal expected for update automation'
+ );
+ expect(
+ file(
+ testUtils.getActualDoc('testExisting_automation_fixedKey_paused', 'automation')
+ )
+ ).to.exist;
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 26,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys by key w/o re-retrieving, deploy paused and then --execute', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: false }, execute: true });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'automation', [
+ 'testExisting_automation_fixKey_pause',
+ 'testExisting_automation',
+ ]);
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_automation_fixedKey_paused',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson(
+ 'testExisting_automation_fixedKey_paused',
+ 'automation'
+ ),
+ await testUtils.getExpectedJson('9999999', 'automation', 'patch_fixKeys-pause'),
+ 'returned metadata was not equal expected for update automation'
+ );
+ expect(
+ file(
+ testUtils.getActualDoc('testExisting_automation_fixedKey_paused', 'automation')
+ )
+ ).to.exist;
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 30,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys by key w/o re-retrieving, deploy paused and then --schedule', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: false }, schedule: true });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'automation', [
+ 'testExisting_automation_fixKey_pause',
+ 'testExisting_automation',
+ ]);
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_automation_fixedKey_paused',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson(
+ 'testExisting_automation_fixedKey_paused',
+ 'automation'
+ ),
+ await testUtils.getExpectedJson('9999999', 'automation', 'patch_fixKeys-pause'),
+ 'returned metadata was not equal expected for update automation'
+ );
+ expect(
+ file(
+ testUtils.getActualDoc('testExisting_automation_fixedKey_paused', 'automation')
+ )
+ ).to.exist;
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 32,
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
);
return;
});
- it('Should change the key during update via --changeKeyValue');
});
describe('Templating ================', () => {
it('Should create a automation template via retrieveAsTemplate and build it', async () => {
@@ -210,7 +644,7 @@ describe('type: automation', () => {
);
assert.equal(
testUtils.getAPIHistoryLength(),
- 14,
+ 17,
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
);
return;
@@ -256,4 +690,197 @@ describe('type: automation', () => {
return;
});
});
+ describe('Schedule ================', () => {
+ it('Should schedule an automation by key', async () => {
+ const executedKeys = await handler.schedule('testInstance/testBU', 'automation', [
+ 'testExisting_automation',
+ ]);
+ assert.equal(process.exitCode, false, 'execute should not have thrown an error');
+ assert.equal(
+ executedKeys['testInstance/testBU']?.length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ executedKeys['testInstance/testBU'][0],
+ 'testExisting_automation',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ return;
+ });
+ it('Should schedule an automation selected via --like', async () => {
+ handler.setOptions({ like: { key: 'testExist%automation' } });
+ const executedKeys = await handler.schedule('testInstance/testBU', 'automation');
+ assert.equal(process.exitCode, false, 'execute should not have thrown an error');
+ assert.equal(
+ executedKeys['testInstance/testBU']?.length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ executedKeys['testInstance/testBU'][0],
+ 'testExisting_automation',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ return;
+ });
+ it('Should not schedule executing an automation because key and --like was specified', async () => {
+ handler.setOptions({ like: { key: 'testExisting%' } });
+ const executedKeys = await handler.schedule('testInstance/testBU', 'automation', [
+ 'testExisting_automation',
+ ]);
+ assert.equal(process.exitCode, true, 'execute should have thrown an error');
+ assert.equal(
+ Object.keys(executedKeys).length,
+ 0,
+ 'automation was not supposed to be executed'
+ );
+ return;
+ });
+ });
+ describe('Execute ================', () => {
+ it('Should execute --schedule an automation by key', async () => {
+ handler.setOptions({ schedule: true });
+ const executedKeys = await handler.execute('testInstance/testBU', 'automation', [
+ 'testExisting_automation',
+ ]);
+ assert.equal(process.exitCode, false, 'execute should not have thrown an error');
+ assert.equal(
+ executedKeys['testInstance/testBU']?.length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ executedKeys['testInstance/testBU'][0],
+ 'testExisting_automation',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ return;
+ });
+ it('Should execute --schedule an automation selected via --like', async () => {
+ handler.setOptions({ like: { key: 'testExist%automation' }, schedule: true });
+ const executedKeys = await handler.execute('testInstance/testBU', 'automation');
+ assert.equal(process.exitCode, false, 'execute should not have thrown an error');
+ assert.equal(
+ executedKeys['testInstance/testBU']?.length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ executedKeys['testInstance/testBU'][0],
+ 'testExisting_automation',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ return;
+ });
+ it('Should not execute --schedule executing an automation because key and --like was specified', async () => {
+ handler.setOptions({ like: { key: 'testExisting%' }, schedule: true });
+ const executedKeys = await handler.execute('testInstance/testBU', 'automation', [
+ 'testExisting_automation',
+ ]);
+ assert.equal(process.exitCode, true, 'execute should have thrown an error');
+ assert.equal(
+ Object.keys(executedKeys).length,
+ 0,
+ 'automation was not supposed to be executed'
+ );
+ return;
+ });
+ it('Should runOnce an automation by key', async () => {
+ const executedKeys = await handler.execute('testInstance/testBU', 'automation', [
+ 'testExisting_automation',
+ ]);
+ assert.equal(process.exitCode, false, 'execute should not have thrown an error');
+ assert.equal(
+ executedKeys['testInstance/testBU']?.length,
+ 1,
+ 'automation was supposed to be executed'
+ );
+ assert.equal(
+ executedKeys['testInstance/testBU'][0],
+ 'testExisting_automation',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ return;
+ });
+ it('Should runOnce an automation selected via --like', async () => {
+ handler.setOptions({ like: { key: 'testExist%automation' } });
+ const executedKeys = await handler.execute('testInstance/testBU', 'automation');
+ assert.equal(process.exitCode, false, 'execute should not have thrown an error');
+ assert.equal(
+ executedKeys['testInstance/testBU']?.length,
+ 1,
+ 'automation was supposed to be executed'
+ );
+ assert.equal(
+ executedKeys['testInstance/testBU'][0],
+ 'testExisting_automation',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+
+ return;
+ });
+ it('Should not runOnce executing an automation because key and --like was specified', async () => {
+ handler.setOptions({ like: { key: 'testExisting%' } });
+ const executedKeys = await handler.execute('testInstance/testBU', 'automation', [
+ 'testExisting_automation',
+ ]);
+ assert.equal(process.exitCode, true, 'execute should have thrown an error');
+ assert.equal(
+ Object.keys(executedKeys).length,
+ 0,
+ 'automation was not supposed to be executed'
+ );
+
+ return;
+ });
+ });
+ describe('Pause ================', () => {
+ it('Should pause a automation by key', async () => {
+ const pausedKeys = await handler.pause('testInstance/testBU', 'automation', [
+ 'testExisting_automation_pause',
+ ]);
+ assert.equal(process.exitCode, false, 'pause should not have thrown an error');
+ assert.equal(
+ pausedKeys['testInstance/testBU']?.length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ pausedKeys['testInstance/testBU'][0],
+ 'testExisting_automation_pause',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ return;
+ });
+ it('Should pause a automation selected via --like', async () => {
+ handler.setOptions({ like: { key: 'testExisting_a%n_pause' } });
+ const pausedKeys = await handler.pause('testInstance/testBU', 'automation');
+ assert.equal(process.exitCode, false, 'pause should not have thrown an error');
+ assert.equal(
+ pausedKeys['testInstance/testBU']?.length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ pausedKeys['testInstance/testBU'][0],
+ 'testExisting_automation_pause',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ return;
+ });
+ it('Should not pause automation because key and --like was specified', async () => {
+ handler.setOptions({ like: { key: 'testExisting_a%n_pause' } });
+ const pausedKeys = await handler.pause('testInstance/testBU', 'automation', [
+ 'testExisting_automation_pause',
+ ]);
+ assert.equal(process.exitCode, true, 'pause should have thrown an error');
+ assert.equal(
+ Object.keys(pausedKeys).length,
+ 0,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ return;
+ });
+ });
});
diff --git a/test/type.dataExtension.test.js b/test/type.dataExtension.test.js
index d1a068379..e9a8a6d93 100644
--- a/test/type.dataExtension.test.js
+++ b/test/type.dataExtension.test.js
@@ -87,7 +87,6 @@ describe('type: dataExtension', () => {
);
return;
});
- it('Should change the key during update via --changeKeyValue');
it('Should rename fields');
});
describe('Templating ================', () => {
diff --git a/test/type.dataExtract.test.js b/test/type.dataExtract.test.js
new file mode 100644
index 000000000..6c2b3434e
--- /dev/null
+++ b/test/type.dataExtract.test.js
@@ -0,0 +1,187 @@
+const chai = require('chai');
+const chaiFiles = require('chai-files');
+const assert = chai.assert;
+chai.use(chaiFiles);
+const cache = require('../lib/util/cache');
+const testUtils = require('./utils');
+const handler = require('../lib/index');
+
+describe('type: dataExtract', () => {
+ beforeEach(() => {
+ testUtils.mockSetup();
+ });
+ afterEach(() => {
+ testUtils.mockReset();
+ });
+
+ describe('Retrieve ================', () => {
+ it('Should retrieve a dataExtract', async () => {
+ // WHEN
+ await handler.retrieve('testInstance/testBU', ['dataExtract']);
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.dataExtract ? Object.keys(result.dataExtract).length : 0,
+ 1,
+ 'only one dataExtract expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_dataExtract', 'dataExtract'),
+ await testUtils.getExpectedJson('9999999', 'dataExtract', 'get'),
+ 'returned JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 6,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Deploy ================', () => {
+ beforeEach(() => {
+ testUtils.mockSetup(true);
+ });
+ it('Should create & upsert a dataExtract', async () => {
+ // WHEN
+
+ await handler.deploy('testInstance/testBU', ['dataExtract']);
+ // THEN
+ assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.dataExtract ? Object.keys(result.dataExtract).length : 0,
+ 2,
+ 'two dataExtracts expected'
+ );
+ // confirm created item
+ assert.deepEqual(
+ await testUtils.getActualJson('testNew_dataExtract', 'dataExtract'),
+ await testUtils.getExpectedJson('9999999', 'dataExtract', 'post'),
+ 'returned new-JSON was not equal expected for insert dataExtract'
+ );
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_dataExtract', 'dataExtract'),
+ await testUtils.getExpectedJson('9999999', 'dataExtract', 'patch'),
+ 'returned existing-JSON was not equal expected for update dataExtract'
+ );
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 8,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should change the key during update via --changeKeyValue ');
+ });
+ describe('Templating ================', () => {
+ it('Should create a dataExtract template via retrieveAsTemplate and build it', async () => {
+ // buildTemplate
+ const result = await handler.retrieveAsTemplate(
+ 'testInstance/testBU',
+ 'dataExtract',
+ ['testExisting_dataExtract'],
+ 'testSourceMarket'
+ );
+ assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
+ assert.equal(
+ result.dataExtract ? Object.keys(result.dataExtract).length : 0,
+ 1,
+ 'only one dataExtract expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualTemplateJson('testExisting_dataExtract', 'dataExtract'),
+ await testUtils.getExpectedJson('9999999', 'dataExtract', 'template'),
+ 'returned template JSON was not equal expected'
+ );
+ // buildDefinition
+ await handler.buildDefinition(
+ 'testInstance/testBU',
+ 'dataExtract',
+ 'testExisting_dataExtract',
+ 'testTargetMarket'
+ );
+ assert.equal(
+ process.exitCode,
+ false,
+ 'buildDefinition should not have thrown an error'
+ );
+ assert.deepEqual(
+ await testUtils.getActualDeployJson('testTemplated_dataExtract', 'dataExtract'),
+ await testUtils.getExpectedJson('9999999', 'dataExtract', 'build'),
+ 'returned deployment JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 6,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should create a dataExtract template via buildTemplate and build it', async () => {
+ // download first before we test buildTemplate
+ await handler.retrieve('testInstance/testBU', ['dataExtract']);
+ // buildTemplate
+ const result = await handler.buildTemplate(
+ 'testInstance/testBU',
+ 'dataExtract',
+ ['testExisting_dataExtract'],
+ 'testSourceMarket'
+ );
+ assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
+ assert.equal(
+ result.dataExtract ? Object.keys(result.dataExtract).length : 0,
+ 1,
+ 'only one dataExtract expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualTemplateJson('testExisting_dataExtract', 'dataExtract'),
+ await testUtils.getExpectedJson('9999999', 'dataExtract', 'template'),
+ 'returned template JSON was not equal expected'
+ );
+ // buildDefinition
+ await handler.buildDefinition(
+ 'testInstance/testBU',
+ 'dataExtract',
+ 'testExisting_dataExtract',
+ 'testTargetMarket'
+ );
+ assert.equal(
+ process.exitCode,
+ false,
+ 'buildDefinition should not have thrown an error'
+ );
+ assert.deepEqual(
+ await testUtils.getActualDeployJson('testTemplated_dataExtract', 'dataExtract'),
+ await testUtils.getExpectedJson('9999999', 'dataExtract', 'build'),
+ 'returned deployment JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 6,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Delete ================', () => {
+ it('Should NOT delete the item', async () => {
+ // WHEN
+ await handler.deleteByKey('testInstance/testBU', 'dataExtract', [
+ 'testExisting_fileTranfer',
+ ]);
+ // THEN
+ assert.equal(
+ process.exitCode,
+ 1,
+ 'deleteByKey should have thrown an error due to lack of support'
+ );
+ return;
+ });
+ });
+});
diff --git a/test/type.fileTransfer.test.js b/test/type.fileTransfer.test.js
new file mode 100644
index 000000000..2d33c05b7
--- /dev/null
+++ b/test/type.fileTransfer.test.js
@@ -0,0 +1,185 @@
+const chai = require('chai');
+const chaiFiles = require('chai-files');
+const assert = chai.assert;
+chai.use(chaiFiles);
+const cache = require('../lib/util/cache');
+const testUtils = require('./utils');
+const handler = require('../lib/index');
+
+describe('type: fileTransfer', () => {
+ beforeEach(() => {
+ testUtils.mockSetup();
+ });
+ afterEach(() => {
+ testUtils.mockReset();
+ });
+
+ describe('Retrieve ================', () => {
+ it('Should retrieve a fileTransfer', async () => {
+ // WHEN
+ await handler.retrieve('testInstance/testBU', ['fileTransfer']);
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.fileTransfer ? Object.keys(result.fileTransfer).length : 0,
+ 1,
+ 'only one fileTransfer expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_fileTransfer', 'fileTransfer'),
+ await testUtils.getExpectedJson('9999999', 'fileTransfer', 'get'),
+ 'returned JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 3,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Deploy ================', () => {
+ beforeEach(() => {
+ testUtils.mockSetup(true);
+ });
+ it('Should create & upsert a fileTransfer', async () => {
+ // WHEN
+ await handler.deploy('testInstance/testBU', ['fileTransfer']);
+ // THEN
+ assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.fileTransfer ? Object.keys(result.fileTransfer).length : 0,
+ 2,
+ 'two fileTransfers expected'
+ );
+ // confirm created item
+ assert.deepEqual(
+ await testUtils.getActualJson('testNew_fileTransfer', 'fileTransfer'),
+ await testUtils.getExpectedJson('9999999', 'fileTransfer', 'post'),
+ 'returned JSON was not equal expected for insert fileTransfer'
+ );
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_fileTransfer', 'fileTransfer'),
+ await testUtils.getExpectedJson('9999999', 'fileTransfer', 'patch'),
+ 'returned JSON was not equal expected for update fileTransfer'
+ );
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 5,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Templating ================', () => {
+ it('Should create a fileTransfer template via retrieveAsTemplate and build it', async () => {
+ // buildTemplate
+ const result = await handler.retrieveAsTemplate(
+ 'testInstance/testBU',
+ 'fileTransfer',
+ ['testExisting_fileTransfer'],
+ 'testSourceMarket'
+ );
+ assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
+ assert.equal(
+ result.fileTransfer ? Object.keys(result.fileTransfer).length : 0,
+ 1,
+ 'only one fileTransfer expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualTemplateJson('testExisting_fileTransfer', 'fileTransfer'),
+ await testUtils.getExpectedJson('9999999', 'fileTransfer', 'template'),
+ 'returned template JSON was not equal expected'
+ );
+ // buildDefinition
+ await handler.buildDefinition(
+ 'testInstance/testBU',
+ 'fileTransfer',
+ 'testExisting_fileTransfer',
+ 'testTargetMarket'
+ );
+ assert.equal(
+ process.exitCode,
+ false,
+ 'buildDefinition should not have thrown an error'
+ );
+ assert.deepEqual(
+ await testUtils.getActualDeployJson('testTemplated_fileTransfer', 'fileTransfer'),
+ await testUtils.getExpectedJson('9999999', 'fileTransfer', 'build'),
+ 'returned deployment JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 3,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should create a fileTransfer template via buildTemplate and build it', async () => {
+ // download first before we test buildTemplate
+ await handler.retrieve('testInstance/testBU', ['fileTransfer']);
+ // buildTemplate
+ const result = await handler.buildTemplate(
+ 'testInstance/testBU',
+ 'fileTransfer',
+ ['testExisting_fileTransfer'],
+ 'testSourceMarket'
+ );
+ assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
+ assert.equal(
+ result.fileTransfer ? Object.keys(result.fileTransfer).length : 0,
+ 1,
+ 'only one fileTransfer expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualTemplateJson('testExisting_fileTransfer', 'fileTransfer'),
+ await testUtils.getExpectedJson('9999999', 'fileTransfer', 'template'),
+ 'returned template JSON was not equal expected'
+ );
+ // buildDefinition
+ await handler.buildDefinition(
+ 'testInstance/testBU',
+ 'fileTransfer',
+ 'testExisting_fileTransfer',
+ 'testTargetMarket'
+ );
+ assert.equal(
+ process.exitCode,
+ false,
+ 'buildDefinition should not have thrown an error'
+ );
+ assert.deepEqual(
+ await testUtils.getActualDeployJson('testTemplated_fileTransfer', 'fileTransfer'),
+ await testUtils.getExpectedJson('9999999', 'fileTransfer', 'build'),
+ 'returned deployment JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 3,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Delete ================', () => {
+ it('Should NOT delete the item', async () => {
+ // WHEN
+ await handler.deleteByKey('testInstance/testBU', 'fileTransfer', [
+ 'testExisting_fileTranfer',
+ ]);
+ // THEN
+ assert.equal(
+ process.exitCode,
+ 1,
+ 'deleteByKey should have thrown an error due to lack of support'
+ );
+ return;
+ });
+ });
+});
diff --git a/test/type.importFile.test.js b/test/type.importFile.test.js
new file mode 100644
index 000000000..76e9c3642
--- /dev/null
+++ b/test/type.importFile.test.js
@@ -0,0 +1,186 @@
+const chai = require('chai');
+const chaiFiles = require('chai-files');
+const assert = chai.assert;
+chai.use(chaiFiles);
+const cache = require('../lib/util/cache');
+const testUtils = require('./utils');
+const handler = require('../lib/index');
+
+describe('type: importFile', () => {
+ beforeEach(() => {
+ testUtils.mockSetup();
+ });
+ afterEach(() => {
+ testUtils.mockReset();
+ });
+
+ describe('Retrieve ================', () => {
+ it('Should retrieve a importFile', async () => {
+ // WHEN
+ await handler.retrieve('testInstance/testBU', ['importFile']);
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.importFile ? Object.keys(result.importFile).length : 0,
+ 1,
+ 'only one importFile expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_importFile', 'importFile'),
+ await testUtils.getExpectedJson('9999999', 'importFile', 'get'),
+ 'returned JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 10,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Deploy ================', () => {
+ beforeEach(() => {
+ testUtils.mockSetup(true);
+ });
+ it('Should create & upsert a importFile', async () => {
+ // WHEN
+
+ await handler.deploy('testInstance/testBU', ['importFile']);
+ // THEN
+ assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.importFile ? Object.keys(result.importFile).length : 0,
+ 2,
+ 'two importFiles expected'
+ );
+ // confirm created item
+ assert.deepEqual(
+ await testUtils.getActualJson('testNew_importFile', 'importFile'),
+ await testUtils.getExpectedJson('9999999', 'importFile', 'post'),
+ 'returned new-JSON was not equal expected for insert importFile'
+ );
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_importFile', 'importFile'),
+ await testUtils.getExpectedJson('9999999', 'importFile', 'patch'),
+ 'returned existing-JSON was not equal expected for update importFile'
+ );
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 12,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Templating ================', () => {
+ it('Should create a importFile template via retrieveAsTemplate and build it', async () => {
+ // buildTemplate
+ const result = await handler.retrieveAsTemplate(
+ 'testInstance/testBU',
+ 'importFile',
+ ['testExisting_importFile'],
+ 'testSourceMarket'
+ );
+ assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
+ assert.equal(
+ result.importFile ? Object.keys(result.importFile).length : 0,
+ 1,
+ 'only one importFile expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualTemplateJson('testExisting_importFile', 'importFile'),
+ await testUtils.getExpectedJson('9999999', 'importFile', 'template'),
+ 'returned template JSON was not equal expected'
+ );
+ // buildDefinition
+ await handler.buildDefinition(
+ 'testInstance/testBU',
+ 'importFile',
+ 'testExisting_importFile',
+ 'testTargetMarket'
+ );
+ assert.equal(
+ process.exitCode,
+ false,
+ 'buildDefinition should not have thrown an error'
+ );
+ assert.deepEqual(
+ await testUtils.getActualDeployJson('testTemplated_importFile', 'importFile'),
+ await testUtils.getExpectedJson('9999999', 'importFile', 'build'),
+ 'returned deployment JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 10,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should create a importFile template via buildTemplate and build it', async () => {
+ // download first before we test buildTemplate
+ await handler.retrieve('testInstance/testBU', ['importFile']);
+ // buildTemplate
+ const result = await handler.buildTemplate(
+ 'testInstance/testBU',
+ 'importFile',
+ ['testExisting_importFile'],
+ 'testSourceMarket'
+ );
+ assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
+ assert.equal(
+ result.importFile ? Object.keys(result.importFile).length : 0,
+ 1,
+ 'only one importFile expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualTemplateJson('testExisting_importFile', 'importFile'),
+ await testUtils.getExpectedJson('9999999', 'importFile', 'template'),
+ 'returned template JSON was not equal expected'
+ );
+ // buildDefinition
+ await handler.buildDefinition(
+ 'testInstance/testBU',
+ 'importFile',
+ 'testExisting_importFile',
+ 'testTargetMarket'
+ );
+ assert.equal(
+ process.exitCode,
+ false,
+ 'buildDefinition should not have thrown an error'
+ );
+ assert.deepEqual(
+ await testUtils.getActualDeployJson('testTemplated_importFile', 'importFile'),
+ await testUtils.getExpectedJson('9999999', 'importFile', 'build'),
+ 'returned deployment JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 10,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Delete ================', () => {
+ it('Should NOT delete the item', async () => {
+ // WHEN
+ await handler.deleteByKey('testInstance/testBU', 'importFile', [
+ 'testExisting_fileTranfer',
+ ]);
+ // THEN
+ assert.equal(
+ process.exitCode,
+ 1,
+ 'deleteByKey should have thrown an error due to lack of support'
+ );
+ return;
+ });
+ });
+});
diff --git a/test/type.mobileKeyword.test.js b/test/type.mobileKeyword.test.js
index 9f37bffc7..9f15adaf0 100644
--- a/test/type.mobileKeyword.test.js
+++ b/test/type.mobileKeyword.test.js
@@ -120,7 +120,6 @@ describe('type: mobileKeyword', () => {
);
return;
});
- it('Should change the key during update via --changeKeyValue');
});
describe('Templating ================', () => {
it('Should create a mobileKeyword template via retrieveAsTemplate and build it', async () => {
diff --git a/test/type.query.test.js b/test/type.query.test.js
index edaf72161..c63420be7 100644
--- a/test/type.query.test.js
+++ b/test/type.query.test.js
@@ -27,8 +27,8 @@ describe('type: query', () => {
const result = cache.getCache();
assert.equal(
result.query ? Object.keys(result.query).length : 0,
- 2,
- 'only two queries expected'
+ 3,
+ 'only three queries expected'
);
// normal test
assert.deepEqual(
@@ -53,7 +53,7 @@ describe('type: query', () => {
);
return;
});
- it('Should retrieve one specific query', async () => {
+ it('Should retrieve one specific query by key', async () => {
// WHEN
await handler.retrieve('testInstance/testBU', ['query'], ['testExisting_query']);
// THEN
@@ -80,6 +80,61 @@ describe('type: query', () => {
);
return;
});
+ it('Should retrieve one specific query via --like', async () => {
+ // WHEN
+ handler.setOptions({ like: { key: '%Existing_query' } });
+ await handler.retrieve('testInstance/testBU', ['query']);
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.query ? Object.keys(result.query).length : 0,
+ 3,
+ 'three queries in cache expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_query', 'query'),
+ await testUtils.getExpectedJson('9999999', 'query', 'get'),
+ 'returned metadata was not equal expected'
+ );
+ expect(file(testUtils.getActualFile('testExisting_query', 'query', 'sql'))).to.equal(
+ file(testUtils.getExpectedFile('9999999', 'query', 'get', 'sql'))
+ );
+ expect(file(testUtils.getActualFile('testExisting_query2', 'query', 'sql'))).to.not
+ .exist;
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 6,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should not retrieve any query via --like and key due to a mismatching filter', async () => {
+ // WHEN
+ handler.setOptions({ like: { key: 'NotExisting_query' } });
+ await handler.retrieve('testInstance/testBU', ['query']);
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.query ? Object.keys(result.query).length : 0,
+ 3,
+ 'three queries in cache expected'
+ );
+
+ expect(file(testUtils.getActualFile('testExisting_query', 'query', 'sql'))).to.not
+ .exist;
+ expect(file(testUtils.getActualFile('testExisting_query2', 'query', 'sql'))).to.not
+ .exist;
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 6,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
});
describe('Deploy ================', () => {
beforeEach(() => {
@@ -87,15 +142,26 @@ describe('type: query', () => {
});
it('Should create & upsert a query', async () => {
// WHEN
- await handler.deploy('testInstance/testBU', ['query']);
+ const resultDeploy = await handler.deploy(
+ 'testInstance/testBU',
+ ['query'],
+ ['testNew_query', 'testExisting_query']
+ );
// THEN
assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
+ assert.equal(
+ resultDeploy['testInstance/testBU']?.query
+ ? Object.keys(resultDeploy['testInstance/testBU']?.query).length
+ : 0,
+ 2,
+ 'two queries to be deployed'
+ );
// get results from cache
const result = cache.getCache();
assert.equal(
result.query ? Object.keys(result.query).length : 0,
- 3,
- 'three queries expected'
+ 4,
+ 'four queries expected in cache'
);
// confirm created item
assert.deepEqual(
@@ -123,7 +189,356 @@ describe('type: query', () => {
);
return;
});
- it('Should change the key during update with --changeKeyValue');
+ it('Should deploy and execute with --execute', async () => {
+ handler.setOptions({ execute: true });
+ // WHEN
+ await handler.deploy(
+ 'testInstance/testBU',
+ ['query'],
+ ['testExisting_query', 'testNew_query']
+ );
+ // THEN
+ assert.equal(
+ process.exitCode,
+ false,
+ 'deploy with --execute should not have thrown an error'
+ );
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_query', 'query'),
+ await testUtils.getExpectedJson('9999999', 'query', 'patch'),
+ 'returned metadata was not equal expected for insert query'
+ );
+ expect(file(testUtils.getActualFile('testExisting_query', 'query', 'sql'))).to.equal(
+ file(testUtils.getExpectedFile('9999999', 'query', 'patch', 'sql'))
+ );
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 12,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('FixKeys ================', () => {
+ beforeEach(() => {
+ testUtils.mockSetup(true);
+ });
+ it('Should change the key during update with --changeKeyValue', async () => {
+ // WHEN
+ await handler.retrieve(
+ 'testInstance/testBU',
+ ['query'],
+ ['testExisting_query_fixKeys']
+ );
+ handler.setOptions({
+ changeKeyValue: 'testExisting_query_fixedKeys',
+ fromRetrieve: true,
+ });
+ const deployed = await handler.deploy(
+ 'testInstance/testBU',
+ ['query'],
+ ['testExisting_query_fixKeys']
+ );
+ // THEN
+ assert.equal(
+ process.exitCode,
+ false,
+ 'deploy --changeKeyValue should not have thrown an error'
+ );
+ assert.equal(
+ Object.keys(deployed['testInstance/testBU'].query).length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ Object.keys(deployed['testInstance/testBU'].query)[0],
+ 'testExisting_query_fixedKeys',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_query_fixedKeys', 'query'),
+ await testUtils.getExpectedJson('9999999', 'query', 'patch_fixKeys'),
+ 'returned metadata was not equal expected for update query'
+ );
+ expect(
+ file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 14,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should change the key during update with --changeKeyField', async () => {
+ // WHEN
+ await handler.retrieve(
+ 'testInstance/testBU',
+ ['query'],
+ ['testExisting_query_fixKeys']
+ );
+ handler.setOptions({ changeKeyField: 'name', fromRetrieve: true });
+ const deployed = await handler.deploy(
+ 'testInstance/testBU',
+ ['query'],
+ ['testExisting_query_fixKeys']
+ );
+ // THEN
+ assert.equal(
+ process.exitCode,
+ false,
+ 'deploy --changeKeyValue should not have thrown an error'
+ );
+ assert.equal(
+ Object.keys(deployed['testInstance/testBU'].query).length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ Object.keys(deployed['testInstance/testBU'].query)[0],
+ 'testExisting_query_fixedKeys',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_query_fixedKeys', 'query'),
+ await testUtils.getExpectedJson('9999999', 'query', 'patch_fixKeys'),
+ 'returned metadata was not equal expected for update query'
+ );
+ expect(
+ file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 14,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should run fixKeys but not find fixable keys and hence stop', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: false } });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query', [
+ 'testExisting_query',
+ ]);
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // check which keys were fixed
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 0,
+ 'expected to find no keys to be fixed'
+ );
+
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.query ? Object.keys(result.query).length : 0,
+ 1,
+ 'one query expected'
+ );
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 7,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys by key WITHOUT re-retrieving dependent types', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: false } });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query', [
+ 'testExisting_query_fixKeys',
+ 'testExisting_query',
+ ]);
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_query_fixedKeys',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_query_fixedKeys', 'query'),
+ await testUtils.getExpectedJson('9999999', 'query', 'patch_fixKeys'),
+ 'returned metadata was not equal expected for update query'
+ );
+ expect(
+ file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 16,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys by key WITHOUT re-retrieving dependent types and then --execute', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: false }, execute: true });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query', [
+ 'testExisting_query_fixKeys',
+ 'testExisting_query',
+ ]);
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_query_fixedKeys',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(
+ process.exitCode,
+ false,
+ 'fixKeys with --execute should not have thrown an error'
+ );
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_query_fixedKeys', 'query'),
+ await testUtils.getExpectedJson('9999999', 'query', 'patch_fixKeys'),
+ 'returned metadata was not equal expected for update query'
+ );
+ expect(
+ file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 18,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys by key AND re-retrieve dependent types', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: true } });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query', [
+ 'testExisting_query_fixKeys',
+ 'testExisting_query',
+ ]);
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_query_fixedKeys',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_query_fixedKeys', 'query'),
+ await testUtils.getExpectedJson('9999999', 'query', 'patch_fixKeys'),
+ 'returned metadata was not equal expected for update query'
+ );
+ expect(
+ file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 33,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys by key AND re-retrieve dependent types and then --execute', async () => {
+ // WHEN
+ handler.setOptions({ skipInteraction: { fixKeysReretrieve: true }, execute: true });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query', [
+ 'testExisting_query_fixKeys',
+ 'testExisting_query',
+ ]);
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_query_fixedKeys',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(
+ process.exitCode,
+ false,
+ 'fixKeys with --execute should not have thrown an error'
+ );
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_query_fixedKeys', 'query'),
+ await testUtils.getExpectedJson('9999999', 'query', 'patch_fixKeys'),
+ 'returned metadata was not equal expected for update query'
+ );
+ expect(
+ file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 35,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should fixKeys via --like WITHOUT re-retrieving dependent types', async () => {
+ // WHEN
+ handler.setOptions({
+ like: { key: 'testExisting_query_f%' },
+ skipInteraction: { fixKeysReretrieve: false },
+ });
+ const resultFixKeys = await handler.fixKeys('testInstance/testBU', 'query');
+ assert.equal(
+ resultFixKeys['testInstance/testBU'].length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ resultFixKeys['testInstance/testBU'][0],
+ 'testExisting_query_fixedKeys',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ // THEN
+ assert.equal(process.exitCode, false, 'fixKeys should not have thrown an error');
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_query_fixedKeys', 'query'),
+ await testUtils.getExpectedJson('9999999', 'query', 'patch_fixKeys'),
+ 'returned metadata was not equal expected for update query'
+ );
+ expect(
+ file(testUtils.getActualFile('testExisting_query_fixedKeys', 'query', 'sql'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'query', 'patch_fixKeys', 'sql')));
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 13,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
});
describe('Templating ================', () => {
it('Should create a query template via retrieveAsTemplate and build it', async () => {
@@ -279,14 +694,50 @@ describe('type: query', () => {
});
});
describe('Execute ================', () => {
- it('Should start executing a query', async () => {
- const execute = await handler.execute(
- 'testInstance/testBU',
- ['query'],
- ['testExisting_query']
+ it('Should start a query by key', async () => {
+ const executedKeys = await handler.execute('testInstance/testBU', 'query', [
+ 'testExisting_query',
+ ]);
+ assert.equal(process.exitCode, false, 'execute should not have thrown an error');
+ assert.equal(
+ executedKeys['testInstance/testBU']?.length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
);
+ assert.equal(
+ executedKeys['testInstance/testBU'][0],
+ 'testExisting_query',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ return;
+ });
+ it('Should start a query selected via --like', async () => {
+ handler.setOptions({ like: { key: 'testExist%query' } });
+ const executedKeys = await handler.execute('testInstance/testBU', 'query');
assert.equal(process.exitCode, false, 'execute should not have thrown an error');
- assert.equal(execute, true, 'query was supposed to be executed');
+ assert.equal(
+ executedKeys['testInstance/testBU']?.length,
+ 1,
+ 'returned number of keys does not correspond to number of expected fixed keys'
+ );
+ assert.equal(
+ executedKeys['testInstance/testBU'][0],
+ 'testExisting_query',
+ 'returned keys do not correspond to expected fixed keys'
+ );
+ return;
+ });
+ it('Should not start executing a query because key and --like was specified', async () => {
+ handler.setOptions({ like: { key: 'testExisting%' } });
+ const executedKeys = await handler.execute('testInstance/testBU', 'query', [
+ 'testExisting_query',
+ ]);
+ assert.equal(process.exitCode, true, 'execute should have thrown an error');
+ assert.equal(
+ Object.keys(executedKeys).length,
+ 0,
+ 'query was not supposed to be executed'
+ );
return;
});
});
diff --git a/test/type.script.test.js b/test/type.script.test.js
new file mode 100644
index 000000000..84202cfec
--- /dev/null
+++ b/test/type.script.test.js
@@ -0,0 +1,367 @@
+const chai = require('chai');
+const chaiFiles = require('chai-files');
+const assert = chai.assert;
+chai.use(chaiFiles);
+const expect = chai.expect;
+const file = chaiFiles.file;
+// const dir = chaiFiles.dir;
+const cache = require('../lib/util/cache');
+const testUtils = require('./utils');
+const handler = require('../lib/index');
+
+describe('type: script', () => {
+ beforeEach(() => {
+ testUtils.mockSetup();
+ });
+ afterEach(() => {
+ testUtils.mockReset();
+ });
+
+ describe('Retrieve ================', () => {
+ it('Should retrieve all scripts', async () => {
+ // WHEN
+ const retrieve = await handler.retrieve('testInstance/testBU', ['script']);
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+
+ // retrieve result
+ assert.equal(
+ retrieve['testInstance/testBU'].script
+ ? Object.keys(retrieve['testInstance/testBU'].script).length
+ : 0,
+ 2,
+ 'only 2 scripts expected in retrieve response'
+ );
+
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.script ? Object.keys(result.script).length : 0,
+ 2,
+ 'only 2 scripts expected'
+ );
+ // normal test
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_script', 'script'),
+ await testUtils.getExpectedJson('9999999', 'script', 'get'),
+ 'returned metadata with correct key was not equal expected'
+ );
+ expect(file(testUtils.getActualFile('testExisting_script', 'script', 'html'))).to.not
+ .exist;
+ expect(file(testUtils.getActualFile('testExisting_script', 'script', 'ssjs'))).to.equal(
+ file(testUtils.getExpectedFile('9999999', 'script', 'get', 'ssjs'))
+ );
+
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_script_noScriptTag', 'script'),
+ await testUtils.getExpectedJson('9999999', 'script', 'get_noScriptTag'),
+ 'returned metadata was not equal expected'
+ );
+ expect(
+ file(testUtils.getActualFile('testExisting_script_noScriptTag', 'script', 'html'))
+ ).to.equal(
+ file(testUtils.getExpectedFile('9999999', 'script', 'get_noScriptTag', 'html'))
+ );
+ expect(
+ file(testUtils.getActualFile('testExisting_script_noScriptTag', 'script', 'ssjs'))
+ ).to.not.exist;
+
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 3,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should retrieve one specific script by key', async () => {
+ // WHEN
+ await handler.retrieve('testInstance/testBU', ['script'], ['testExisting_script']);
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.script ? Object.keys(result.script).length : 0,
+ 1,
+ 'only one script expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_script', 'script'),
+ await testUtils.getExpectedJson('9999999', 'script', 'get'),
+ 'returned metadata was not equal expected'
+ );
+ expect(file(testUtils.getActualFile('testExisting_script', 'script', 'html'))).to.not
+ .exist;
+ expect(file(testUtils.getActualFile('testExisting_script', 'script', 'ssjs'))).to.equal(
+ file(testUtils.getExpectedFile('9999999', 'script', 'get', 'ssjs'))
+ );
+
+ expect(
+ file(testUtils.getActualFile('testExisting_script_noScriptTag', 'script', 'json'))
+ ).to.not.exist;
+ expect(
+ file(testUtils.getActualFile('testExisting_script_noScriptTag', 'script', 'ssjs'))
+ ).to.not.exist;
+ expect(
+ file(testUtils.getActualFile('testExisting_script_noScriptTag', 'script', 'html'))
+ ).to.not.exist;
+
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 3,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should retrieve one specific script via --like', async () => {
+ // WHEN
+ handler.setOptions({ like: { key: '%Existing_script' } });
+ await handler.retrieve('testInstance/testBU', ['script']);
+
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.script ? Object.keys(result.script).length : 0,
+ 2,
+ 'two scripts in cache expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_script', 'script'),
+ await testUtils.getExpectedJson('9999999', 'script', 'get'),
+ 'returned metadata was not equal expected'
+ );
+ expect(file(testUtils.getActualFile('testExisting_script', 'script', 'ssjs'))).to.equal(
+ file(testUtils.getExpectedFile('9999999', 'script', 'get', 'ssjs'))
+ );
+
+ expect(
+ file(testUtils.getActualFile('testExisting_script_noScriptTag', 'script', 'json'))
+ ).to.not.exist;
+ expect(
+ file(testUtils.getActualFile('testExisting_script_noScriptTag', 'script', 'ssjs'))
+ ).to.not.exist;
+ expect(
+ file(testUtils.getActualFile('testExisting_script_noScriptTag', 'script', 'html'))
+ ).to.not.exist;
+
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 3,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should not retrieve any script via --like and key due to a mismatching filter', async () => {
+ // WHEN
+ handler.setOptions({ like: { key: 'NotExisting_script' } });
+ await handler.retrieve('testInstance/testBU', ['script']);
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.script ? Object.keys(result.script).length : 0,
+ 2,
+ 'two scripts in cache expected'
+ );
+
+ expect(file(testUtils.getActualFile('testExisting_script', 'script', 'ssjs'))).to.not
+ .exist;
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 3,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Deploy ================', () => {
+ beforeEach(() => {
+ testUtils.mockSetup(true);
+ });
+ it('Should create & upsert a script', async () => {
+ // WHEN
+ await handler.deploy('testInstance/testBU', ['script']);
+ // THEN
+ assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.script ? Object.keys(result.script).length : 0,
+ 3,
+ 'three scripts expected'
+ );
+ // confirm created item
+ assert.deepEqual(
+ await testUtils.getActualJson('testNew_script', 'script'),
+ await testUtils.getExpectedJson('9999999', 'script', 'post'),
+ 'returned metadata was not equal expected for insert script'
+ );
+ expect(file(testUtils.getActualFile('testNew_script', 'script', 'ssjs'))).to.equal(
+ file(testUtils.getExpectedFile('9999999', 'script', 'post', 'ssjs'))
+ );
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_script', 'script'),
+ await testUtils.getExpectedJson('9999999', 'script', 'patch'),
+ 'returned metadata was not equal expected for insert script'
+ );
+ expect(file(testUtils.getActualFile('testExisting_script', 'script', 'ssjs'))).to.equal(
+ file(testUtils.getExpectedFile('9999999', 'script', 'patch', 'ssjs'))
+ );
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 5,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Templating ================', () => {
+ it('Should create a script template via retrieveAsTemplate and build it', async () => {
+ // GIVEN there is a template
+ const result = await handler.retrieveAsTemplate(
+ 'testInstance/testBU',
+ 'script',
+ ['testExisting_script'],
+ 'testSourceMarket'
+ );
+ // WHEN
+ assert.equal(
+ process.exitCode,
+ false,
+ 'retrieveAsTemplate should not have thrown an error'
+ );
+ assert.equal(
+ result.script ? Object.keys(result.script).length : 0,
+ 1,
+ 'only one script expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualTemplateJson('testExisting_script', 'script'),
+ await testUtils.getExpectedJson('9999999', 'script', 'template'),
+ 'returned template JSON of retrieveAsTemplate was not equal expected'
+ );
+ expect(
+ file(testUtils.getActualTemplateFile('testExisting_script', 'script', 'ssjs'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'script', 'template', 'ssjs')));
+ // THEN
+ await handler.buildDefinition(
+ 'testInstance/testBU',
+ 'script',
+ 'testExisting_script',
+ 'testTargetMarket'
+ );
+ assert.equal(
+ process.exitCode,
+ false,
+ 'buildDefinition should not have thrown an error'
+ );
+
+ assert.deepEqual(
+ await testUtils.getActualDeployJson('testTemplated_script', 'script'),
+ await testUtils.getExpectedJson('9999999', 'script', 'build'),
+ 'returned deployment JSON was not equal expected'
+ );
+ expect(
+ file(testUtils.getActualDeployFile('testTemplated_script', 'script', 'ssjs'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'script', 'build', 'ssjs')));
+
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 3,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ it('Should create a script template via buildTemplate and build it', async () => {
+ // download first before we test buildTemplate
+ await handler.retrieve('testInstance/testBU', ['script']);
+ // GIVEN there is a template
+ const result = await handler.buildTemplate(
+ 'testInstance/testBU',
+ 'script',
+ ['testExisting_script'],
+ 'testSourceMarket'
+ );
+ // WHEN
+ assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
+
+ assert.equal(
+ result.script ? Object.keys(result.script).length : 0,
+ 1,
+ 'only one script expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualTemplateJson('testExisting_script', 'script'),
+ await testUtils.getExpectedJson('9999999', 'script', 'template'),
+ 'returned template JSON of buildTemplate was not equal expected'
+ );
+ expect(
+ file(testUtils.getActualTemplateFile('testExisting_script', 'script', 'ssjs'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'script', 'template', 'ssjs')));
+ // THEN
+ await handler.buildDefinition(
+ 'testInstance/testBU',
+ 'script',
+ 'testExisting_script',
+ 'testTargetMarket'
+ );
+ assert.equal(
+ process.exitCode,
+ false,
+ 'buildDefinition should not have thrown an error'
+ );
+
+ assert.deepEqual(
+ await testUtils.getActualDeployJson('testTemplated_script', 'script'),
+ await testUtils.getExpectedJson('9999999', 'script', 'build'),
+ 'returned deployment JSON was not equal expected'
+ );
+ expect(
+ file(testUtils.getActualDeployFile('testTemplated_script', 'script', 'ssjs'))
+ ).to.equal(file(testUtils.getExpectedFile('9999999', 'script', 'build', 'ssjs')));
+
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 3,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Delete ================', () => {});
+ describe('CI/CD ================', () => {
+ it('Should return a list of files based on their type and key', async () => {
+ // WHEN
+ const fileList = await handler.getFilesToCommit('testInstance/testBU', 'script', [
+ 'testExisting_script',
+ ]);
+ // THEN
+ assert.equal(
+ process.exitCode,
+ false,
+ 'getFilesToCommit should not have thrown an error'
+ );
+ assert.equal(fileList.length, 3, 'expected only 3 file paths (html, json, ssjs)');
+
+ assert.equal(
+ fileList[0].split('\\').join('/'),
+ 'retrieve/testInstance/testBU/script/testExisting_script.script-meta.json',
+ 'wrong JSON path'
+ );
+ assert.equal(
+ fileList[1].split('\\').join('/'),
+ 'retrieve/testInstance/testBU/script/testExisting_script.script-meta.ssjs',
+ 'wrong JSON path'
+ );
+ return;
+ });
+ });
+ describe('Execute ================', () => {});
+});
diff --git a/test/type.triggeredSend.test.js b/test/type.triggeredSend.test.js
new file mode 100644
index 000000000..ee548e28c
--- /dev/null
+++ b/test/type.triggeredSend.test.js
@@ -0,0 +1,152 @@
+const chai = require('chai');
+const chaiFiles = require('chai-files');
+const assert = chai.assert;
+chai.use(chaiFiles);
+const cache = require('../lib/util/cache');
+const testUtils = require('./utils');
+const handler = require('../lib/index');
+
+describe('type: triggeredSend', () => {
+ beforeEach(() => {
+ testUtils.mockSetup();
+ });
+ afterEach(() => {
+ testUtils.mockReset();
+ });
+
+ describe('Retrieve ================', () => {
+ it('Should retrieve a triggeredSend', async () => {
+ // WHEN
+ await handler.retrieve('testInstance/testBU', ['triggeredSend']);
+ // THEN
+ assert.equal(process.exitCode, false, 'retrieve should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.triggeredSend ? Object.keys(result.triggeredSend).length : 0,
+ 1,
+ 'only one triggeredSend expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_triggeredSend', 'triggeredSend'),
+ await testUtils.getExpectedJson('9999999', 'triggeredSend', 'get'),
+ 'returned JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 10,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Deploy ================', () => {
+ beforeEach(() => {
+ testUtils.mockSetup(true);
+ });
+ it('Should create & upsert a triggeredSend', async () => {
+ // WHEN
+ await handler.deploy('testInstance/testBU', ['triggeredSend']);
+ // THEN
+ assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
+ // get results from cache
+ const result = cache.getCache();
+ assert.equal(
+ result.triggeredSend ? Object.keys(result.triggeredSend).length : 0,
+ 2,
+ 'two triggeredSends expected'
+ );
+ // confirm created item
+ assert.deepEqual(
+ await testUtils.getActualJson('testNew_triggeredSend', 'triggeredSend'),
+ await testUtils.getExpectedJson('9999999', 'triggeredSend', 'post'),
+ 'returned JSON was not equal expected for insert triggeredSend'
+ );
+ // confirm updated item
+ assert.deepEqual(
+ await testUtils.getActualJson('testExisting_triggeredSend', 'triggeredSend'),
+ await testUtils.getExpectedJson('9999999', 'triggeredSend', 'patch'),
+ 'returned JSON was not equal expected for update triggeredSend'
+ );
+ // check number of API calls
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 12,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Templating ================', () => {
+ it('Should create a triggeredSend template via buildTemplate and build it', async () => {
+ // download first before we test buildTemplate
+ await handler.retrieve('testInstance/testBU', ['triggeredSend']);
+ // buildTemplate
+ const result = await handler.buildTemplate(
+ 'testInstance/testBU',
+ 'triggeredSend',
+ ['testExisting_triggeredSend'],
+ 'testSourceMarket'
+ );
+ assert.equal(process.exitCode, false, 'buildTemplate should not have thrown an error');
+ assert.equal(
+ result.triggeredSend ? Object.keys(result.triggeredSend).length : 0,
+ 1,
+ 'only one triggeredSend expected'
+ );
+ assert.deepEqual(
+ await testUtils.getActualTemplateJson(
+ 'testExisting_triggeredSend',
+ 'triggeredSend'
+ ),
+ await testUtils.getExpectedJson('9999999', 'triggeredSend', 'template'),
+ 'returned template JSON was not equal expected'
+ );
+ // buildDefinition
+ await handler.buildDefinition(
+ 'testInstance/testBU',
+ 'triggeredSend',
+ 'testExisting_triggeredSend',
+ 'testTargetMarket'
+ );
+ assert.equal(
+ process.exitCode,
+ false,
+ 'buildDefinition should not have thrown an error'
+ );
+ assert.deepEqual(
+ await testUtils.getActualDeployJson('testTemplated_triggeredSend', 'triggeredSend'),
+ await testUtils.getExpectedJson('9999999', 'triggeredSend', 'build'),
+ 'returned deployment JSON was not equal expected'
+ );
+ assert.equal(
+ testUtils.getAPIHistoryLength(),
+ 10,
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
+ );
+ return;
+ });
+ });
+ describe('Delete ================', () => {
+ it('Should delete the item', async () => {
+ // WHEN
+ const result = await handler.deleteByKey('testInstance/testBU', 'triggeredSend', [
+ 'testExisting_triggeredSend',
+ ]);
+ // THEN
+ assert.equal(process.exitCode, false, 'delete should not have thrown an error');
+
+ assert.equal(result, true, 'should have deleted the item');
+ return;
+ });
+ });
+ describe('Refresh ================', () => {
+ it('Should refresh a triggeredSend by key');
+ });
+ describe('Start (Execute) ================', () => {
+ it('Should start a triggeredSend by key');
+ });
+ describe('Pause ================', () => {
+ it('Should pause a triggeredSend by key');
+ });
+});
diff --git a/test/type.user.test.js b/test/type.user.test.js
index cb56fe090..34dda9f2a 100644
--- a/test/type.user.test.js
+++ b/test/type.user.test.js
@@ -26,8 +26,8 @@ describe('type: user', () => {
const result = cache.getCache();
assert.equal(
result.user ? Object.keys(result.user).length : 0,
- 1,
- 'only one user expected'
+ 3,
+ 'only three users expected'
);
assert.deepEqual(
await testUtils.getActualJson('testExisting_user', 'user', '_ParentBU_'),
@@ -42,7 +42,7 @@ describe('type: user', () => {
{ encoding: 'utf8' }
);
const regexFindDaysSinceLogin =
- /\| (\d*) (seconds|minutes|days|weeks|months|years){1} \|/gm;
+ /\| (\d*) (seconds|minutes|days|weeks|months|years){1} \|/g;
// fetch expected time since last login
const expectedDaysSinceLogin = expectedFile.match(regexFindDaysSinceLogin);
// load actual file and replace days since last login with expected value
@@ -50,7 +50,7 @@ describe('type: user', () => {
await File.readFile(`./docs/user/testInstance.users.md`, {
encoding: 'utf8',
})
- ).replaceAll(regexFindDaysSinceLogin, expectedDaysSinceLogin);
+ ).replaceAll(regexFindDaysSinceLogin, [expectedDaysSinceLogin[0]]);
expect(actualFile).to.equal(expectedFile);
assert.equal(
@@ -83,7 +83,12 @@ describe('type: user', () => {
});
it('Should create & upsert a user', async () => {
// WHEN
- const expectedCache = ['testNew_user', 'testExisting_user'];
+ const expectedCache = [
+ 'testExisting_user',
+ 'testExisting_user_inactive',
+ '45372cbb-06e0-438e-88d8-008981f7a18b',
+ 'testNew_user',
+ ];
await handler.deploy('testInstance/_ParentBU_', ['user'], expectedCache);
// THEN
assert.equal(process.exitCode, false, 'deploy should not have thrown an error');
@@ -92,8 +97,8 @@ describe('type: user', () => {
const result = cache.getCache();
assert.equal(
result.user ? Object.keys(result.user).length : 0,
- 2,
- 'two users expected'
+ 4,
+ 'four users expected'
);
// confirm if result.user only includes values from expectedCache
assert.deepEqual(
@@ -126,14 +131,22 @@ describe('type: user', () => {
});
it('Should not deploy user with Marketing Cloud role', async () => {
// WHEN
- const expectedCache = ['testExisting_user'];
+ const expectedCache = [
+ 'testExisting_user',
+ 'testExisting_user_inactive',
+ '45372cbb-06e0-438e-88d8-008981f7a18b',
+ ];
await handler.deploy('testInstance/_ParentBU_', ['user'], ['testBlocked_user']);
// THEN
assert.equal(process.exitCode, 1, 'Deployment should have thrown an error');
// get results from cache
const result = cache.getCache();
- assert.equal(result.user ? Object.keys(result.user).length : 0, 1, '1 user expected');
+ assert.equal(
+ result.user ? Object.keys(result.user).length : 0,
+ 3,
+ 'three users expected'
+ );
// confirm if result.user only includes values from expectedCache
assert.deepEqual(
Object.keys(result.user),
@@ -148,7 +161,6 @@ describe('type: user', () => {
);
return;
});
- it('Should change the key during update with --changeKeyValue');
});
describe('Templating ================', () => {
// it('Should create a user template via retrieveAsTemplate and build it', async () => {});
diff --git a/test/utils.js b/test/utils.js
index ded3e4312..3e7a5a070 100644
--- a/test/utils.js
+++ b/test/utils.js
@@ -112,7 +112,10 @@ exports.getExpectedFile = (mid, type, action, ext) =>
*/
exports.mockSetup = (isDeploy) => {
- handler.setOptions({ debug: true, noLogFile: true });
+ if (!isDeploy) {
+ // no need to execute this again - already done in standard setup
+ handler.setOptions({ debug: true, noLogFile: true });
+ }
apimock = new MockAdapter(axios, { onNoMatch: 'throwException' });
// set access_token to mid to allow for autorouting of mock to correct resources
apimock.onPost(authResources.success.url).reply((config) => {