diff --git a/CHANGELOG.md b/CHANGELOG.md index ba3809549..fd4d74605 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,44 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.75.0](https://github.com/rudderlabs/rudder-config-schema/compare/v1.74.0...v1.75.0) (2024-05-27) + + +### Features +* onboard klaviyo bulk upload destination ([#1432](https://github.com/rudderlabs/rudder-config-schema/issues/1432)) ([d24bec3](https://github.com/rudderlabs/rudder-config-schema/commit/d24bec329776ca0e068f6a419a7d1db470421304)) +* added GCM support for Appcues destination ([#1376](https://github.com/rudderlabs/rudder-config-schema/issues/1376)) ([e017424](https://github.com/rudderlabs/rudder-config-schema/commit/e0174248d959977d477e408a953c996542efa7f4)) +* added GCM support for BigQuery Stream destination ([#1397](https://github.com/rudderlabs/rudder-config-schema/issues/1397)) ([37586af](https://github.com/rudderlabs/rudder-config-schema/commit/37586af077087f415e90d367e7b443a294c2dcdd)) +* added GCM support for BingAds destination ([#1393](https://github.com/rudderlabs/rudder-config-schema/issues/1393)) ([bf5f781](https://github.com/rudderlabs/rudder-config-schema/commit/bf5f781eb34195d47c41c703da0b371ac10fe173)) +* added GCM support for Deltalake destination ([#1400](https://github.com/rudderlabs/rudder-config-schema/issues/1400)) ([31006de](https://github.com/rudderlabs/rudder-config-schema/commit/31006dee2c87843311f79eb77727b7db471bcb97)) +* added GCM support for Freshsales destination ([#1392](https://github.com/rudderlabs/rudder-config-schema/issues/1392)) ([8d8e8fb](https://github.com/rudderlabs/rudder-config-schema/commit/8d8e8fb204bcf65110a65afe86f0af416ae7248f)) +* added GCM support for Google Ads destination ([#1395](https://github.com/rudderlabs/rudder-config-schema/issues/1395)) ([d1f5def](https://github.com/rudderlabs/rudder-config-schema/commit/d1f5def035dab25e01e4c0921d6808d1029e1822)) +* added GCM support for Heap.io destination ([#1383](https://github.com/rudderlabs/rudder-config-schema/issues/1383)) ([48f7d15](https://github.com/rudderlabs/rudder-config-schema/commit/48f7d154032276d2b125d9e8cfcf66e840e929da)) +* added GCM support for Impact destination ([#1391](https://github.com/rudderlabs/rudder-config-schema/issues/1391)) ([1bf0346](https://github.com/rudderlabs/rudder-config-schema/commit/1bf0346e6459b3fc94ebadf0118a2fd9b7770e76)) +* added GCM support for Matomo destination ([#1384](https://github.com/rudderlabs/rudder-config-schema/issues/1384)) ([03f02b8](https://github.com/rudderlabs/rudder-config-schema/commit/03f02b8fa4bab06947aa5ebda48d5c68be5fe63a)) +* added GCM support for Quora Pixel destination ([#1399](https://github.com/rudderlabs/rudder-config-schema/issues/1399)) ([60f86d9](https://github.com/rudderlabs/rudder-config-schema/commit/60f86d98065403ba508d3bfd54bed5554bf0ba66)) +* added GCM support for Reddit Pixel destination ([#1398](https://github.com/rudderlabs/rudder-config-schema/issues/1398)) ([a02d3c5](https://github.com/rudderlabs/rudder-config-schema/commit/a02d3c5415d4efadd20b9d84cb2e7510c4c08077)) +* added GCM support for Variance destination ([#1396](https://github.com/rudderlabs/rudder-config-schema/issues/1396)) ([adaabcc](https://github.com/rudderlabs/rudder-config-schema/commit/adaabcc73f90b56c00c0c63df49b2c6fdef16aeb)) +* added GCM support for Vero ([#1385](https://github.com/rudderlabs/rudder-config-schema/issues/1385)) ([ac823a6](https://github.com/rudderlabs/rudder-config-schema/commit/ac823a6c2ef798504477866e3f6bab6cbe0c3eea)) +* added GCM support for Webhook destination ([#1394](https://github.com/rudderlabs/rudder-config-schema/issues/1394)) ([497fffc](https://github.com/rudderlabs/rudder-config-schema/commit/497fffcfa42ef0d036b6b4f455e5347f42bc8950)) +* adding app secret for facebook custom audience ([#1387](https://github.com/rudderlabs/rudder-config-schema/issues/1387)) ([56af844](https://github.com/rudderlabs/rudder-config-schema/commit/56af8449928bd4c0ad8c4ec24900730d595cae0b)) +* deprecate mixpanel apiSecret ([#1372](https://github.com/rudderlabs/rudder-config-schema/issues/1372)) ([1b95cc8](https://github.com/rudderlabs/rudder-config-schema/commit/1b95cc8d648b3a417b906b9fd3bd0f52d560b12a)) +* google ads toggle for enhanced conversion fields ([#1373](https://github.com/rudderlabs/rudder-config-schema/issues/1373)) ([be642d5](https://github.com/rudderlabs/rudder-config-schema/commit/be642d5f4a0bdd6c12627d083787fe55e4fa8118)) +* onboard adjust source ([#1388](https://github.com/rudderlabs/rudder-config-schema/issues/1388)) ([3baf6c2](https://github.com/rudderlabs/rudder-config-schema/commit/3baf6c26ce0afec099791f3a20c27ae992a84786)) +* onboard bingads enhanced conversions in device mode ([#1374](https://github.com/rudderlabs/rudder-config-schema/issues/1374)) ([33bb222](https://github.com/rudderlabs/rudder-config-schema/commit/33bb2220a62214ccfdad38339e6794166359c66a)) +* onboard koddi destination ([66af4d4](https://github.com/rudderlabs/rudder-config-schema/commit/66af4d42857a5c545cf2838afa8c9f5b6acc2d3b)) +* onboard new destination bing_ads_offline_conversions ([#1318](https://github.com/rudderlabs/rudder-config-schema/issues/1318)) ([08ef94e](https://github.com/rudderlabs/rudder-config-schema/commit/08ef94e431cb8da0ff26b0c4c76af749264dc170)) +* onboard slack source ([#1338](https://github.com/rudderlabs/rudder-config-schema/issues/1338)) ([63f23cb](https://github.com/rudderlabs/rudder-config-schema/commit/63f23cb1ba13235f15af12f67cfef026e6e5c59a)) +* update ui callout and regex for sftp ([#1401](https://github.com/rudderlabs/rudder-config-schema/issues/1401)) ([f09411a](https://github.com/rudderlabs/rudder-config-schema/commit/f09411a366da4b2c66a6fadd7eb175932807d47c)) + + +### Bug Fixes + +* emarsys UI title edit ([#1379](https://github.com/rudderlabs/rudder-config-schema/issues/1379)) ([d682083](https://github.com/rudderlabs/rudder-config-schema/commit/d6820835c62427ae469bce1716664b400b4196d4)) +* fixed schema validation issue ([c7fdb1c](https://github.com/rudderlabs/rudder-config-schema/commit/c7fdb1c1272e0ec3552c2d88186b6f5b2b5c0963)) +* formatting error ([c8d27b1](https://github.com/rudderlabs/rudder-config-schema/commit/c8d27b1d5100764fa11343ecd963ec129a7f7d09)) +* resolving comments ([3f4a061](https://github.com/rudderlabs/rudder-config-schema/commit/3f4a061430246efab433640b9f8d9448bc90c528)) +* update reddit_pixel with new event name and add test cases ([#1386](https://github.com/rudderlabs/rudder-config-schema/issues/1386)) ([e995a60](https://github.com/rudderlabs/rudder-config-schema/commit/e995a602f7ae1f36e43e1322ef5b312707f6eabe)) + ## [1.74.0](https://github.com/rudderlabs/rudder-config-schema/compare/v1.73.0...v1.74.0) (2024-05-13) diff --git a/package-lock.json b/package-lock.json index 61a089cd4..8bda6a43c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rudder-config-schema", - "version": "1.74.0", + "version": "1.75.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rudder-config-schema", - "version": "1.74.0", + "version": "1.75.0", "license": "MIT", "dependencies": { "ajv": "^8.12.0", diff --git a/package.json b/package.json index eefc559b0..0d3510022 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rudder-config-schema", - "version": "1.74.0", + "version": "1.75.0", "description": "", "main": "src/index.ts", "private": true, diff --git a/src/configurations/destinations/appcues/db-config.json b/src/configurations/destinations/appcues/db-config.json index 669561149..ef55ccc83 100644 --- a/src/configurations/destinations/appcues/db-config.json +++ b/src/configurations/destinations/appcues/db-config.json @@ -10,7 +10,8 @@ "blacklistedEvents", "whitelistedEvents", "oneTrustCookieCategories", - "eventFilteringOption" + "eventFilteringOption", + "consentManagement" ], "excludeKeys": [], "supportedSourceTypes": [ @@ -51,17 +52,17 @@ "eventFilteringOption", "oneTrustCookieCategories" ], - "web": ["nativeSdkUrl", "useNativeSDK", "connectionMode"], - "android": ["connectionMode"], - "ios": ["connectionMode"], - "unity": ["connectionMode"], - "amp": ["connectionMode"], - "cloud": ["connectionMode"], - "warehouse": ["connectionMode"], - "reactnative": ["connectionMode"], - "flutter": ["connectionMode"], - "cordova": ["connectionMode"], - "shopify": ["connectionMode"] + "web": ["nativeSdkUrl", "useNativeSDK", "connectionMode", "consentManagement"], + "android": ["connectionMode", "consentManagement"], + "ios": ["connectionMode", "consentManagement"], + "unity": ["connectionMode", "consentManagement"], + "amp": ["connectionMode", "consentManagement"], + "cloud": ["connectionMode", "consentManagement"], + "warehouse": ["connectionMode", "consentManagement"], + "reactnative": ["connectionMode", "consentManagement"], + "flutter": ["connectionMode", "consentManagement"], + "cordova": ["connectionMode", "consentManagement"], + "shopify": ["connectionMode", "consentManagement"] }, "secretKeys": [] } diff --git a/src/configurations/destinations/appcues/schema.json b/src/configurations/destinations/appcues/schema.json index fddffa4cc..00a7a5b2d 100644 --- a/src/configurations/destinations/appcues/schema.json +++ b/src/configurations/destinations/appcues/schema.json @@ -1,3 +1,443 @@ { - "configSchema": null + "configSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [], + "type": "object", + "properties": { + "consentManagement": { + "type": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "android": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "ios": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "unity": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "amp": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "reactnative": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "flutter": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "cordova": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } + } + } + } } diff --git a/src/configurations/destinations/appcues/ui-config.json b/src/configurations/destinations/appcues/ui-config.json index 34d522bbc..c6d11c334 100644 --- a/src/configurations/destinations/appcues/ui-config.json +++ b/src/configurations/destinations/appcues/ui-config.json @@ -106,7 +106,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/bingads/db-config.json b/src/configurations/destinations/bingads/db-config.json index 9e78958fe..a6e0a566b 100644 --- a/src/configurations/destinations/bingads/db-config.json +++ b/src/configurations/destinations/bingads/db-config.json @@ -6,10 +6,12 @@ "saveDestinationResponse": false, "includeKeys": [ "tagID", + "enableEnhancedConversions", "blacklistedEvents", "whitelistedEvents", "oneTrustCookieCategories", - "eventFilteringOption" + "eventFilteringOption", + "consentManagement" ], "excludeKeys": [], "supportedSourceTypes": ["web"], @@ -18,12 +20,14 @@ "destConfig": { "defaultConfig": [ "tagID", + "enableEnhancedConversions", + "isHashRequired", "blacklistedEvents", "whitelistedEvents", "eventFilteringOption", "oneTrustCookieCategories" ], - "web": ["useNativeSDK", "connectionMode"] + "web": ["useNativeSDK", "connectionMode", "consentManagement"] }, "secretKeys": ["tagID"] } diff --git a/src/configurations/destinations/bingads/schema.json b/src/configurations/destinations/bingads/schema.json index fddffa4cc..0a511d61d 100644 --- a/src/configurations/destinations/bingads/schema.json +++ b/src/configurations/destinations/bingads/schema.json @@ -1,3 +1,53 @@ { - "configSchema": null + "configSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [], + "type": "object", + "properties": { + "consentManagement": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } + } + } + } } diff --git a/src/configurations/destinations/bingads/ui-config.json b/src/configurations/destinations/bingads/ui-config.json index 610d0b291..bbd3fd2d5 100644 --- a/src/configurations/destinations/bingads/ui-config.json +++ b/src/configurations/destinations/bingads/ui-config.json @@ -11,6 +11,24 @@ "regexErrorMessage": "Invalid Bing Ads Tag ID", "required": true, "placeholder": "e.g. 123XXX78" + }, + { + "type": "checkbox", + "label": "Enable Enhanced Conversions", + "value": "enableEnhancedConversions", + "default": false, + "footerNote": "Enable this checkbox to send enhanced conversions" + }, + { + "type": "checkbox", + "label": "Enable Hashing for Enhanced Conversions", + "value": "isHashRequired", + "preRequisiteField": { + "name": "enableEnhancedConversions", + "selectedValue": true + }, + "default": true, + "footerNote": "Enable this checkbox to hash email and phone when used for enhanced conversions" } ] }, @@ -97,7 +115,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/bingads_offline_conversions/db-config.json b/src/configurations/destinations/bingads_offline_conversions/db-config.json new file mode 100644 index 000000000..3f8a8af38 --- /dev/null +++ b/src/configurations/destinations/bingads_offline_conversions/db-config.json @@ -0,0 +1,30 @@ +{ + "name": "BINGADS_OFFLINE_CONVERSIONS", + "displayName": "BingAds Offline Conversions", + "config": { + "transformAtV1": "none", + "supportsVisualMapper": true, + "saveDestinationResponse": true, + "auth": { "type": "OAuth" }, + "includeKeys": ["oneTrustCookieCategories"], + "excludeKeys": [], + "supportedSourceTypes": ["warehouse"], + "supportedMessageTypes": { "cloud": ["record"] }, + "syncBehaviours": ["mirror"], + "disableJsonMapper": true, + "supportedConnectionModes": { + "warehouse": ["cloud"] + }, + "destConfig": { + "defaultConfig": [ + "rudderAccountId", + "customerAccountId", + "customerId", + "oneTrustCookieCategories" + ], + "cloud": ["connectionMode"], + "warehouse": ["connectionMode"] + } + }, + "options": { "isBeta": true } +} diff --git a/src/configurations/destinations/bingads_offline_conversions/schema.json b/src/configurations/destinations/bingads_offline_conversions/schema.json new file mode 100644 index 000000000..1c83ef680 --- /dev/null +++ b/src/configurations/destinations/bingads_offline_conversions/schema.json @@ -0,0 +1,37 @@ +{ + "configSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "required": ["customerAccountId", "customerId"], + "properties": { + "customerAccountId": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^[0-9]+$" + }, + "customerId": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^[0-9]+$" + }, + "oneTrustCookieCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oneTrustCookieCategory": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + }, + "connectionMode": { + "type": "object", + "properties": { + "shopify": { "type": "string", "enum": ["cloud"] }, + "cloud": { "type": "string", "enum": ["cloud"] }, + "warehouse": { "type": "string", "enum": ["cloud"] } + } + } + } + } +} diff --git a/src/configurations/destinations/bingads_offline_conversions/ui-config.json b/src/configurations/destinations/bingads_offline_conversions/ui-config.json new file mode 100644 index 000000000..bd0cf3e68 --- /dev/null +++ b/src/configurations/destinations/bingads_offline_conversions/ui-config.json @@ -0,0 +1,64 @@ +{ + "uiConfig": { + "baseTemplate": [ + { + "title": "Initial setup", + "note": "Review how this destination is set up", + "sections": [ + { + "groups": [ + { + "title": "Connection settings", + "note": "Update your connection settings here", + "icon": "settings", + "fields": [ + { + "type": "textInput", + "label": "Customer Account Id", + "configKey": "customerAccountId", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^[0-9]+$", + "regexErrorMessage": "Invalid Customer Account Id", + "placeholder": "e.g. 532XXXX45", + "secret": false, + "footerNote": "Your Customer Account Id (account identifier)" + }, + { + "type": "textInput", + "label": "Customer Id", + "configKey": "customerId", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^[0-9]+$", + "regexErrorMessage": "Invalid Customer Id", + "placeholder": "e.g. 343XXX598", + "secret": false, + "footerNote": "Your Customer Id" + } + ] + } + ] + }, + { + "groups": [ + { + "title": "Connection mode", + "note": [ + "Update how you want to route events from your source to destination. ", + { + "text": "Get help deciding", + "link": "https://www.rudderstack.com/docs/destinations/rudderstack-connection-modes/" + } + ], + "icon": "sliders", + "fields": [] + } + ] + } + ] + } + ], + "sdkTemplate": { + "title": "Web SDK settings", + "note": "not visible in the ui", + "fields": [] + } + } +} diff --git a/src/configurations/destinations/bqstream/db-config.json b/src/configurations/destinations/bqstream/db-config.json index d7542580b..7385d89f3 100644 --- a/src/configurations/destinations/bqstream/db-config.json +++ b/src/configurations/destinations/bqstream/db-config.json @@ -4,7 +4,7 @@ "config": { "transformAtV1": "router", "saveDestinationResponse": true, - "includeKeys": ["oneTrustCookieCategories"], + "includeKeys": ["oneTrustCookieCategories", "consentManagement"], "excludeKeys": [], "supportedMessageTypes": { "cloud": ["track"] }, "supportedSourceTypes": [ @@ -42,17 +42,17 @@ "insertId", "oneTrustCookieCategories" ], - "android": ["connectionMode"], - "ios": ["connectionMode"], - "web": ["connectionMode"], - "unity": ["connectionMode"], - "amp": ["connectionMode"], - "cloud": ["connectionMode"], - "reactnative": ["connectionMode"], - "flutter": ["connectionMode"], - "cordova": ["connectionMode"], - "warehouse": ["connectionMode"], - "shopify": ["connectionMode"] + "android": ["connectionMode", "consentManagement"], + "ios": ["connectionMode", "consentManagement"], + "web": ["connectionMode", "consentManagement"], + "unity": ["connectionMode", "consentManagement"], + "amp": ["connectionMode", "consentManagement"], + "cloud": ["connectionMode", "consentManagement"], + "reactnative": ["connectionMode", "consentManagement"], + "flutter": ["connectionMode", "consentManagement"], + "cordova": ["connectionMode", "consentManagement"], + "warehouse": ["connectionMode", "consentManagement"], + "shopify": ["connectionMode", "consentManagement"] }, "secretKeys": ["credentials"] } diff --git a/src/configurations/destinations/bqstream/schema.json b/src/configurations/destinations/bqstream/schema.json index fddffa4cc..00a7a5b2d 100644 --- a/src/configurations/destinations/bqstream/schema.json +++ b/src/configurations/destinations/bqstream/schema.json @@ -1,3 +1,443 @@ { - "configSchema": null + "configSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [], + "type": "object", + "properties": { + "consentManagement": { + "type": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "android": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "ios": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "unity": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "amp": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "reactnative": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "flutter": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "cordova": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } + } + } + } } diff --git a/src/configurations/destinations/bqstream/ui-config.json b/src/configurations/destinations/bqstream/ui-config.json index f1d425b5f..a5b4d682b 100644 --- a/src/configurations/destinations/bqstream/ui-config.json +++ b/src/configurations/destinations/bqstream/ui-config.json @@ -62,7 +62,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/deltalake/db-config.json b/src/configurations/destinations/deltalake/db-config.json index c4e71f017..cb47b5d67 100644 --- a/src/configurations/destinations/deltalake/db-config.json +++ b/src/configurations/destinations/deltalake/db-config.json @@ -5,7 +5,7 @@ "config": { "transformAtV1": "processor", "saveDestinationResponse": true, - "includeKeys": ["oneTrustCookieCategories"], + "includeKeys": ["oneTrustCookieCategories", "consentManagement"], "excludeKeys": [], "supportedSourceTypes": [ "android", @@ -54,17 +54,17 @@ "useRudderStorage", "oneTrustCookieCategories" ], - "android": ["connectionMode"], - "ios": ["connectionMode"], - "web": ["connectionMode"], - "unity": ["connectionMode"], - "amp": ["connectionMode"], - "cloud": ["connectionMode"], - "reactnative": ["connectionMode"], - "cloudSource": ["connectionMode"], - "flutter": ["connectionMode"], - "cordova": ["connectionMode"], - "shopify": ["connectionMode"] + "android": ["connectionMode", "consentManagement"], + "ios": ["connectionMode", "consentManagement"], + "web": ["connectionMode", "consentManagement"], + "unity": ["connectionMode", "consentManagement"], + "amp": ["connectionMode", "consentManagement"], + "cloud": ["connectionMode", "consentManagement"], + "reactnative": ["connectionMode", "consentManagement"], + "cloudSource": ["connectionMode", "consentManagement"], + "flutter": ["connectionMode", "consentManagement"], + "cordova": ["connectionMode", "consentManagement"], + "shopify": ["connectionMode", "consentManagement"] }, "secretKeys": [ "accessKeyID", diff --git a/src/configurations/destinations/deltalake/schema.json b/src/configurations/destinations/deltalake/schema.json index 5cf4feb32..002ac16fe 100644 --- a/src/configurations/destinations/deltalake/schema.json +++ b/src/configurations/destinations/deltalake/schema.json @@ -58,6 +58,517 @@ "cordova": { "type": "string", "enum": ["cloud"] }, "shopify": { "type": "string", "enum": ["cloud"] } } + }, + "consentManagement": { + "type": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "cloudSource": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "android": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "ios": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "unity": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "amp": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "reactnative": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "flutter": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "cordova": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } } }, "allOf": [ diff --git a/src/configurations/destinations/deltalake/ui-config.json b/src/configurations/destinations/deltalake/ui-config.json index 6d75100f3..e0c74c984 100644 --- a/src/configurations/destinations/deltalake/ui-config.json +++ b/src/configurations/destinations/deltalake/ui-config.json @@ -561,7 +561,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/emarsys/ui-config.json b/src/configurations/destinations/emarsys/ui-config.json index 69fe93a58..fa57ac0a7 100644 --- a/src/configurations/destinations/emarsys/ui-config.json +++ b/src/configurations/destinations/emarsys/ui-config.json @@ -140,13 +140,13 @@ }, { "title": "Contact Property mapping", - "note": "Map RudderStack Events Properties to Emarsys Contact Properties. This mapping will referenced from message.traits or message.context.traits while making identify and group calls", + "note": "Map RudderStack Event Traits to Emarsys Contact Properties. This mapping will referenced from message.traits or message.context.traits while making identify and group calls", "hideEditIcon": true, "sections": [ { "groups": [ { - "title": "RudderStack Event name to Emarsys Contact Properties Mapping", + "title": "RudderStack Event Traits to Emarsys Contact Properties Mapping", "fields": [ { "type": "redirect", @@ -168,7 +168,7 @@ { "groups": [ { - "title": "RudderStack Event name to Emarsys Ads External Event Name Mapping", + "title": "RudderStack Event name to Emarsys External Event Name Mapping", "fields": [ { "type": "redirect", diff --git a/src/configurations/destinations/fb_custom_audience/db-config.json b/src/configurations/destinations/fb_custom_audience/db-config.json index a3022d2ff..8e3069627 100644 --- a/src/configurations/destinations/fb_custom_audience/db-config.json +++ b/src/configurations/destinations/fb_custom_audience/db-config.json @@ -23,6 +23,7 @@ "destConfig": { "defaultConfig": [ "accessToken", + "appSecret", "maxUserCount", "userSchema", "isHashRequired", @@ -36,7 +37,7 @@ "warehouse": ["adAccountId", "connectionMode"], "shopify": ["connectionMode"] }, - "secretKeys": ["accessToken"] + "secretKeys": ["accessToken", "appSecret"] }, "responseRules": { "responseType": "JSON", diff --git a/src/configurations/destinations/fb_custom_audience/schema.json b/src/configurations/destinations/fb_custom_audience/schema.json index fddffa4cc..da5ad62b6 100644 --- a/src/configurations/destinations/fb_custom_audience/schema.json +++ b/src/configurations/destinations/fb_custom_audience/schema.json @@ -1,3 +1,167 @@ { - "configSchema": null + "configSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": ["accessToken", "maxUserCount"], + "type": "object", + "properties": { + "accessToken": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,500})$" + }, + "appSecret": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,200})$" + }, + "adAccountId": { + "type": "object", + "properties": { + "warehouse": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + }, + "audienceId": { + "type": "object", + "properties": { + "cloud": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + }, + "maxUserCount": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + }, + "userSchema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "EMAIL", + "PHONE", + "GEN", + "MADID", + "EXTERN_ID", + "DOBY", + "DOBM", + "DOBD", + "LN", + "FN", + "FI", + "CT", + "ST", + "ZIP", + "COUNTRY" + ] + }, + "default": ["EMAIL"] + }, + "isHashRequired": { "type": "boolean", "default": true }, + "isRaw": { "type": "boolean", "default": false }, + "disableFormat": { "type": "boolean", "default": false }, + "type": { + "type": "string", + "enum": [ + "UNKNOWN", + "FILE_IMPORTED", + "EVENT_BASED", + "SEED_BASED", + "THIRD_PARTY_IMPORTED", + "COPY_PASTE", + "CONTACT_IMPORTER", + "HOUSEHOLD_AUDIENCE", + "NA" + ], + "default": "NA" + }, + "subType": { + "type": "string", + "enum": [ + "ANYTHING", + "NOTHING", + "HASHES", + "USER_IDS", + "HASHES_OR_USER_IDS", + "MOBILE_ADVERTISER_IDS", + "FB_EVENT_SIGNALS", + "EXTERNAL_IDS", + "MULTI_HASHES", + "TOKENS", + "EXTERNAL_IDS_MIX", + "WEB_PIXEL_HITS", + "MOBILE_APP_EVENTS", + "MOBILE_APP_COMBINATION_EVENTS", + "VIDEO_EVENTS", + "WEB_PIXEL_COMBINATION_EVENTS", + "IG_BUSINESS_EVENTS", + "MULTI_DATA_EVENTS", + "STORE_VISIT_EVENTS", + "INSTANT_ARTICLE_EVENTS", + "ENGAGEMENT_EVENT_USERS", + "FACEBOOK_WIFI_EVENTS", + "CUSTOM_AUDIENCE_USERS", + "S_EXPR", + "DYNAMIC_RULE", + "CONVERSION_PIXEL_HITS", + "APP_USERS", + "CAMPAIGN_CONVERSIONS", + "WEB_PIXEL_HITS_CUSTOM_AUDIENCE_USERS", + "MOBILE_APP_CUSTOM_AUDIENCE_USERS", + "VIDEO_EVENT_USERS", + "FB_PIXEL_HITS", + "IG_PROMOTED_POST", + "PLACE_VISITS", + "OFFLINE_EVENT_USERS", + "EXPANDED_AUDIENCE", + "SEED_LIST", + "PARTNER_CATEGORY_USERS", + "PAGE_SMART_AUDIENCE", + "MULTICOUNTRY_COMBINATION", + "PLATFORM_USERS", + "MULTI_EVENT_SOURCE", + "SMART_AUDIENCE", + "LOOKALIKE_PLATFORM", + "SIGNAL_SOURCE", + "MAIL_CHIMP_EMAIL_HASHES", + "CONSTANT_CONTACTS_EMAIL_HASHES", + "COPY_PASTE_EMAIL_HASHES", + "CONTACT_IMPORTER", + "DATA_FILE", + "NA" + ], + "default": "NA" + }, + + "oneTrustCookieCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oneTrustCookieCategory": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + }, + "connectionMode": { + "type": "object", + "properties": { + "android": { "type": "string", "enum": ["cloud"] }, + "ios": { "type": "string", "enum": ["cloud"] }, + "web": { "type": "string", "enum": ["cloud"] }, + "unity": { "type": "string", "enum": ["cloud"] }, + "amp": { "type": "string", "enum": ["cloud"] }, + "reactnative": { "type": "string", "enum": ["cloud"] }, + "flutter": { "type": "string", "enum": ["cloud"] }, + "cordova": { "type": "string", "enum": ["cloud"] }, + "shopify": { "type": "string", "enum": ["cloud"] }, + "cloud": { "type": "string", "enum": ["cloud"] }, + "warehouse": { "type": "string", "enum": ["cloud"] } + } + } + } + } } diff --git a/src/configurations/destinations/fb_custom_audience/ui-config.json b/src/configurations/destinations/fb_custom_audience/ui-config.json index 958ab9c8b..638738add 100644 --- a/src/configurations/destinations/fb_custom_audience/ui-config.json +++ b/src/configurations/destinations/fb_custom_audience/ui-config.json @@ -7,13 +7,24 @@ "type": "textInput", "label": "Access Token", "value": "accessToken", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,500})$", "required": true, "placeholder": "EAALmZAOFOFpXXXXXXPl4uSHPxQDZCrU6KbZB1gICD9y1ZBNpevRXXXXXO06WZCUuySAX7vw2Re7vmZAHo6OFFZA4vsCUqq2XqBQgkbbgXXXXXXQ4wJFJ2GXGe69qaOXgugjkdjfgRjkknkfOUUTJfmGnzShXXXXX1kDX7xZB8IX9vdfEIZBZBhHQo4ZD" }, + { + "type": "textInput", + "label": "App Secret", + "value": "appSecret", + "secret": true, + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,200})$", + "placeholder": "f65c45d8e013faXXXXXe1759c123456", + "footerNote": "Provide App Secret from your Facebook Developer App's basic settings." + }, { "type": "textInput", "label": "Ad Account id", "value": "adAccountId", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", "required": false, "placeholder": "2309XXX5483" }, @@ -21,6 +32,7 @@ "type": "textInput", "label": "Audience Id", "value": "audienceId", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", "required": true, "placeholder": "238476XXXX5910030" }, @@ -28,6 +40,7 @@ "type": "textInput", "label": "Audience Batch Size", "value": "maxUserCount", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", "required": true, "placeholder": "50" }, diff --git a/src/configurations/destinations/freshsales/db-config.json b/src/configurations/destinations/freshsales/db-config.json index a329eeaad..dead2710f 100644 --- a/src/configurations/destinations/freshsales/db-config.json +++ b/src/configurations/destinations/freshsales/db-config.json @@ -4,7 +4,7 @@ "config": { "transformAtV1": "router", "saveDestinationResponse": true, - "includeKeys": ["apiKey", "domain", "oneTrustCookieCategories"], + "includeKeys": ["apiKey", "domain", "oneTrustCookieCategories", "consentManagement"], "excludeKeys": [], "supportedSourceTypes": [ "amp", @@ -40,17 +40,17 @@ "rudderEventsToFreshsalesEvents", "oneTrustCookieCategories" ], - "amp": ["connectionMode"], - "android": ["connectionMode"], - "cordova": ["connectionMode"], - "cloud": ["connectionMode"], - "flutter": ["connectionMode"], - "ios": ["connectionMode"], - "reactnative": ["connectionMode"], - "unity": ["connectionMode"], - "warehouse": ["connectionMode"], - "web": ["connectionMode"], - "shopify": ["connectionMode"] + "amp": ["connectionMode", "consentManagement"], + "android": ["connectionMode", "consentManagement"], + "cordova": ["connectionMode", "consentManagement"], + "cloud": ["connectionMode", "consentManagement"], + "flutter": ["connectionMode", "consentManagement"], + "ios": ["connectionMode", "consentManagement"], + "reactnative": ["connectionMode", "consentManagement"], + "unity": ["connectionMode", "consentManagement"], + "warehouse": ["connectionMode", "consentManagement"], + "web": ["connectionMode", "consentManagement"], + "shopify": ["connectionMode", "consentManagement"] }, "secretKeys": ["apiKey"] } diff --git a/src/configurations/destinations/freshsales/schema.json b/src/configurations/destinations/freshsales/schema.json index 2dabf6949..9739f98fd 100644 --- a/src/configurations/destinations/freshsales/schema.json +++ b/src/configurations/destinations/freshsales/schema.json @@ -52,6 +52,517 @@ "cloud": { "type": "string", "enum": ["cloud"] }, "warehouse": { "type": "string", "enum": ["cloud"] } } + }, + "consentManagement": { + "type": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "android": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "ios": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "unity": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "amp": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "reactnative": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "flutter": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "cordova": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } } } } diff --git a/src/configurations/destinations/freshsales/ui-config.json b/src/configurations/destinations/freshsales/ui-config.json index 3aa329eec..e275c1762 100644 --- a/src/configurations/destinations/freshsales/ui-config.json +++ b/src/configurations/destinations/freshsales/ui-config.json @@ -67,7 +67,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/googleads/db-config.json b/src/configurations/destinations/googleads/db-config.json index 02b593a35..bb6a49ce7 100644 --- a/src/configurations/destinations/googleads/db-config.json +++ b/src/configurations/destinations/googleads/db-config.json @@ -6,6 +6,7 @@ "saveDestinationResponse": false, "includeKeys": [ "v2", + "allowIdentify", "conversionID", "eventMappingFromConfig", "pageLoadConversions", @@ -26,7 +27,8 @@ "enableDynamicRemarketingEventsFiltering", "eventsToTrackDynamicRemarketing", "allowEnhancedConversions", - "enableConversionLabel" + "enableConversionLabel", + "consentManagement" ], "excludeKeys": [], "supportedSourceTypes": ["web"], @@ -35,6 +37,7 @@ "destConfig": { "defaultConfig": [ "v2", + "allowIdentify", "conversionID", "eventMappingFromConfig", "pageLoadConversions", @@ -57,7 +60,7 @@ "oneTrustCookieCategories", "enableConversionLabel" ], - "web": ["useNativeSDK", "dynamicRemarketing", "connectionMode"] + "web": ["useNativeSDK", "dynamicRemarketing", "connectionMode", "consentManagement"] }, "secretKeys": [] } diff --git a/src/configurations/destinations/googleads/schema.json b/src/configurations/destinations/googleads/schema.json index 6f1a79ec4..0d819bc30 100644 --- a/src/configurations/destinations/googleads/schema.json +++ b/src/configurations/destinations/googleads/schema.json @@ -5,6 +5,7 @@ "type": "object", "properties": { "v2": { "type": "boolean", "default": true }, + "allowIdentify": { "type": "boolean", "default": false }, "conversionID": { "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^AW-(.{0,100})$" @@ -124,6 +125,57 @@ "connectionMode": { "type": "object", "properties": { "web": { "type": "string", "enum": ["device"] } } + }, + "consentManagement": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } } }, "allOf": [ diff --git a/src/configurations/destinations/googleads/ui-config.json b/src/configurations/destinations/googleads/ui-config.json index 18cbbfe34..e25576baa 100644 --- a/src/configurations/destinations/googleads/ui-config.json +++ b/src/configurations/destinations/googleads/ui-config.json @@ -13,6 +13,16 @@ "text": "If enabled, track events follow the RudderStack ecommerce spec" } }, + { + "type": "checkbox", + "label": "Allow identify calls for the Google Ads destination", + "value": "allowIdentify", + "default": false, + "footerURL": { + "link": "https://support.google.com/google-ads/answer/13258081#zippy=%2Cconfigure-your-conversion-page-google-tag", + "text": "If enabled, identify calls can be used to define your enhanced conversion fields" + } + }, { "type": "textInput", "label": "Conversion ID", @@ -324,7 +334,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/heap/db-config.json b/src/configurations/destinations/heap/db-config.json index 5e3cb1e84..ecd2d5203 100644 --- a/src/configurations/destinations/heap/db-config.json +++ b/src/configurations/destinations/heap/db-config.json @@ -11,7 +11,8 @@ "blacklistedEvents", "whitelistedEvents", "oneTrustCookieCategories", - "eventFilteringOption" + "eventFilteringOption", + "consentManagement" ], "excludeKeys": [], "supportedSourceTypes": [ @@ -52,17 +53,17 @@ "eventFilteringOption", "oneTrustCookieCategories" ], - "web": ["useNativeSDK", "connectionMode"], - "android": ["connectionMode"], - "ios": ["connectionMode"], - "unity": ["connectionMode"], - "amp": ["connectionMode"], - "cloud": ["connectionMode"], - "warehouse": ["connectionMode"], - "reactnative": ["connectionMode"], - "flutter": ["connectionMode"], - "cordova": ["connectionMode"], - "shopify": ["connectionMode"] + "web": ["useNativeSDK", "connectionMode", "consentManagement"], + "android": ["connectionMode", "consentManagement"], + "ios": ["connectionMode", "consentManagement"], + "unity": ["connectionMode", "consentManagement"], + "amp": ["connectionMode", "consentManagement"], + "cloud": ["connectionMode", "consentManagement"], + "warehouse": ["connectionMode", "consentManagement"], + "reactnative": ["connectionMode", "consentManagement"], + "flutter": ["connectionMode", "consentManagement"], + "cordova": ["connectionMode", "consentManagement"], + "shopify": ["connectionMode", "consentManagement"] }, "secretKeys": [] } diff --git a/src/configurations/destinations/heap/schema.json b/src/configurations/destinations/heap/schema.json index c18156f18..6567a6cac 100644 --- a/src/configurations/destinations/heap/schema.json +++ b/src/configurations/destinations/heap/schema.json @@ -65,6 +65,517 @@ "cloud": { "type": "string", "enum": ["cloud"] }, "warehouse": { "type": "string", "enum": ["cloud"] } } + }, + "consentManagement": { + "type": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "android": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "ios": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "unity": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "amp": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "reactnative": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "flutter": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "cordova": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } } } } diff --git a/src/configurations/destinations/heap/ui-config.json b/src/configurations/destinations/heap/ui-config.json index dc1e6ea73..04ee6a77e 100644 --- a/src/configurations/destinations/heap/ui-config.json +++ b/src/configurations/destinations/heap/ui-config.json @@ -99,7 +99,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/impact/db-config.json b/src/configurations/destinations/impact/db-config.json index a3704e555..efa28b221 100644 --- a/src/configurations/destinations/impact/db-config.json +++ b/src/configurations/destinations/impact/db-config.json @@ -4,7 +4,7 @@ "config": { "transformAtV1": "processor", "saveDestinationResponse": true, - "includeKeys": ["oneTrustCookieCategories"], + "includeKeys": ["oneTrustCookieCategories", "consentManagement"], "excludeKeys": [], "supportedSourceTypes": [ "android", @@ -50,17 +50,17 @@ "installEventNames", "oneTrustCookieCategories" ], - "android": ["connectionMode"], - "ios": ["connectionMode"], - "web": ["connectionMode"], - "unity": ["connectionMode"], - "amp": ["connectionMode"], - "cloud": ["connectionMode"], - "warehouse": ["connectionMode"], - "reactnative": ["connectionMode"], - "flutter": ["connectionMode"], - "cordova": ["connectionMode"], - "shopify": ["connectionMode"] + "android": ["connectionMode", "consentManagement"], + "ios": ["connectionMode", "consentManagement"], + "web": ["connectionMode", "consentManagement"], + "unity": ["connectionMode", "consentManagement"], + "amp": ["connectionMode", "consentManagement"], + "cloud": ["connectionMode", "consentManagement"], + "warehouse": ["connectionMode", "consentManagement"], + "reactnative": ["connectionMode", "consentManagement"], + "flutter": ["connectionMode", "consentManagement"], + "cordova": ["connectionMode", "consentManagement"], + "shopify": ["connectionMode", "consentManagement"] }, "secretKeys": ["apiKey"] } diff --git a/src/configurations/destinations/impact/schema.json b/src/configurations/destinations/impact/schema.json index 2e1121fa3..c6af3545b 100644 --- a/src/configurations/destinations/impact/schema.json +++ b/src/configurations/destinations/impact/schema.json @@ -111,6 +111,517 @@ "cloud": { "type": "string", "enum": ["cloud"] }, "warehouse": { "type": "string", "enum": ["cloud"] } } + }, + "consentManagement": { + "type": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "android": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "ios": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "unity": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "amp": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "reactnative": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "flutter": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "cordova": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } } } } diff --git a/src/configurations/destinations/impact/ui-config.json b/src/configurations/destinations/impact/ui-config.json index d5b927621..422462e4a 100644 --- a/src/configurations/destinations/impact/ui-config.json +++ b/src/configurations/destinations/impact/ui-config.json @@ -164,7 +164,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/klaviyo_bulk_upload/db-config.json b/src/configurations/destinations/klaviyo_bulk_upload/db-config.json new file mode 100644 index 000000000..0c6f2dfff --- /dev/null +++ b/src/configurations/destinations/klaviyo_bulk_upload/db-config.json @@ -0,0 +1,29 @@ +{ + "name": "KLAVIYO_BULK_UPLOAD", + "displayName": "Klaviyo Bulk Upload", + "config": { + "cdkV2Enabled": true, + "supportsVisualMapper": true, + "transformAtV1": "router", + "disableJsonMapper": true, + "syncBehaviours": ["upsert"], + "saveDestinationResponse": true, + "includeKeys": ["privateApiKey", "listId", "oneTrustCookieCategories"], + "excludeKeys": [], + "supportedSourceTypes": ["warehouse"], + "supportedConnectionModes": { + "cloud": ["cloud"], + "warehouse": ["cloud"] + }, + "supportedMessageTypes": { + "cloud": ["identify"] + }, + "destConfig": { + "defaultConfig": ["privateApiKey", "listId", "oneTrustCookieCategories"] + }, + "secretKeys": ["privateApiKey"] + }, + "options": { + "isBeta": true + } +} diff --git a/src/configurations/destinations/klaviyo_bulk_upload/schema.json b/src/configurations/destinations/klaviyo_bulk_upload/schema.json new file mode 100644 index 000000000..a0eda35b9 --- /dev/null +++ b/src/configurations/destinations/klaviyo_bulk_upload/schema.json @@ -0,0 +1,29 @@ +{ + "configSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": ["privateApiKey"], + "type": "object", + "properties": { + "privateApiKey": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$" + }, + "listId": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + }, + "oneTrustCookieCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oneTrustCookieCategory": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + } + } +} diff --git a/src/configurations/destinations/klaviyo_bulk_upload/ui-config.json b/src/configurations/destinations/klaviyo_bulk_upload/ui-config.json new file mode 100644 index 000000000..434398126 --- /dev/null +++ b/src/configurations/destinations/klaviyo_bulk_upload/ui-config.json @@ -0,0 +1,117 @@ +{ + "uiConfig": { + "baseTemplate": [ + { + "title": "Initial setup", + "note": "Review how this destination is set up", + "sections": [ + { + "groups": [ + { + "title": "Connection Settings", + "note": "Update your connection settings here", + "icon": "settings", + "fields": [ + { + "type": "textInput", + "label": "Private API Key", + "note": "Your Private API Key", + "configKey": "privateApiKey", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$", + "regexErrorMessage": "Invalid Private API Key", + "placeholder": "e.g: QuIUHRj7XXX2L7eZDZiPQU", + "secret": true + } + ] + } + ] + }, + { + "groups": [ + { + "title": "Connection mode", + "note": [ + "Update how you want to route events from your source to destination. ", + { + "text": "Get help deciding", + "link": "https://www.rudderstack.com/docs/destinations/rudderstack-connection-modes/" + } + ], + "icon": "sliders", + "fields": [] + } + ] + } + ] + }, + { + "title": "Configuration settings", + "note": "Manage the settings for your destination", + "sections": [ + { + "title": "Destination settings", + "note": "Configure destination-specific settings here", + "icon": "settings", + "groups": [ + { + "title": "List and subscription settings", + "note": "Update your list settings here", + "icon": "settings", + "fields": [ + { + "type": "textInput", + "label": "List Id", + "note": "The default list that you'd like to subscribe and add users to when you call", + "configKey": "listId", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "regexErrorMessage": "Invalid List Id", + "placeholder": "e.g: c59X3838", + "secret": false + } + ] + } + ] + }, + { + "title": "Other settings", + "note": "Configure advanced RudderStack features here", + "icon": "otherSettings", + "groups": [ + { + "title": "OneTrust consent settings", + "note": [ + "Enter your OneTrust consent category IDs if you have them configured. The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + { + "text": "Learn more ", + "link": "https://www.rudderstack.com/docs/sources/event-streams/sdks/consent-manager/onetrust/" + }, + "about RudderStack's OneTrust Consent Management feature." + ], + "fields": [ + { + "type": "tagInput", + "label": "Consent categories", + "note": "Input your OneTrust category IDs by pressing 'Enter' after each entry.", + "configKey": "oneTrustCookieCategories", + "tagKey": "oneTrustCookieCategory", + "placeholder": "e.g: C0001", + "default": [ + { + "oneTrustCookieCategory": "" + } + ] + } + ] + } + ] + } + ] + } + ], + "sdkTemplate": { + "title": "SDK settings", + "note": "not visible in the ui", + "fields": [] + } + } +} diff --git a/src/configurations/destinations/koddi/db-config.json b/src/configurations/destinations/koddi/db-config.json new file mode 100644 index 000000000..e31b453c9 --- /dev/null +++ b/src/configurations/destinations/koddi/db-config.json @@ -0,0 +1,56 @@ +{ + "name": "KODDI", + "displayName": "Koddi", + "config": { + "cdkV2Enabled": true, + "transformAtV1": "router", + "saveDestinationResponse": true, + "excludeKeys": [], + "supportedSourceTypes": [ + "android", + "ios", + "web", + "unity", + "amp", + "cloud", + "reactnative", + "flutter", + "cordova", + "shopify", + "warehouse" + ], + "supportedMessageTypes": { + "cloud": ["track"] + }, + "supportedConnectionModes": { + "android": ["cloud"], + "ios": ["cloud"], + "web": ["cloud"], + "unity": ["cloud"], + "amp": ["cloud"], + "cloud": ["cloud"], + "reactnative": ["cloud"], + "flutter": ["cloud"], + "cordova": ["cloud"], + "shopify": ["cloud"], + "warehouse": ["cloud"] + }, + "destConfig": { + "defaultConfig": ["apiBaseUrl", "clientName", "testVersionOverride", "overrides"], + "android": ["connectionMode"], + "ios": ["connectionMode"], + "web": ["connectionMode"], + "unity": ["connectionMode"], + "amp": ["connectionMode"], + "cloud": ["connectionMode"], + "reactnative": ["connectionMode"], + "flutter": ["connectionMode"], + "cordova": ["connectionMode"], + "shopify": ["connectionMode"], + "warehouse": ["connectionMode"] + } + }, + "options": { + "isBeta": true + } +} diff --git a/src/configurations/destinations/koddi/schema.json b/src/configurations/destinations/koddi/schema.json new file mode 100644 index 000000000..45d47f745 --- /dev/null +++ b/src/configurations/destinations/koddi/schema.json @@ -0,0 +1,74 @@ +{ + "configSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": ["apiBaseUrl", "clientName"], + "type": "object", + "properties": { + "apiBaseUrl": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(.{1,100})$" + }, + "clientName": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,200})$" + }, + "testVersionOverride": { + "type": "boolean", + "default": false + }, + "overrides": { + "type": "boolean", + "default": false + }, + "connectionMode": { + "type": "object", + "properties": { + "android": { + "type": "string", + "enum": ["cloud"] + }, + "ios": { + "type": "string", + "enum": ["cloud"] + }, + "web": { + "type": "string", + "enum": ["cloud"] + }, + "unity": { + "type": "string", + "enum": ["cloud"] + }, + "amp": { + "type": "string", + "enum": ["cloud"] + }, + "cloud": { + "type": "string", + "enum": ["cloud"] + }, + "reactnative": { + "type": "string", + "enum": ["cloud"] + }, + "flutter": { + "type": "string", + "enum": ["cloud"] + }, + "cordova": { + "type": "string", + "enum": ["cloud"] + }, + "shopify": { + "type": "string", + "enum": ["cloud"] + }, + "warehouse": { + "type": "string", + "enum": ["cloud"] + } + } + } + } + } +} diff --git a/src/configurations/destinations/koddi/ui-config.json b/src/configurations/destinations/koddi/ui-config.json new file mode 100644 index 000000000..1258d08f7 --- /dev/null +++ b/src/configurations/destinations/koddi/ui-config.json @@ -0,0 +1,95 @@ +{ + "uiConfig": { + "baseTemplate": [ + { + "title": "Initial setup", + "note": "Review how this destination is set up", + "sections": [ + { + "groups": [ + { + "title": "Connection settings", + "note": "Update your connection settings here.", + "icon": "settings", + "fields": [ + { + "type": "textInput", + "label": "API Base URL", + "note": "Enter your API Base URL, e.g. https://{clientname}.koddi.io/event-collection/beacon", + "configKey": "apiBaseUrl", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(.{1,100})$", + "regexErrorMessage": "Invalid API Base URl", + "required": true, + "placeholder": "e.g. https://clientname.koddi.io/event-collection/beacon" + }, + { + "type": "textInput", + "label": "Client Name", + "configKey": "clientName", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,200})$", + "regexErrorMessage": "Invalid Client Name", + "required": true, + "placeholder": "e.g. clientName" + } + ] + } + ] + }, + { + "groups": [ + { + "title": "Connection mode", + "note": [ + "Update how you want to route events from your source to destination. ", + { + "text": "Get help deciding", + "link": "https://www.rudderstack.com/docs/destinations/rudderstack-connection-modes/" + } + ], + "icon": "sliders", + "fields": [] + } + ] + } + ] + }, + { + "title": "Configuration settings", + "note": "Manage the settings for your destination", + "sections": [ + { + "title": "Other settings", + "note": "Configure advanced RudderStack features here", + "icon": "otherSettings", + "groups": [ + { + "title": "Clicks Event Settings", + "fields": [ + { + "type": "checkbox", + "label": "testVersionOverride", + "configKey": "testVersionOverride", + "default": false, + "note": "Enabling this allows you to add a testing parameter." + }, + { + "type": "checkbox", + "label": "overrides", + "configKey": "overrides", + "default": false, + "note": "Enabling this allows you to override the auction results." + } + ] + } + ] + } + ] + } + ], + "sdkTemplate": { + "title": "SDK settings", + "note": "not visible in the ui", + "fields": [] + } + } +} diff --git a/src/configurations/destinations/matomo/db-config.json b/src/configurations/destinations/matomo/db-config.json index 9dca3f5ad..011dc84a1 100644 --- a/src/configurations/destinations/matomo/db-config.json +++ b/src/configurations/destinations/matomo/db-config.json @@ -25,7 +25,8 @@ "timeout", "getCrossDomainLinkingUrlParameter", "disableBrowserFeatureDetection", - "oneTrustCookieCategories" + "oneTrustCookieCategories", + "consentManagement" ], "excludeKeys": [], "supportedSourceTypes": ["web"], @@ -55,7 +56,7 @@ "disableBrowserFeatureDetection", "oneTrustCookieCategories" ], - "web": ["useNativeSDK", "connectionMode"] + "web": ["useNativeSDK", "connectionMode", "consentManagement"] }, "secretKeys": ["serverUrl", "siteId"] } diff --git a/src/configurations/destinations/matomo/schema.json b/src/configurations/destinations/matomo/schema.json index a3a0cb6ef..d55436583 100644 --- a/src/configurations/destinations/matomo/schema.json +++ b/src/configurations/destinations/matomo/schema.json @@ -76,6 +76,57 @@ "connectionMode": { "type": "object", "properties": { "web": { "type": "string", "enum": ["device"] } } + }, + "consentManagement": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } } }, "allOf": [ diff --git a/src/configurations/destinations/matomo/ui-config.json b/src/configurations/destinations/matomo/ui-config.json index e97af1d70..82be1ae16 100644 --- a/src/configurations/destinations/matomo/ui-config.json +++ b/src/configurations/destinations/matomo/ui-config.json @@ -282,7 +282,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/mp/schema.json b/src/configurations/destinations/mp/schema.json index 3a01439c0..08be47c98 100644 --- a/src/configurations/destinations/mp/schema.json +++ b/src/configurations/destinations/mp/schema.json @@ -8,10 +8,6 @@ "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$" }, - "apiSecret": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" - }, "serviceAccountUserName": { "type": "string" }, diff --git a/src/configurations/destinations/mp/ui-config.json b/src/configurations/destinations/mp/ui-config.json index ddb2f5133..5365c2a9b 100644 --- a/src/configurations/destinations/mp/ui-config.json +++ b/src/configurations/destinations/mp/ui-config.json @@ -13,16 +13,6 @@ "placeholder": "c24f56ed8172XXXX6de5a5f0befe8b92", "secret": true }, - { - "type": "textInput", - "label": "API Secret", - "value": "apiSecret", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", - "regexErrorMessage": "Invalid API Secret", - "required": false, - "placeholder": "f8a911adfbb6XXXXc43cdfe29e912a90", - "secret": true - }, { "type": "textInput", "label": "Service Account Username", diff --git a/src/configurations/destinations/quora_pixel/db-config.json b/src/configurations/destinations/quora_pixel/db-config.json index 90a272934..3fe395272 100644 --- a/src/configurations/destinations/quora_pixel/db-config.json +++ b/src/configurations/destinations/quora_pixel/db-config.json @@ -10,7 +10,8 @@ "whitelistedEvents", "blacklistedEvents", "eventFilteringOption", - "oneTrustCookieCategories" + "oneTrustCookieCategories", + "consentManagement" ], "excludeKeys": [], "supportedSourceTypes": ["web"], @@ -25,7 +26,7 @@ "eventFilteringOption", "oneTrustCookieCategories" ], - "web": ["useNativeSDK", "connectionMode"] + "web": ["useNativeSDK", "connectionMode", "consentManagement"] }, "secretKeys": ["pixelId"] } diff --git a/src/configurations/destinations/quora_pixel/schema.json b/src/configurations/destinations/quora_pixel/schema.json index e978dc76c..1a74482bd 100644 --- a/src/configurations/destinations/quora_pixel/schema.json +++ b/src/configurations/destinations/quora_pixel/schema.json @@ -81,6 +81,57 @@ "connectionMode": { "type": "object", "properties": { "web": { "type": "string", "enum": ["device"] } } + }, + "consentManagement": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } } } } diff --git a/src/configurations/destinations/quora_pixel/ui-config.json b/src/configurations/destinations/quora_pixel/ui-config.json index d14133a3c..cfd57ed4e 100644 --- a/src/configurations/destinations/quora_pixel/ui-config.json +++ b/src/configurations/destinations/quora_pixel/ui-config.json @@ -160,7 +160,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/reddit_pixel/db-config.json b/src/configurations/destinations/reddit_pixel/db-config.json index d62832f6c..894720759 100644 --- a/src/configurations/destinations/reddit_pixel/db-config.json +++ b/src/configurations/destinations/reddit_pixel/db-config.json @@ -10,7 +10,8 @@ "blacklistedEvents", "whitelistedEvents", "oneTrustCookieCategories", - "eventFilteringOption" + "eventFilteringOption", + "consentManagement" ], "excludeKeys": [], "supportedSourceTypes": ["web"], @@ -25,7 +26,7 @@ "eventFilteringOption", "oneTrustCookieCategories" ], - "web": ["useNativeSDK", "connectionMode"] + "web": ["useNativeSDK", "connectionMode", "consentManagement"] }, "secretKeys": ["advertiserId"] } diff --git a/src/configurations/destinations/reddit_pixel/schema.json b/src/configurations/destinations/reddit_pixel/schema.json index fddffa4cc..f7a7d249d 100644 --- a/src/configurations/destinations/reddit_pixel/schema.json +++ b/src/configurations/destinations/reddit_pixel/schema.json @@ -1,3 +1,138 @@ { - "configSchema": null + "configSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": ["advertiserId"], + "type": "object", + "properties": { + "advertiserId": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + }, + "eventMappingFromConfig": { + "type": "array", + "items": { + "type": "object", + "properties": { + "from": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + }, + "to": { + "type": "string", + "enum": [ + "AddToCart", + "AddToWishlist", + "Purchase", + "Lead", + "ViewContent", + "Search", + "SignUp", + "" + ] + } + } + } + }, + "oneTrustCookieCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oneTrustCookieCategory": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + }, + "useNativeSDK": { + "type": "object", + "properties": { + "web": { + "type": "boolean" + } + } + }, + "connectionMode": { + "type": "object", + "properties": { + "web": { "type": "string", "enum": ["device"] } + } + }, + "eventFilteringOption": { + "type": "string", + "enum": ["disable", "whitelistedEvents", "blacklistedEvents"], + "default": "disable" + }, + "whitelistedEvents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "eventName": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + }, + "blacklistedEvents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "eventName": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + }, + "consentManagement": { + "type": "object", + "properties": { + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } + } + }, + "additionalProperties": false + } } diff --git a/src/configurations/destinations/reddit_pixel/ui-config.json b/src/configurations/destinations/reddit_pixel/ui-config.json index b04018901..537bb3bad 100644 --- a/src/configurations/destinations/reddit_pixel/ui-config.json +++ b/src/configurations/destinations/reddit_pixel/ui-config.json @@ -7,7 +7,7 @@ "type": "textInput", "label": "Pixel ID", "value": "advertiserId", - "regex": "^(.{0,100})$", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", "regexErrorMessage": "Invalid Pixel ID", "required": true, "placeholder": "e.g: t1_d2XXc27c", @@ -48,6 +48,10 @@ { "name": "Search", "value": "Search" + }, + { + "name": "SignUp", + "value": "SignUp" } ] } @@ -136,7 +140,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/sftp/schema.json b/src/configurations/destinations/sftp/schema.json index 1068f6754..8cc776730 100644 --- a/src/configurations/destinations/sftp/schema.json +++ b/src/configurations/destinations/sftp/schema.json @@ -28,7 +28,7 @@ }, "filePath": { "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^.*\\.(json|csv)$" + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^.*\\{destinationID\\}.*\\{jobRunID\\}.*\\.(json|csv)$" }, "oneTrustCookieCategories": { "type": "array", diff --git a/src/configurations/destinations/sftp/ui-config.json b/src/configurations/destinations/sftp/ui-config.json index d79c3a2db..94f1c8e90 100644 --- a/src/configurations/destinations/sftp/ui-config.json +++ b/src/configurations/destinations/sftp/ui-config.json @@ -10,6 +10,7 @@ { "title": "Connection settings", "icon": "settings", + "note": "The upload timeout for this destination is set to 5 minutes. This means RudderStack will wait for up to 5 minutes before uploading data to this destination.", "fields": [ { "type": "textInput", @@ -107,9 +108,9 @@ { "type": "textInput", "label": "File Path", - "note": "Enter the file path where the data will be stored. The parent directory of the file should already exist. Supported file types are JSON and CSV. We support date and time variables within '{}', including {YYYY}, {MM}, {DD}, {hh}, {mm}, {ss}, {ms}, {timestampInSec}, and {timestampInMS}.", + "note": "Enter the file path where the data is stored. See the docs for the path format, required fields and supported variables.", "configKey": "filePath", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^.*\\.(json|csv)$", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^.*\\{destinationID\\}.*\\{jobRunID\\}.*\\.(json|csv)$", "regexErrorMessage": "Invalid File Path", "placeholder": "e.g: directory/file_{YYYY}_{MM}_{DD}_{mm}.csv" } diff --git a/src/configurations/destinations/variance/db-config.json b/src/configurations/destinations/variance/db-config.json index bf12006cd..b93e9ac5f 100644 --- a/src/configurations/destinations/variance/db-config.json +++ b/src/configurations/destinations/variance/db-config.json @@ -5,7 +5,7 @@ "transformAtV1": "processor", "cdkV2Enabled": true, "saveDestinationResponse": true, - "includeKeys": ["oneTrustCookieCategories"], + "includeKeys": ["oneTrustCookieCategories", "consentManagement"], "excludeKeys": [], "supportedSourceTypes": [ "android", @@ -35,17 +35,17 @@ }, "destConfig": { "defaultConfig": ["webhookUrl", "authHeader", "oneTrustCookieCategories"], - "android": ["connectionMode"], - "ios": ["connectionMode"], - "web": ["connectionMode"], - "unity": ["connectionMode"], - "amp": ["connectionMode"], - "cloud": ["connectionMode"], - "reactnative": ["connectionMode"], - "flutter": ["connectionMode"], - "cordova": ["connectionMode"], - "warehouse": ["connectionMode"], - "shopify": ["connectionMode"] + "android": ["connectionMode", "consentManagement"], + "ios": ["connectionMode", "consentManagement"], + "web": ["connectionMode", "consentManagement"], + "unity": ["connectionMode", "consentManagement"], + "amp": ["connectionMode", "consentManagement"], + "cloud": ["connectionMode", "consentManagement"], + "reactnative": ["connectionMode", "consentManagement"], + "flutter": ["connectionMode", "consentManagement"], + "cordova": ["connectionMode", "consentManagement"], + "warehouse": ["connectionMode", "consentManagement"], + "shopify": ["connectionMode", "consentManagement"] }, "secretKeys": ["authHeader"] } diff --git a/src/configurations/destinations/variance/schema.json b/src/configurations/destinations/variance/schema.json index fddffa4cc..00a7a5b2d 100644 --- a/src/configurations/destinations/variance/schema.json +++ b/src/configurations/destinations/variance/schema.json @@ -1,3 +1,443 @@ { - "configSchema": null + "configSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [], + "type": "object", + "properties": { + "consentManagement": { + "type": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "android": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "ios": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "unity": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "amp": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "reactnative": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "flutter": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "cordova": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { "provider": { "const": "custom" } }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { "type": "string", "enum": ["and", "or"] } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } + } + } + } } diff --git a/src/configurations/destinations/variance/ui-config.json b/src/configurations/destinations/variance/ui-config.json index 64a4c2581..57065db23 100644 --- a/src/configurations/destinations/variance/ui-config.json +++ b/src/configurations/destinations/variance/ui-config.json @@ -39,7 +39,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/vero/db-config.json b/src/configurations/destinations/vero/db-config.json index 7cb2f024b..36caa85fe 100644 --- a/src/configurations/destinations/vero/db-config.json +++ b/src/configurations/destinations/vero/db-config.json @@ -9,7 +9,8 @@ "blacklistedEvents", "whitelistedEvents", "eventFilteringOption", - "oneTrustCookieCategories" + "oneTrustCookieCategories", + "consentManagement" ], "excludeKeys": [], "supportedSourceTypes": [ @@ -52,17 +53,17 @@ "eventFilteringOption", "oneTrustCookieCategories" ], - "web": ["apiKey", "useNativeSDK", "connectionMode"], - "android": ["connectionMode"], - "ios": ["connectionMode"], - "unity": ["connectionMode"], - "amp": ["connectionMode"], - "reactnative": ["connectionMode"], - "flutter": ["connectionMode"], - "cordova": ["connectionMode"], - "shopify": ["connectionMode"], - "cloud": ["connectionMode"], - "warehouse": ["connectionMode"] + "web": ["apiKey", "useNativeSDK", "connectionMode", "consentManagement"], + "android": ["connectionMode", "consentManagement"], + "ios": ["connectionMode", "consentManagement"], + "unity": ["connectionMode", "consentManagement"], + "amp": ["connectionMode", "consentManagement"], + "reactnative": ["connectionMode", "consentManagement"], + "flutter": ["connectionMode", "consentManagement"], + "cordova": ["connectionMode", "consentManagement"], + "shopify": ["connectionMode", "consentManagement"], + "cloud": ["connectionMode", "consentManagement"], + "warehouse": ["connectionMode", "consentManagement"] }, "secretKeys": ["authToken"] } diff --git a/src/configurations/destinations/vero/schema.json b/src/configurations/destinations/vero/schema.json index 7e5713120..d9055349c 100644 --- a/src/configurations/destinations/vero/schema.json +++ b/src/configurations/destinations/vero/schema.json @@ -81,6 +81,517 @@ "cloud": { "type": "string", "enum": ["cloud"] }, "warehouse": { "type": "string", "enum": ["cloud"] } } + }, + "consentManagement": { + "type": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "android": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "ios": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "unity": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "amp": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "reactnative": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "flutter": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "cordova": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } } } } diff --git a/src/configurations/destinations/vero/ui-config.json b/src/configurations/destinations/vero/ui-config.json index c78d1e46f..1bdbcb476 100644 --- a/src/configurations/destinations/vero/ui-config.json +++ b/src/configurations/destinations/vero/ui-config.json @@ -108,7 +108,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/destinations/webhook/db-config.json b/src/configurations/destinations/webhook/db-config.json index 75a8a53f1..8f35df356 100644 --- a/src/configurations/destinations/webhook/db-config.json +++ b/src/configurations/destinations/webhook/db-config.json @@ -6,7 +6,7 @@ "isAudienceSupported": true, "transformAtV1": "processor", "saveDestinationResponse": false, - "includeKeys": ["oneTrustCookieCategories"], + "includeKeys": ["oneTrustCookieCategories", "consentManagement"], "excludeKeys": [], "supportedSourceTypes": [ "android", @@ -36,17 +36,17 @@ }, "destConfig": { "defaultConfig": ["webhookUrl", "webhookMethod", "headers", "oneTrustCookieCategories"], - "android": ["connectionMode"], - "ios": ["connectionMode"], - "web": ["connectionMode"], - "unity": ["connectionMode"], - "amp": ["connectionMode"], - "cloud": ["connectionMode"], - "warehouse": ["connectionMode"], - "reactnative": ["connectionMode"], - "flutter": ["connectionMode"], - "cordova": ["connectionMode"], - "shopify": ["connectionMode"] + "android": ["connectionMode", "consentManagement"], + "ios": ["connectionMode", "consentManagement"], + "web": ["connectionMode", "consentManagement"], + "unity": ["connectionMode", "consentManagement"], + "amp": ["connectionMode", "consentManagement"], + "cloud": ["connectionMode", "consentManagement"], + "warehouse": ["connectionMode", "consentManagement"], + "reactnative": ["connectionMode", "consentManagement"], + "flutter": ["connectionMode", "consentManagement"], + "cordova": ["connectionMode", "consentManagement"], + "shopify": ["connectionMode", "consentManagement"] }, "secretKeys": ["headers.to"] } diff --git a/src/configurations/destinations/webhook/schema.json b/src/configurations/destinations/webhook/schema.json index 7e88877e3..564bc7acf 100644 --- a/src/configurations/destinations/webhook/schema.json +++ b/src/configurations/destinations/webhook/schema.json @@ -4,6 +4,517 @@ "required": ["webhookUrl"], "type": "object", "properties": { + "consentManagement": { + "type": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "android": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "ios": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "web": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "unity": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "amp": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "reactnative": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "flutter": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "cordova": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" + }, + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] + }, + "then": { + "properties": { + "resolutionStrategy": { + "type": "string", + "enum": ["and", "or"] + } + }, + "required": ["resolutionStrategy"] + } + } + ] + } + } + } + }, "webhookUrl": { "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(https?|ftp)://[^\\s/$.?#].[^\\s]*$" diff --git a/src/configurations/destinations/webhook/ui-config.json b/src/configurations/destinations/webhook/ui-config.json index 2f39f9eec..258cd724c 100644 --- a/src/configurations/destinations/webhook/ui-config.json +++ b/src/configurations/destinations/webhook/ui-config.json @@ -74,7 +74,98 @@ "label": "Category ID", "required": false } - ] + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": false + }, + { + "configKey": "AMP_enable-gcm" + } + ], + "featureFlagsCondition": "or" + } + }, + { + "type": "dynamicCustomForm", + "value": "consentManagement", + "label": "Consent management settings", + "footerNote": "The support for category names is deprecated. We recommend using the category IDs instead of the names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "customFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "value": "provider", + "options": [ + { + "name": "Custom", + "value": "custom" + }, + { + "name": "Ketch", + "value": "ketch" + }, + { + "name": "OneTrust", + "value": "oneTrust" + } + ], + "defaultOption": { + "name": "OneTrust", + "value": "oneTrust" + }, + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "value": "resolutionStrategy", + "options": [ + { + "name": "AND", + "value": "and" + }, + { + "name": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "dynamicCustomForm", + "value": "consents", + "label": "Enter consent category ID’s", + "customFields": [ + { + "type": "textInput", + "placeholder": "Marketing", + "value": "consent", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "required": false + } + ] + } + ], + "preRequisites": { + "featureFlags": [ + { + "configKey": "AMP_enable-gcm", + "value": true + } + ] + } } ] } diff --git a/src/configurations/sources/Adjust/db-config.json b/src/configurations/sources/Adjust/db-config.json new file mode 100644 index 000000000..211868502 --- /dev/null +++ b/src/configurations/sources/Adjust/db-config.json @@ -0,0 +1,6 @@ +{ + "name": "adjust", + "category": "webhook", + "displayName": "Adjust", + "type": "cloud" +} diff --git a/src/configurations/sources/Adjust/schema.json b/src/configurations/sources/Adjust/schema.json new file mode 100644 index 000000000..fddffa4cc --- /dev/null +++ b/src/configurations/sources/Adjust/schema.json @@ -0,0 +1,3 @@ +{ + "configSchema": null +} diff --git a/src/configurations/sources/Adjust/ui-config.json b/src/configurations/sources/Adjust/ui-config.json new file mode 100644 index 000000000..a64a05b7e --- /dev/null +++ b/src/configurations/sources/Adjust/ui-config.json @@ -0,0 +1,3 @@ +{ + "uiConfig": null +} diff --git a/src/configurations/sources/singer_facebook_marketing/db-config.json b/src/configurations/sources/singer_facebook_marketing/db-config.json index 4762364c4..52168e8a0 100644 --- a/src/configurations/sources/singer_facebook_marketing/db-config.json +++ b/src/configurations/sources/singer_facebook_marketing/db-config.json @@ -3,7 +3,7 @@ "category": "singer-protocol", "displayName": "Facebook Ads", "options": { - "image": "rudderstack/source-facebook-marketing:v8.2.13" + "image": "rudderstack/source-facebook-marketing:v8.2.17" }, "type": "cloudSource" } diff --git a/src/configurations/sources/singer_intercom/db-config.json b/src/configurations/sources/singer_intercom/db-config.json index 3b517f3eb..b2d8d2fa1 100644 --- a/src/configurations/sources/singer_intercom/db-config.json +++ b/src/configurations/sources/singer_intercom/db-config.json @@ -3,7 +3,7 @@ "category": "singer-protocol", "displayName": "Intercom", "options": { - "image": "rudderstack/source-intercom:v8.1.12" + "image": "rudderstack/source-intercom:v8.2.16" }, "type": "cloudSource" } diff --git a/src/configurations/sources/slack/db-config.json b/src/configurations/sources/slack/db-config.json new file mode 100644 index 000000000..6e07e3314 --- /dev/null +++ b/src/configurations/sources/slack/db-config.json @@ -0,0 +1,7 @@ +{ + "name": "slack", + "category": "webhook", + "displayName": "Slack", + "type": "cloud", + "options": { "isBeta": true } +} diff --git a/src/configurations/sources/slack/schema.json b/src/configurations/sources/slack/schema.json new file mode 100644 index 000000000..fddffa4cc --- /dev/null +++ b/src/configurations/sources/slack/schema.json @@ -0,0 +1,3 @@ +{ + "configSchema": null +} diff --git a/src/configurations/sources/slack/ui-config.json b/src/configurations/sources/slack/ui-config.json new file mode 100644 index 000000000..a64a05b7e --- /dev/null +++ b/src/configurations/sources/slack/ui-config.json @@ -0,0 +1,3 @@ +{ + "uiConfig": null +} diff --git a/test/data/validation/destinations/appcues.json b/test/data/validation/destinations/appcues.json new file mode 100644 index 000000000..0cf1a3a31 --- /dev/null +++ b/test/data/validation/destinations/appcues.json @@ -0,0 +1,100 @@ +[ + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "apiKey": "QyWIGHjXXXX2L4ePAPiXCA", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "apiKey": "QyWIGHjXXXX2L4ePAPiXCA", + "consentManagement": { + "android": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "apiKey": "QyWIGHjXXXX2L4ePAPiXCA", + "consentManagement": { + "android": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0 must have required property 'resolutionStrategy'", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "apiKey": "QyWIGHjXXXX2L4ePAPiXCA", + "consentManagement": { + "android": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "apiKey": "QyWIGHjXXXX2L4ePAPiXCA", + "consentManagement": { + "android": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.android.0.provider must be equal to one of the allowed values"] + } +] diff --git a/test/data/validation/destinations/bingads.json b/test/data/validation/destinations/bingads.json new file mode 100644 index 000000000..32a3ad28c --- /dev/null +++ b/test/data/validation/destinations/bingads.json @@ -0,0 +1,100 @@ +[ + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "tagID": "test-host", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "tagID": "test-host", + "consentManagement": { + "web": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.web.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.web.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "tagID": "test-host", + "consentManagement": { + "web": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.web.0 must have required property 'resolutionStrategy'", + "consentManagement.web.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "tagID": "test-host", + "consentManagement": { + "web": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "tagID": "test-host", + "consentManagement": { + "web": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.web.0.provider must be equal to one of the allowed values"] + } +] diff --git a/test/data/validation/destinations/bingads_offline_conversions.json b/test/data/validation/destinations/bingads_offline_conversions.json new file mode 100644 index 000000000..db31ac3da --- /dev/null +++ b/test/data/validation/destinations/bingads_offline_conversions.json @@ -0,0 +1,57 @@ +[ + { + "config": { + "customerAccountId": "434342324", + "customerId": "447477473", + "oneTrustCookieCategories": [ + { + "oneTrustCookieCategory": "Marketing" + } + ] + }, + "result": true + }, + { + "config": { + "customerAccountId": "", + "customerId": "447477473", + "oneTrustCookieCategories": [ + { + "oneTrustCookieCategory": "Marketing" + } + ] + }, + "result": false, + "err": [ + "customerAccountId must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^[0-9]+$\"" + ] + }, + { + "config": { + "customerAccountId": "434342324", + "customerId": "", + "oneTrustCookieCategories": [ + { + "oneTrustCookieCategory": "Marketing" + } + ] + }, + "result": false, + "err": ["customerId must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^[0-9]+$\""] + }, + { + "config": { + "customerAccountId": "434342324", + "customerId": "447477473", + "oneTrustCookieCategories": { + "web": [ + { + "oneTrustCookieCategory": "Marketing" + } + ] + } + }, + "result": false, + "err": ["oneTrustCookieCategories must be array"] + } +] diff --git a/test/data/validation/destinations/bqstream.json b/test/data/validation/destinations/bqstream.json new file mode 100644 index 000000000..6243afa6b --- /dev/null +++ b/test/data/validation/destinations/bqstream.json @@ -0,0 +1,100 @@ +[ + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "datasetId": "test-bucket", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "datasetId": "test-bucket", + "consentManagement": { + "android": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "datasetId": "test-bucket", + "consentManagement": { + "android": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0 must have required property 'resolutionStrategy'", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "datasetId": "test-bucket", + "consentManagement": { + "android": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "datasetId": "test-bucket", + "consentManagement": { + "android": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.android.0.provider must be equal to one of the allowed values"] + } +] diff --git a/test/data/validation/destinations/deltalake.json b/test/data/validation/destinations/deltalake.json index 4408290f3..209b4f875 100644 --- a/test/data/validation/destinations/deltalake.json +++ b/test/data/validation/destinations/deltalake.json @@ -373,5 +373,158 @@ "useRudderStorage": true }, "result": true + }, + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "host": "test-host", + "path": "test-path", + "token": "test-token", + "port": "0000", + "bucketProvider": "S3", + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "accessKeyID": "test-access-key-id", + "accessKey": "test-access-key", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "host": "test-host", + "path": "test-path", + "token": "test-token", + "port": "0000", + "bucketProvider": "S3", + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "accessKeyID": "test-access-key-id", + "accessKey": "test-access-key", + "consentManagement": { + "android": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "host": "test-host", + "path": "test-path", + "token": "test-token", + "port": "0000", + "bucketProvider": "S3", + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "accessKeyID": "test-access-key-id", + "accessKey": "test-access-key", + "consentManagement": { + "android": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0 must have required property 'resolutionStrategy'", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "host": "test-host", + "path": "test-path", + "token": "test-token", + "port": "0000", + "bucketProvider": "S3", + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "accessKeyID": "test-access-key-id", + "accessKey": "test-access-key", + "consentManagement": { + "android": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "host": "test-host", + "path": "test-path", + "token": "test-token", + "port": "0000", + "bucketProvider": "S3", + "syncFrequency": "30", + "enableSSE": false, + "useRudderStorage": false, + "useSTSTokens": false, + "bucketName": "test-bucket", + "accessKeyID": "test-access-key-id", + "accessKey": "test-access-key", + "consentManagement": { + "android": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.android.0.provider must be equal to one of the allowed values"] } ] diff --git a/test/data/validation/destinations/fb_custom_audience.json b/test/data/validation/destinations/fb_custom_audience.json new file mode 100644 index 000000000..053fcbfed --- /dev/null +++ b/test/data/validation/destinations/fb_custom_audience.json @@ -0,0 +1,174 @@ +[ + { + "config": { + "accessToken": "ABC", + "userSchema": [ + "EMAIL", + "DOBM", + "DOBD", + "DOBY", + "PHONE", + "GEN", + "FI", + "MADID", + "ZIP", + "ST", + "COUNTRY" + ], + "isHashRequired": false, + "disableFormat": false, + "audienceId": { "cloud": "aud1" }, + "isRaw": true, + "type": "UNKNOWN", + "subType": "ANYTHING", + "maxUserCount": "50" + }, + "result": true + }, + { + "config": { + "accessToken": "ABC", + "userSchema": [ + "EMAIL", + "DOBM", + "DOBD", + "DOBY", + "PHONE", + "GEN", + "FI", + "MADID", + "ZIP", + "ST", + "COUNTRY", + "RANDOM" + ], + "isHashRequired": false, + "disableFormat": false, + "audienceId": "aud1", + "isRaw": true, + "type": "UNKNOWN", + "subType": "ANYTHING", + "maxUserCount": "50" + }, + "result": false, + "err": ["audienceId must be object", "userSchema.11 must be equal to one of the allowed values"] + }, + { + "config": { + "accessToken": "ABC", + "userSchema": [ + "EMAIL", + "DOBM", + "DOBD", + "DOBY", + "PHONE", + "GEN", + "FI", + "MADID", + "ZIP", + "ST", + "COUNTRY" + ], + "isHashRequired": "false", + "disableFormat": "false", + "audienceId": { + "cloud": "aud1" + }, + "isRaw": "true", + "type": "UNKNOWN", + "subType": "ANYTHING", + "maxUserCount": "50" + }, + "result": false, + "err": [ + "isHashRequired must be boolean", + "isRaw must be boolean", + "disableFormat must be boolean" + ] + }, + { + "config": { + "accessToken": "ABC", + "userSchema": [ + "EMAIL", + "DOBM", + "DOBD", + "DOBY", + "PHONE", + "GEN", + "FI", + "MADID", + "ZIP", + "ST", + "COUNTRY" + ], + "isHashRequired": false, + "disableFormat": false, + "audienceId": 1234, + "isRaw": true, + "type": "UNKNOWN", + "subType": "ANYTHING", + "maxUserCount": "50" + }, + "result": false, + "err": ["audienceId must be object"] + }, + { + "config": { + "accessToken": "ABC", + "appSecret": "dummySecret", + "userSchema": [ + "EMAIL", + "DOBM", + "DOBD", + "DOBY", + "PHONE", + "GEN", + "FI", + "MADID", + "ZIP", + "ST", + "COUNTRY" + ], + "isHashRequired": false, + "disableFormat": false, + "audienceId": { "cloud": "aud1" }, + "isRaw": true, + "type": "UNKNOWN", + "subType": "ANYTHING", + "maxUserCount": "50" + }, + "result": true + }, + { + "config": { + "accessToken": "", + "appSecret": "dummySecret", + "userSchema": [ + "EMAIL", + "DOBM", + "DOBD", + "DOBY", + "PHONE", + "GEN", + "FI", + "MADID", + "ZIP", + "ST", + "COUNTRY" + ], + "isHashRequired": false, + "disableFormat": false, + "audienceId": "aud1", + "isRaw": true, + "type": "UNKNOWN", + "subType": "ANYTHING", + "maxUserCount": "50" + }, + "result": false, + "err": [ + "accessToken must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,500})$\"", + "audienceId must be object" + ] + } +] diff --git a/test/data/validation/destinations/freshsales.json b/test/data/validation/destinations/freshsales.json index 6bece2cec..99a4c4f24 100644 --- a/test/data/validation/destinations/freshsales.json +++ b/test/data/validation/destinations/freshsales.json @@ -35,5 +35,108 @@ }, "result": false, "err": ["domain must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$\""] + }, + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "apiKey": "adhs123-adhs123-adhs3", + "domain": "mytest-1234", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "apiKey": "adhs123-adhs123-adhs3", + "domain": "mytest-1234", + "consentManagement": { + "android": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "apiKey": "adhs123-adhs123-adhs3", + "domain": "mytest-1234", + "consentManagement": { + "android": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0 must have required property 'resolutionStrategy'", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "apiKey": "adhs123-adhs123-adhs3", + "domain": "mytest-1234", + "consentManagement": { + "android": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "apiKey": "adhs123-adhs123-adhs3", + "domain": "mytest-1234", + "consentManagement": { + "android": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.android.0.provider must be equal to one of the allowed values"] } ] diff --git a/test/data/validation/destinations/googleads.json b/test/data/validation/destinations/googleads.json index bb4102d60..204a0d6ac 100644 --- a/test/data/validation/destinations/googleads.json +++ b/test/data/validation/destinations/googleads.json @@ -157,6 +157,7 @@ { "config": { "conversionID": "AW-12321", + "allowIdentify": true, "eventFilteringOption": "whitelistedEvents", "defaultPageConversion": "poiiopqwewqwwqewq", "sendPageView": { @@ -200,5 +201,103 @@ }, "result": false, "err": ["sendPageView must be boolean"] + }, + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "conversionID": "AW-12321", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "conversionID": "AW-12321", + "consentManagement": { + "web": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.web.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.web.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "conversionID": "AW-12321", + "consentManagement": { + "web": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.web.0 must have required property 'resolutionStrategy'", + "consentManagement.web.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "conversionID": "AW-12321", + "consentManagement": { + "web": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "conversionID": "AW-12321", + "consentManagement": { + "web": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.web.0.provider must be equal to one of the allowed values"] } ] diff --git a/test/data/validation/destinations/heap.json b/test/data/validation/destinations/heap.json index 74ab2c581..e0eeda0b6 100644 --- a/test/data/validation/destinations/heap.json +++ b/test/data/validation/destinations/heap.json @@ -44,5 +44,103 @@ ] }, "result": true + }, + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "appId": "QyWIGHjXXXX2L4ePAPiXCA", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "appId": "QyWIGHjXXXX2L4ePAPiXCA", + "consentManagement": { + "android": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "appId": "QyWIGHjXXXX2L4ePAPiXCA", + "consentManagement": { + "android": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0 must have required property 'resolutionStrategy'", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "appId": "QyWIGHjXXXX2L4ePAPiXCA", + "consentManagement": { + "android": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "appId": "QyWIGHjXXXX2L4ePAPiXCA", + "consentManagement": { + "android": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.android.0.provider must be equal to one of the allowed values"] } ] diff --git a/test/data/validation/destinations/impact.json b/test/data/validation/destinations/impact.json index dca52729c..44b1383e3 100644 --- a/test/data/validation/destinations/impact.json +++ b/test/data/validation/destinations/impact.json @@ -404,5 +404,120 @@ }, "result": false, "err": ["enableScreenEvents must be boolean"] + }, + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "accountSID": "dfsgertrtfXXXXfc34rfwf", + "apiKey": "fghsdfXXXXcergfvfdfsag", + "campaignId": "23224", + "impactAppId": "2323", + "eventTypeId": "56446", + "enableEmailHashing": true, + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "accountSID": "dfsgertrtfXXXXfc34rfwf", + "apiKey": "fghsdfXXXXcergfvfdfsag", + "campaignId": "23224", + "impactAppId": "2323", + "consentManagement": { + "android": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "accountSID": "dfsgertrtfXXXXfc34rfwf", + "apiKey": "fghsdfXXXXcergfvfdfsag", + "campaignId": "23224", + "impactAppId": "2323", + "consentManagement": { + "android": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0 must have required property 'resolutionStrategy'", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "accountSID": "dfsgertrtfXXXXfc34rfwf", + "apiKey": "fghsdfXXXXcergfvfdfsag", + "campaignId": "23224", + "impactAppId": "2323", + "consentManagement": { + "android": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "accountSID": "dfsgertrtfXXXXfc34rfwf", + "apiKey": "fghsdfXXXXcergfvfdfsag", + "campaignId": "23224", + "impactAppId": "2323", + "consentManagement": { + "android": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.android.0.provider must be equal to one of the allowed values"] } ] diff --git a/test/data/validation/destinations/klaviyo_bulk_upload.json b/test/data/validation/destinations/klaviyo_bulk_upload.json new file mode 100644 index 000000000..c9af94cf2 --- /dev/null +++ b/test/data/validation/destinations/klaviyo_bulk_upload.json @@ -0,0 +1,25 @@ +[ + { + "config": { + "oneTrustCookieCategories": [ + { + "oneTrustCookieCategory": "Cookie1" + } + ] + }, + "result": false, + "err": [" must have required property 'privateApiKey'"] + }, + { + "config": { + "privateApiKey": "WfO9dsffsf1", + "listId": "123456", + "oneTrustCookieCategories": [ + { + "oneTrustCookieCategory": "" + } + ] + }, + "result": true + } +] diff --git a/test/data/validation/destinations/koddi.json b/test/data/validation/destinations/koddi.json new file mode 100644 index 000000000..d739abf46 --- /dev/null +++ b/test/data/validation/destinations/koddi.json @@ -0,0 +1,29 @@ +[ + { + "config": { + "apiBaseUrl": "https://dummy-org.koddi.io/event-collection/beacon", + "clientName": "dummyClient", + "testVersionOverride": false, + "overrides": false + }, + "result": true + }, + { + "config": { + "clientName": "dummyClient", + "testVersionOverride": false, + "overrides": false + }, + "result": false, + "err": [" must have required property 'apiBaseUrl'"] + }, + { + "config": { + "apiBaseUrl": "https://dummy-org.koddi.io/event-collection/beacon", + "testVersionOverride": false, + "overrides": false + }, + "result": false, + "err": [" must have required property 'clientName'"] + } +] diff --git a/test/data/validation/destinations/matomo.json b/test/data/validation/destinations/matomo.json index 8f929ecfa..b6bd1ccc9 100644 --- a/test/data/validation/destinations/matomo.json +++ b/test/data/validation/destinations/matomo.json @@ -265,5 +265,173 @@ "disableBrowserFeatureDetection": false }, "result": true + }, + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "siteId": "34b", + "matomoVersion": "cloud", + "serverUrl": "com.test.fw.stage", + "eventsMapToGoalId": [], + "eventsToStandard": [], + "trackAllContentImpressions": true, + "trackVisibleContentImpressions": false, + "logAllContentBlocksOnPage": false, + "enableHeartBeatTimer": false, + "enableLinkTracking": false, + "disablePerformanceTracking": false, + "enableCrossDomainLinking": false, + "setCrossDomainLinkingTimeout": false, + "getCrossDomainLinkingUrlParameter": false, + "disableBrowserFeatureDetection": false, + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "siteId": "34b", + "matomoVersion": "cloud", + "serverUrl": "com.test.fw.stage", + "eventsMapToGoalId": [], + "eventsToStandard": [], + "trackAllContentImpressions": true, + "trackVisibleContentImpressions": false, + "logAllContentBlocksOnPage": false, + "enableHeartBeatTimer": false, + "enableLinkTracking": false, + "disablePerformanceTracking": false, + "enableCrossDomainLinking": false, + "setCrossDomainLinkingTimeout": false, + "getCrossDomainLinkingUrlParameter": false, + "disableBrowserFeatureDetection": false, + "consentManagement": { + "web": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.web.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.web.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "siteId": "34b", + "matomoVersion": "cloud", + "serverUrl": "com.test.fw.stage", + "eventsMapToGoalId": [], + "eventsToStandard": [], + "trackAllContentImpressions": true, + "trackVisibleContentImpressions": false, + "logAllContentBlocksOnPage": false, + "enableHeartBeatTimer": false, + "enableLinkTracking": false, + "disablePerformanceTracking": false, + "enableCrossDomainLinking": false, + "setCrossDomainLinkingTimeout": false, + "getCrossDomainLinkingUrlParameter": false, + "disableBrowserFeatureDetection": false, + "consentManagement": { + "web": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.web.0 must have required property 'resolutionStrategy'", + "consentManagement.web.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "siteId": "34b", + "matomoVersion": "cloud", + "serverUrl": "com.test.fw.stage", + "eventsMapToGoalId": [], + "eventsToStandard": [], + "trackAllContentImpressions": true, + "trackVisibleContentImpressions": false, + "logAllContentBlocksOnPage": false, + "enableHeartBeatTimer": false, + "enableLinkTracking": false, + "disablePerformanceTracking": false, + "enableCrossDomainLinking": false, + "setCrossDomainLinkingTimeout": false, + "getCrossDomainLinkingUrlParameter": false, + "disableBrowserFeatureDetection": false, + "consentManagement": { + "web": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "siteId": "34b", + "matomoVersion": "cloud", + "serverUrl": "com.test.fw.stage", + "eventsMapToGoalId": [], + "eventsToStandard": [], + "trackAllContentImpressions": true, + "trackVisibleContentImpressions": false, + "logAllContentBlocksOnPage": false, + "enableHeartBeatTimer": false, + "enableLinkTracking": false, + "disablePerformanceTracking": false, + "enableCrossDomainLinking": false, + "setCrossDomainLinkingTimeout": false, + "getCrossDomainLinkingUrlParameter": false, + "disableBrowserFeatureDetection": false, + "consentManagement": { + "web": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.web.0.provider must be equal to one of the allowed values"] } ] diff --git a/test/data/validation/destinations/quora_pixel.json b/test/data/validation/destinations/quora_pixel.json index bf88221f7..0bebdeeea 100644 --- a/test/data/validation/destinations/quora_pixel.json +++ b/test/data/validation/destinations/quora_pixel.json @@ -146,5 +146,103 @@ }, "result": false, "err": [" must have required property 'pixelId'"] + }, + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "pixelId": "d2bnp1ubi9x6zq1p89hXXXXx2hf5q1k3v", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "pixelId": "d2bnp1ubi9x6zq1p89hXXXXx2hf5q1k3v", + "consentManagement": { + "web": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.web.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.web.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "pixelId": "d2bnp1ubi9x6zq1p89hXXXXx2hf5q1k3v", + "consentManagement": { + "web": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.web.0 must have required property 'resolutionStrategy'", + "consentManagement.web.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "pixelId": "d2bnp1ubi9x6zq1p89hXXXXx2hf5q1k3v", + "consentManagement": { + "web": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "pixelId": "d2bnp1ubi9x6zq1p89hXXXXx2hf5q1k3v", + "consentManagement": { + "web": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.web.0.provider must be equal to one of the allowed values"] } ] diff --git a/test/data/validation/destinations/reddit_pixel.json b/test/data/validation/destinations/reddit_pixel.json new file mode 100644 index 000000000..bce5b8b82 --- /dev/null +++ b/test/data/validation/destinations/reddit_pixel.json @@ -0,0 +1,242 @@ +[ + { + "testTitle": "With valid config", + "config": { + "eventFilteringOption": "disable", + "advertiserId": "1234", + "eventMappingFromConfig": [ + { "from": "Add to cart", "to": "AddToCart" }, + { "to": "AddToWishlist", "from": "Add to Wishlist" }, + { "to": "Purchase", "from": "Purchase" }, + { "to": "Lead", "from": "Lead" }, + { "to": "ViewContent", "from": "View" }, + { "to": "Search", "from": "Search" } + ], + "whitelistedEvents": [], + "blacklistedEvents": [], + "oneTrustCookieCategories": [] + }, + "result": true + }, + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "advertiserId": "test-host", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With invalid advertiserId", + "config": { + "eventFilteringOption": "disable", + "advertiserId": "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", + "eventMappingFromConfig": [ + { "from": "Add to cart", "to": "AddToCart" }, + { "to": "AddToWishlist", "from": "Add to Wishlist" }, + { "to": "Purchase", "from": "Purchase" }, + { "to": "Lead", "from": "Lead" }, + { "to": "ViewContent", "from": "View" }, + { "to": "Search", "from": "Search" } + ], + "whitelistedEvents": [], + "blacklistedEvents": [], + "oneTrustCookieCategories": [] + }, + "result": false, + "err": [ + "advertiserId must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$\"" + ] + }, + { + "testTitle": "With invalid event name", + "config": { + "eventFilteringOption": "disable", + "advertiserId": "01234567890123456789012345678901234567890123456789", + "eventMappingFromConfig": [ + { "from": "Add to cart", "to": "AddedToCart" }, + { "to": "AddToWishlist", "from": "Add to Wishlist" }, + { "to": "Purchase", "from": "Purchase" }, + { "to": "Lead", "from": "Lead" }, + { "to": "ViewContent", "from": "View" }, + { "to": "Search", "from": "Search" }, + { "to": "SignUp", "from": "SignUp" } + ], + "connectionMode": { + "web": "device" + }, + "whitelistedEvents": [], + "blacklistedEvents": [], + "oneTrustCookieCategories": [] + }, + "result": false, + "err": ["eventMappingFromConfig.0.to must be equal to one of the allowed values"] + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "advertiserId": "test-host", + "consentManagement": { + "web": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + }, + "connectionMode": { + "web": "device" + } + }, + "result": false, + "err": [ + "consentManagement.web.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.web.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "advertiserId": "test-host", + "consentManagement": { + "web": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.web.0 must have required property 'resolutionStrategy'", + "consentManagement.web.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "advertiserId": "test-host", + "consentManagement": { + "web": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "advertiserId": "test-host", + "consentManagement": { + "web": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.web.0.provider must be equal to one of the allowed values"] + }, + { + "testTitle": "With invalid connectionMode", + "config": { + "eventFilteringOption": "disable", + "advertiserId": "01234567890123456789012345678901234567890123456789", + "whitelistedEvents": [], + "blacklistedEvents": [], + "oneTrustCookieCategories": [], + "connectionMode": { + "web": "cloud" + } + }, + "result": false, + "err": ["connectionMode.web must be equal to one of the allowed values"] + }, + { + "testTitle": "check with all possible event names", + "config": { + "advertiserId": "12345", + "eventFilteringOption": "disable", + "eventMappingFromConfig": [ + { + "from": "123123", + "to": "AddToCart" + }, + { + "to": "AddToWishlist", + "from": "1" + }, + { + "to": "Purchase", + "from": "2" + }, + { + "to": "Lead", + "from": "3" + }, + { + "to": "ViewContent", + "from": "4" + }, + { + "to": "Search", + "from": "5" + }, + { + "to": "SignUp", + "from": "6" + }, + { + "to": "AddToWishlist", + "from": "6" + } + ], + "whitelistedEvents": [], + "blacklistedEvents": [], + "useNativeSDK": { + "web": true + }, + "connectionMode": { + "web": "device" + }, + "consentManagement": { + "web": [ + { + "provider": "oneTrust", + "resolutionStrategy": "", + "consents": [] + } + ] + } + }, + "result": true + } +] diff --git a/test/data/validation/destinations/sftp.json b/test/data/validation/destinations/sftp.json index fa22691c0..8481d3fe3 100644 --- a/test/data/validation/destinations/sftp.json +++ b/test/data/validation/destinations/sftp.json @@ -7,7 +7,7 @@ "privateKey": "test-privateKey", "username": "test-username", "fileFormat": "csv", - "filePath": "directory/file.csv", + "filePath": "directory/file_{destinationID}_{jobRunID}.csv", "oneTrustCookieCategories": [ { "oneTrustCookieCategory": "" @@ -39,7 +39,8 @@ " must have required property 'privateKey'", " must match \"then\" schema", "filePath must match pattern \"\\.json$\"", - " must match \"then\" schema" + " must match \"then\" schema", + "filePath must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^.*\\{destinationID\\}.*\\{jobRunID\\}.*\\.(json|csv)$\"" ] }, { @@ -50,7 +51,7 @@ "username": "test-username", "password": "", "fileFormat": "csv", - "filePath": "directory/file.txt", + "filePath": "directory/file_{destinationID}_{jobRunID}.txt", "oneTrustCookieCategories": [ { "oneTrustCookieCategory": "" @@ -64,7 +65,7 @@ " must match \"then\" schema", "port must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(?:[1-9][0-9]{0,4}|[1-5][0-9]{4}|6[0-5]{4}|6553[0-5])$\"", "authMethod must be equal to one of the allowed values", - "filePath must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^.*\\.(json|csv)$\"" + "filePath must match pattern \"(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^.*\\{destinationID\\}.*\\{jobRunID\\}.*\\.(json|csv)$\"" ] } ] diff --git a/test/data/validation/destinations/variance.json b/test/data/validation/destinations/variance.json new file mode 100644 index 000000000..a6a5cfcc8 --- /dev/null +++ b/test/data/validation/destinations/variance.json @@ -0,0 +1,100 @@ +[ + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "webhookUrl": "https://google.com", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "webhookUrl": "https://google.com", + "consentManagement": { + "android": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "webhookUrl": "https://google.com", + "consentManagement": { + "android": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0 must have required property 'resolutionStrategy'", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "webhookUrl": "https://google.com", + "consentManagement": { + "android": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "webhookUrl": "https://google.com", + "consentManagement": { + "android": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.android.0.provider must be equal to one of the allowed values"] + } +] diff --git a/test/data/validation/destinations/vero.json b/test/data/validation/destinations/vero.json index 26180781b..67d28d385 100644 --- a/test/data/validation/destinations/vero.json +++ b/test/data/validation/destinations/vero.json @@ -91,5 +91,103 @@ }, "result": false, "err": ["apiKey must be object"] + }, + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "authToken": "wbiwefbwiefbfkbfwekj", + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "authToken": "wbiwefbwiefbfkbfwekj", + "consentManagement": { + "android": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "authToken": "wbiwefbwiefbfkbfwekj", + "consentManagement": { + "android": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0 must have required property 'resolutionStrategy'", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "authToken": "wbiwefbwiefbfkbfwekj", + "consentManagement": { + "android": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "authToken": "wbiwefbwiefbfkbfwekj", + "consentManagement": { + "android": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.android.0.provider must be equal to one of the allowed values"] } ] diff --git a/test/data/validation/destinations/webhook.json b/test/data/validation/destinations/webhook.json index 2e24cd918..4c4e3ed6c 100644 --- a/test/data/validation/destinations/webhook.json +++ b/test/data/validation/destinations/webhook.json @@ -110,5 +110,138 @@ ] }, "result": true + }, + { + "testTitle": "With valid multiple consent management providers config", + "config": { + "webhookUrl": "http://test.ec-example.example.com", + "webhookMethod": "POST", + "headers": [ + { + "from": "isSecure", + "to": "101" + } + ], + "consentManagement": { + "web": [ + { + "provider": "custom", + "consents": [ + { + "consent": "Marketing" + } + ], + "resolutionStrategy": "or" + }, + { + "provider": "oneTrust", + "consents": [ + { + "consent": "Marketing" + } + ] + }, + { + "provider": "ketch", + "consents": [] + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config and invalid resolutionStrategy value", + "config": { + "webhookUrl": "http://test.ec-example.example.com", + "webhookMethod": "POST", + "headers": [ + { + "from": "isSecure", + "to": "101" + } + ], + "consentManagement": { + "android": [ + { + "provider": "custom", + "resolutionStrategy": "nor" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0.resolutionStrategy must be equal to one of the allowed values", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management custom provider config and no resolutionStrategy value", + "config": { + "webhookUrl": "http://test.ec-example.example.com", + "webhookMethod": "POST", + "headers": [ + { + "from": "isSecure", + "to": "101" + } + ], + "consentManagement": { + "android": [ + { + "provider": "custom" + } + ] + } + }, + "result": false, + "err": [ + "consentManagement.android.0 must have required property 'resolutionStrategy'", + "consentManagement.android.0 must match \"then\" schema" + ] + }, + { + "testTitle": "With consent management OneTrust provider config and no resolutionStrategy value", + "config": { + "webhookUrl": "http://test.ec-example.example.com", + "webhookMethod": "POST", + "headers": [ + { + "from": "isSecure", + "to": "101" + } + ], + "consentManagement": { + "android": [ + { + "provider": "oneTrust" + } + ] + } + }, + "result": true + }, + { + "testTitle": "With consent management custom provider config invalid provider value", + "config": { + "webhookUrl": "http://test.ec-example.example.com", + "webhookMethod": "POST", + "headers": [ + { + "from": "isSecure", + "to": "101" + } + ], + "consentManagement": { + "android": [ + { + "provider": "dummyProvider" + } + ] + } + }, + "result": false, + "err": ["consentManagement.android.0.provider must be equal to one of the allowed values"] } ]