diff --git a/.gitignore b/.gitignore index 82cbe9ecc..7b515f143 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ git reports .eslintcache +.vscode diff --git a/CHANGELOG.md b/CHANGELOG.md index e8bac86d3..3bfb73de0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ 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.48.0](https://github.com/rudderlabs/rudder-config-schema/compare/v1.47.2...v1.48.0) (2023-09-04) + + +### Features + +* active campaign new UI ([#805](https://github.com/rudderlabs/rudder-config-schema/issues/805)) ([624d535](https://github.com/rudderlabs/rudder-config-schema/commit/624d53589e53d9674511623c0ab5f678c09504ca)) +* add eu instance support to kustomer destination ([#863](https://github.com/rudderlabs/rudder-config-schema/issues/863)) ([6c3a9df](https://github.com/rudderlabs/rudder-config-schema/commit/6c3a9df54e39a610b1e7ebf85edf51888f51b5d3)) +* adding trino config to UI ([#853](https://github.com/rudderlabs/rudder-config-schema/issues/853)) ([c74ecf2](https://github.com/rudderlabs/rudder-config-schema/commit/c74ecf20f7889f43b1ed25013b440602ca267955)) +* google ads black audeince feature ([#846](https://github.com/rudderlabs/rudder-config-schema/issues/846)) ([c294c50](https://github.com/rudderlabs/rudder-config-schema/commit/c294c50b09a924b534c5a9210e2d6621e1bc544d)) +* onboard hubspot to new UI ([#770](https://github.com/rudderlabs/rudder-config-schema/issues/770)) ([d40041a](https://github.com/rudderlabs/rudder-config-schema/commit/d40041a0b30e1e38564feaa32b6c408d496959be)) +* trino UI config - update ([#876](https://github.com/rudderlabs/rudder-config-schema/issues/876)) ([9c6d5b4](https://github.com/rudderlabs/rudder-config-schema/commit/9c6d5b4cecf1cec326a00d01457bb0a29d3a3d75)) + + +### Bug Fixes + +* ac script schema ([#882](https://github.com/rudderlabs/rudder-config-schema/issues/882)) ([3efb3c7](https://github.com/rudderlabs/rudder-config-schema/commit/3efb3c7d8475391b0e4bdccc926aa263ff88569f)) + ### [1.47.2](https://github.com/rudderlabs/rudder-config-schema/compare/v1.47.1...v1.47.2) (2023-09-01) diff --git a/package-lock.json b/package-lock.json index 6154a8971..ecc606173 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rudder-config-schema", - "version": "1.47.2", + "version": "1.48.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rudder-config-schema", - "version": "1.47.2", + "version": "1.48.0", "license": "MIT", "dependencies": { "ajv": "^8.12.0", diff --git a/package.json b/package.json index 6808ca9a5..8fa5f6519 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rudder-config-schema", - "version": "1.47.2", + "version": "1.48.0", "description": "", "main": "src/index.ts", "private": true, diff --git a/scripts/schemaGenerator.py b/scripts/schemaGenerator.py index 280809a65..998d0abf2 100644 --- a/scripts/schemaGenerator.py +++ b/scripts/schemaGenerator.py @@ -763,7 +763,7 @@ def generate_schema_properties(uiConfig, dbConfig, schemaObject, properties, nam if generateFunction: properties[field['configKey']] = generateFunction( field, dbConfig, 'configKey') - if template.get('title', "") == "Initial setup" and is_field_present_in_default_config(field, dbConfig, "configKey"): + if template.get('title', "") == "Initial setup" and is_field_present_in_default_config(field, dbConfig, "configKey") and 'preRequisites' not in field: schemaObject['required'].append( field['configKey']) diff --git a/src/configurations/destinations/active_campaign/db-config.json b/src/configurations/destinations/active_campaign/db-config.json index 21d932cc1..ae3770d18 100644 --- a/src/configurations/destinations/active_campaign/db-config.json +++ b/src/configurations/destinations/active_campaign/db-config.json @@ -6,7 +6,7 @@ "transformAtV1": "router", "saveDestinationResponse": true, "isAudienceSupported": true, - "includeKeys": ["oneTrustCookieCategories"], + "includeKeys": ["oneTrustCookieCategories", "connectionMode", "actid"], "excludeKeys": [], "supportedSourceTypes": [ "android", @@ -22,8 +22,17 @@ "shopify" ], "supportedMessageTypes": ["identify", "page", "screen", "track"], + "supportedConnectionModes": { + "web": ["cloud", "device", "hybrid"] + }, + "hybridModeCloudEventsFilter": { + "web": { + "messageType": ["track", "screen", "identify"] + } + }, "destConfig": { - "defaultConfig": ["apiUrl", "apiKey", "eventKey", "actid", "oneTrustCookieCategories"] + "defaultConfig": ["apiUrl", "apiKey", "eventKey", "actid", "oneTrustCookieCategories"], + "web": ["useNativeSDK", "connectionMode"] }, "secretKeys": ["apiKey", "eventKey", "actid"] } diff --git a/src/configurations/destinations/active_campaign/schema.json b/src/configurations/destinations/active_campaign/schema.json index bda1a3e51..8a9498f8f 100644 --- a/src/configurations/destinations/active_campaign/schema.json +++ b/src/configurations/destinations/active_campaign/schema.json @@ -8,7 +8,10 @@ "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$" }, - "apiKey": { "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|.*" }, + "apiKey": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|.*" + }, "actid": { "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" @@ -28,7 +31,20 @@ } } } + }, + "useNativeSDK": { + "type": "object", + "properties": { + "web": { "type": "boolean" } + } + }, + "connectionMode": { + "type": "object", + "properties": { + "web": { "type": "string", "enum": ["cloud", "device", "hybrid"] } + } } - } + }, + "additionalProperties": true } } diff --git a/src/configurations/destinations/active_campaign/ui-config.json b/src/configurations/destinations/active_campaign/ui-config.json index e3b2bc399..f35f2d5f7 100644 --- a/src/configurations/destinations/active_campaign/ui-config.json +++ b/src/configurations/destinations/active_campaign/ui-config.json @@ -1,70 +1,140 @@ { - "uiConfig": [ - { - "title": "Connection Settings", + "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 Url", + "configKey": "apiUrl", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", + "regexErrorMessage": "Invalid URL", + "required": true, + "placeholder": "e.g. https://accountname.api-us1.com", + "note": "Your API Access URL" + }, + { + "type": "textInput", + "label": "API Key", + "configKey": "apiKey", + "regex": ".*", + "required": true, + "placeholder": "e.g. c59e3838caa934b535c1fd342dfds23452dfcccf95c16787304e7a0c0e8051b326451bb2", + "secret": true, + "footerNote": "Your API Access Key" + } + ] + } + ] + }, + { + "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 advanced destination-specific settings here", + "icon": "settings", + "groups": [ + { + "title": "Event Settings", + "icon": "file", + "fields": [ + { + "type": "textInput", + "label": "Event Key", + "configKey": "eventKey", + "regex": "^(.{0,100})$", + "regexErrorMessage": "Invalid Event Key", + "required": false, + "placeholder": "e.g. c2a856fddc721350dec4fbbc2e5c43a7ddfaaa03", + "secret": true, + "note": "Your Event Key" + }, + { + "type": "textInput", + "label": "ActID", + "configKey": "actid", + "regex": "^(.{0,100})$", + "regexErrorMessage": "Invalid ActID", + "required": false, + "placeholder": "e.g. 276450567", + "secret": true, + "note": "Your ActId" + } + ] + } + ] + }, + { + "title": "Other settings", + "note": "Configure advanced RudderStack features here", + "icon": "otherSettings", + "groups": [ + { + "title": "OneTrust cookie consent settings", + "note": [ + "Enter your OneTrust category names if you have them configured. ", + { + "text": "Learn more ", + "link": "https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/onetrust-consent-manager/" + }, + "about RudderStack’s OneTrust Consent Manager feature." + ], + "fields": [ + { + "type": "tagInput", + "label": "Cookie category name", + "note": "Input your OneTrust category names by pressing ‘Enter’ after each entry", + "configKey": "oneTrustCookieCategories", + "tagKey": "oneTrustCookieCategory", + "placeholder": "e.g: Credit card visit", + "default": [ + { + "oneTrustCookieCategory": "" + } + ] + } + ] + } + ] + } + ] + } + ], + "sdkTemplate": { + "title": "SDK settings", + "note": "not visible in the ui", "fields": [ - { - "type": "textInput", - "label": "API Url", - "value": "apiUrl", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|(?!.*\\.ngrok\\.io)^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", - "regexErrorMessage": "Invalid URL", - "required": true, - "placeholder": "e.g. https://accountname.api-us1.com", - "footerNote": "Your API Access URL" - }, - { - "type": "textInput", - "label": "API Key", - "value": "apiKey", - "regex": ".*", - "required": true, - "placeholder": "e.g. c59e3838caa934b535c1fd342dfds23452dfcccf95c16787304e7a0c0e8051b326451bb2", - "secret": true, - "footerNote": "Your API Access Key" - }, - { - "type": "textInput", - "label": "Event Key", - "value": "eventKey", - "regex": "^(.{0,100})$", - "regexErrorMessage": "Invalid Event Key", - "required": false, - "placeholder": "e.g. c2a856fddc721350dec4fbbc2e5c43a7ddfaaa03", - "secret": true, - "footerNote": "Your Event Key" - }, - { - "type": "textInput", - "label": "ActID", - "value": "actid", - "regex": "^(.{0,100})$", - "regexErrorMessage": "Invalid ActID", - "required": false, - "placeholder": "e.g. 276450567", - "secret": true, - "footerNote": "Your ActId" - } - ] - }, - { - "title": "Consent Settings", - "fields": [ - { - "type": "dynamicCustomForm", - "value": "oneTrustCookieCategories", - "label": "OneTrust Cookie Categories", - "customFields": [ - { - "type": "textInput", - "placeholder": "Marketing", - "value": "oneTrustCookieCategory", - "label": "Category Name/ID", - "required": false - } - ] - } ] } - ] + } } + diff --git a/src/configurations/destinations/google_adwords_remarketing_lists/db-config.json b/src/configurations/destinations/google_adwords_remarketing_lists/db-config.json index b3757c84d..e7938b3f4 100644 --- a/src/configurations/destinations/google_adwords_remarketing_lists/db-config.json +++ b/src/configurations/destinations/google_adwords_remarketing_lists/db-config.json @@ -19,6 +19,7 @@ "supportsVisualMapper": true, "supportedMessageTypes": ["audiencelist"], "isAudienceSupported": true, + "supportsBlankAudienceCreation": true, "destConfig": { "defaultConfig": [ "rudderAccountId", @@ -30,6 +31,9 @@ "isHashRequired", "typeOfList", "oneTrustCookieCategories" + ], + "cloud": [ + "audienceId" ] }, "secretKeys": [] diff --git a/src/configurations/destinations/google_adwords_remarketing_lists/ui-config.json b/src/configurations/destinations/google_adwords_remarketing_lists/ui-config.json index 2af9fb01f..d61573dbd 100644 --- a/src/configurations/destinations/google_adwords_remarketing_lists/ui-config.json +++ b/src/configurations/destinations/google_adwords_remarketing_lists/ui-config.json @@ -6,7 +6,7 @@ { "type": "textInput", "label": "List ID", - "value": "listId", + "value": "audienceId", "regex": "^(.{1,100})$", "regexErrorMessage": "Invalid Google remarketing list ID", "required": true, diff --git a/src/configurations/destinations/hs/db-config.json b/src/configurations/destinations/hs/db-config.json index c80bb58fa..931d0a269 100644 --- a/src/configurations/destinations/hs/db-config.json +++ b/src/configurations/destinations/hs/db-config.json @@ -28,6 +28,9 @@ "cordova", "shopify" ], + "supportedConnectionModes": { + "web": ["cloud", "device"] + }, "supportedMessageTypes": ["identify", "track"], "destConfig": { "defaultConfig": [ @@ -47,7 +50,7 @@ "doAssociation", "oneTrustCookieCategories" ], - "web": ["useNativeSDK"] + "web": ["useNativeSDK", "connectionMode"] }, "secretKeys": [] } diff --git a/src/configurations/destinations/hs/schema.json b/src/configurations/destinations/hs/schema.json index 0a6a56528..5953a44bc 100644 --- a/src/configurations/destinations/hs/schema.json +++ b/src/configurations/destinations/hs/schema.json @@ -1,7 +1,7 @@ { "configSchema": { "$schema": "http://json-schema.org/draft-07/schema#", - "required": [], + "required": ["authorizationType", "apiVersion"], "type": "object", "properties": { "hubID": { diff --git a/src/configurations/destinations/hs/ui-config.json b/src/configurations/destinations/hs/ui-config.json index d02ab3e55..7ba947807 100644 --- a/src/configurations/destinations/hs/ui-config.json +++ b/src/configurations/destinations/hs/ui-config.json @@ -1,233 +1,344 @@ { - "uiConfig": [ - { - "title": "Connection Settings", - "fields": [ - { - "type": "textInput", - "label": "Hub ID", - "value": "hubID", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", - "regexErrorMessage": "Invalid Hub ID", - "required": false, - "placeholder": "e.g: 748991", - "footerNote": "Your Hub ID (under account name)" - }, - { - "type": "singleSelect", - "label": "Authorization Type", - "value": "authorizationType", - "options": [ - { - "name": "API Key (deprecating soon)", - "value": "legacyApiKey" - }, - { - "name": "Private Apps", - "value": "newPrivateAppApi" - } - ], - "defaultOption": { - "value": "legacyApiKey" - } - }, - { - "type": "textInput", - "preRequisiteField": { - "name": "authorizationType", - "selectedValue": "legacyApiKey" - }, - "label": "API Key", - "value": "apiKey", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$", - "regexErrorMessage": "Invalid API Key", - "required": true, - "placeholder": "e.g: 05afa518-132c-40db-830a-de0f688902f7", - "footerNote": "Your API Key (Settings -> Integrations -> API Key)" - }, - { - "type": "textInput", - "preRequisiteField": { - "name": "authorizationType", - "selectedValue": "newPrivateAppApi" + "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": "singleSelect", + "label": "Authorization Type", + "configKey": "authorizationType", + "options": [ + { + "label": "API Key (deprecating soon)", + "value": "legacyApiKey" + }, + { + "label": "Private Apps", + "value": "newPrivateAppApi" + } + ], + "default": "legacyApiKey" + }, + { + "type": "textInput", + "label": "API Key", + "configKey": "apiKey", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$", + "regexErrorMessage": "Invalid API Key", + "placeholder": "e.g: 05afa518-132c-40db-830a-de0f688902f7", + "note": "Your API Key (Settings -> Integrations -> API Key)", + "preRequisites": { + "fields": [ + { + "configKey": "authorizationType", + "value": "legacyApiKey" + } + ] + } + }, + { + "type": "textInput", + "label": "Access Token", + "configKey": "accessToken", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$", + "regexErrorMessage": "Invalid Access Token", + "placeholder": "e.g: pat-eu1-kjg875ya-9de4-98uu-8171-62875ht847r9", + "note": "Your private app access token", + "preRequisites": { + "fields": [ + { + "configKey": "authorizationType", + "value": "newPrivateAppApi" + } + ] + } + }, + { + "type": "singleSelect", + "label": "API Version", + "configKey": "apiVersion", + "options": [ + { + "label": "Legacy API (v1)", + "value": "legacyApi" + }, + { + "label": "New API (v3)", + "value": "newApi" + } + ], + "default": "legacyApi" + }, + { + "type": "textInput", + "label": "Hubspot property name to be used as lookup field", + "configKey": "lookupField", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$", + "regexErrorMessage": "Invalid Property Name", + "placeholder": "e.g: lookupField", + "note": "Provide unique Hubspot property field, which could be used for contact lookup. The provided lookup field key will be retrieved from traits. eg: traits: { lookupField: 'alex@example.com' }", + "preRequisites": { + "fields": [ + { + "configKey": "apiVersion", + "value": "newApi" + } + ] + } + } + ] + } + ] }, - "label": "Access Token", - "value": "accessToken", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$", - "regexErrorMessage": "Invalid Access Token", - "required": true, - "placeholder": "e.g: pat-eu1-kjg875ya-9de4-98uu-8171-62875ht847r9", - "footerNote": "Your private app access token" - }, - { - "type": "singleSelect", - "label": "API Version", - "value": "apiVersion", - "options": [ - { - "name": "Legacy API (v1)", - "value": "legacyApi" - }, - { - "name": "New API (v3)", - "value": "newApi" - } - ], - "defaultOption": { - "value": "legacyApi" + { + "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": [] + } + ] } - }, - { - "type": "textInput", - "preRequisiteField": { - "name": "apiVersion", - "selectedValue": "newApi" + ] + }, + { + "title": "Configuration settings", + "note": "Manage the settings for your destination", + "sections": [ + { + "groups": [ + { + "title": "Destination specific settings", + "note": "Set destination specific field values", + "icon": "settings", + "fields": [ + { + "type": "textInput", + "label": "Hub ID", + "configKey": "hubID", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "regexErrorMessage": "Invalid Hub ID", + "placeholder": "e.g: 748991", + "note": "Your Hub ID (under account name)" + }, + { + "type": "checkbox", + "label": "Create associations between object records", + "configKey": "doAssociation", + "default": false, + "preRequisites": { + "fields": [ + { + "configKey": "apiVersion", + "value": "newApi" + } + ] + } + } + ] + } + ] }, - "label": "Hubspot property name to be used as lookup field", - "value": "lookupField", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$", - "regexErrorMessage": "Invalid Property Name", - "required": true, - "placeholder": "e.g: lookupField", - "footerNote": "Provide unique Hubspot property field, which could be used for contact lookup. The provided lookup field key will be retrieved from traits. eg: traits: { lookupField: 'alex@example.com' }" - }, - { - "type": "checkbox", - "label": "Create associations between object records", - "value": "doAssociation", - "default": false, - "preRequisiteField": { - "name": "apiVersion", - "selectedValue": "newApi" + { + "title": "Other settings", + "note": "Configure advanced RudderStack features here", + "icon": "otherSettings", + "groups": [ + { + "title": "Client-side event filtering", + "note": "Decide what events are allowed (allowlisting) and blocked (denylisting)", + "preRequisites": { + "fields": [ + { + "configKey": "connectionMode.web", + "value": "device" + } + ] + }, + "fields": [ + { + "type": "singleSelect", + "label": "Choose if you want to turn on event filtering: ", + "configKey": "eventFilteringOption", + "note": "You must select either allowlist or denylist to enable events filtering", + "options": [ + { + "label": "Disabled", + "value": "disable" + }, + { + "label": "Filter via allowlist", + "value": "whitelistedEvents" + }, + { + "label": "Filter via denylist", + "value": "blacklistedEvents" + } + ], + "default": "disable" + }, + { + "type": "tagInput", + "label": "Allowlisted events", + "note": "Input the events you want to allowlist.\nInput separate events by pressing ‘Enter’.", + "configKey": "whitelistedEvents", + "tagKey": "eventName", + "placeholder": "e.g: Anonymous page visit", + "preRequisites": { + "fields": [ + { + "configKey": "eventFilteringOption", + "value": "whitelistedEvents" + } + ] + } + }, + { + "type": "tagInput", + "label": "Denylisted events", + "note": "Input the events you want to denylist.\nInput separate events by pressing ‘Enter’.", + "configKey": "blacklistedEvents", + "tagKey": "eventName", + "placeholder": "e.g: Anonymous page visit", + "preRequisites": { + "fields": [ + { + "configKey": "eventFilteringOption", + "value": "blacklistedEvents" + } + ] + } + } + ] + }, + { + "title": "OneTrust cookie consent settings", + "note": [ + "Enter your OneTrust consent category IDs or names if you have them configured. We recommend providing category IDs over names, as the category names only work in the device connection mode. So, you can seamlessly switch between the connection modes.", + { + "text": "Learn more", + "link": "https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/onetrust-consent-manager/" + }, + " about RudderStack’s OneTrust Consent Manager feature." + ], + "fields": [ + { + "type": "tagInput", + "label": "Consent categories", + "note": "Input your OneTrust consent category IDs or names by pressing ‘Enter’ after each entry. You should prefer category IDs over names. Refer to this section's note.", + "configKey": "oneTrustCookieCategories", + "tagKey": "oneTrustCookieCategory", + "placeholder": "e.g: C0001" + } + ] + } + ] } - }, - { - "type": "dynamicCustomForm", - "label": "Map RudderStack event name to HubSpot Custom Behavioral event name", - "value": "hubspotEvents", - "preRequisiteField": { - "name": "apiVersion", - "selectedValue": "newApi" - }, - "customFields": [ - { - "type": "textInput", - "label": "RudderStack Event Name", - "value": "rsEventName", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", - "required": false, - "placeholder": "e.g Products Searched", - "footerNote": "Enter the RudderStack event name you want to map" - }, - { - "type": "textInput", - "label": "HubSpot Event Name", - "value": "hubspotEventName", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", - "required": false, - "placeholder": "e.g Search", - "footerNote": "Enter the corresponding Hubspot event name you want to map" - }, - { - "type": "dynamicForm", - "label": "Map your Event Property", - "value": "eventProperties", - "labelLeft": "RudderStack Property Name", - "labelRight": "HubSpot Property Name", - "keyLeft": "from", - "keyRight": "to", - "placeholderLeft": "e.g firstName", - "placeholderRight": "e.g first_name" - } - ] - } - ] - }, - { - "title": "Native SDK", - "fields": [ - { - "type": "checkbox", - "label": "Use device-mode to send events", - "value": "useNativeSDK", - "default": false - } - ] - }, - { - "title": "Client-side Events Filtering", - "sectionNote": "Applicable only for device-mode integrations. If enabled, it works only with either allowlisted or denylisted events", - "fields": [ - { - "type": "singleSelect", - "value": "eventFilteringOption", - "required": false, - "options": [ - { - "name": "Disable", - "value": "disable" - }, - { - "name": "Allowlist", - "value": "whitelistedEvents" - }, - { - "name": "Denylist", - "value": "blacklistedEvents" - } - ], - "defaultOption": { - "name": "Disable", - "value": "disable" + ] + }, + { + "title": "Event mapping", + "note": "Map RudderStack to Hubspot events (available only when New API(v3) is selected)", + "hideEditIcon": true, + "sections": [ + { + "groups": [ + { + "title": "Map RudderStack event name to HubSpot Custom Behavioral event name", + "fields": [ + { + "type": "redirect", + "redirectGroupKey": "customEventMapping", + "label": "Event and property mappings", + "preRequisites": { + "fields": [ + { + "configKey": "apiVersion", + "value": "newApi" + } + ] + } + } + ] + } + ] } - }, - { - "type": "dynamicCustomForm", - "value": "whitelistedEvents", - "label": "Allowlist", - "customFields": [ - { - "type": "textInput", - "value": "eventName", - "required": false, - "placeholder": "e.g: Anonymous Page Visit" - } - ] - }, - { - "type": "dynamicCustomForm", - "value": "blacklistedEvents", - "label": "Denylist", - "customFields": [ - { - "type": "textInput", - "value": "eventName", - "required": false, - "placeholder": "e.g: Credit Card Added" - } - ] - } - ] + ] + } + ], + "sdkTemplate": { + "title": "SDK settings", + "fields": [] }, - { - "title": "Consent Settings", - "fields": [ - { - "type": "dynamicCustomForm", - "value": "oneTrustCookieCategories", - "label": "OneTrust Cookie Categories", - "customFields": [ - { - "type": "textInput", - "placeholder": "Marketing", - "value": "oneTrustCookieCategory", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", - "label": "Category Name/ID", - "required": false - } - ] - } - ] + "redirectGroups": { + "customEventMapping": { + "fields": [ + { + "type": "dynamicCustomForm", + "label": "Map RudderStack event name to HubSpot Custom Behavioral event name", + "configKey": "hubspotEvents", + "rowFields": [ + { + "type": "mappingRow", + "columns": [ + { + "type": "textInput", + "configKey": "rsEventName", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$", + "regexErrorMessage": "Event name is required", + "label": "RudderStack Event Name", + "placeholder": "e.g Products Searched" + }, + { + "type": "textInput", + "configKey": "hubspotEventName", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,100})$", + "regexErrorMessage": "Event name is required", + "label": "HubSpot Event Name", + "placeholder": "e.g Search" + } + ] + }, + { + "type": "mapping", + "label": "Map your Event Property", + "configKey": "eventProperties", + "default": [], + "columns": [ + { + "type": "textInput", + "key": "from", + "label": "RudderStack Property Name", + "placeholder": "e.g firstName" + }, + { + "type": "textInput", + "key": "to", + "label": "HubSpot Property Name", + "placeholder": "e.g first_name" + } + ] + } + ] + } + ] + } } - ] + } } diff --git a/src/configurations/destinations/kustomer/db-config.json b/src/configurations/destinations/kustomer/db-config.json index b623deb98..aafdeff75 100644 --- a/src/configurations/destinations/kustomer/db-config.json +++ b/src/configurations/destinations/kustomer/db-config.json @@ -24,6 +24,7 @@ "destConfig": { "defaultConfig": [ "apiKey", + "baseEndpoint", "advancedTransform", "setIdentityEmail", "disableEmailAsTrackingProperty", diff --git a/src/configurations/destinations/kustomer/ui-config.json b/src/configurations/destinations/kustomer/ui-config.json index fb693f7f3..93ed0b71d 100644 --- a/src/configurations/destinations/kustomer/ui-config.json +++ b/src/configurations/destinations/kustomer/ui-config.json @@ -12,6 +12,24 @@ "placeholder": "e.g. c59e3838caa934b535c1fd342dfds23452dfcccf95c16787304e7a0c0e8051b326451bb2", "secret": true, "footerNote": "API key required to authenticate requests." + }, + { + "type": "singleSelect", + "label": "Instance location", + "value": "baseEndpoint", + "options": [ + { + "label": "US instance", + "value": "https://api.kustomerapp.com" + }, + { + "label": "EU instance", + "value": "https://api.prod2.kustomerapp.com" + } + ], + "default": "https://api.kustomerapp.com", + "required": true, + "footerNote": "Production point of deployment for your organization instance" } ] }, diff --git a/src/configurations/destinations/marketo_bulk_upload/db-config.json b/src/configurations/destinations/marketo_bulk_upload/db-config.json index 413807f10..b477d298d 100644 --- a/src/configurations/destinations/marketo_bulk_upload/db-config.json +++ b/src/configurations/destinations/marketo_bulk_upload/db-config.json @@ -34,5 +34,7 @@ }, "secretKeys": ["clientId", "clientSecret"] }, - "options": { "hidden": true } + "options": { + "isBeta": true + } } diff --git a/src/configurations/destinations/optimizely_fullstack/schema.json b/src/configurations/destinations/optimizely_fullstack/schema.json index 6b91579e7..b81f3156b 100644 --- a/src/configurations/destinations/optimizely_fullstack/schema.json +++ b/src/configurations/destinations/optimizely_fullstack/schema.json @@ -20,8 +20,12 @@ "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^([0-9]{0,100})$" }, - "trackCategorizedPages": { "type": "boolean" }, - "trackNamedPages": { "type": "boolean" }, + "trackCategorizedPages": { + "type": "boolean" + }, + "trackNamedPages": { + "type": "boolean" + }, "pageMapping": { "type": "array", "items": { @@ -70,7 +74,9 @@ } } }, - "trackKnownUsers": { "type": "boolean" }, + "trackKnownUsers": { + "type": "boolean" + }, "listen": { "type": "object", "properties": { @@ -93,8 +99,12 @@ } } }, - "anonymizeIp": { "type": "boolean" }, - "enrichDecisions": { "type": "boolean" }, + "anonymizeIp": { + "type": "boolean" + }, + "enrichDecisions": { + "type": "boolean" + }, "projectId": { "type": "string", "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^([0-9]{0,100})$" @@ -166,24 +176,6 @@ } } } - }, - "if": { - "properties": { - "secureEnvironment": { - "type": "boolean", - "const": true - } - }, - "required": ["secureEnvironment"] - }, - "then": { - "properties": { - "dataFileAccessToken": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,200})$" - } - }, - "required": ["dataFileAccessToken"] } } } diff --git a/src/configurations/destinations/optimizely_fullstack/ui-config.json b/src/configurations/destinations/optimizely_fullstack/ui-config.json index ea26ba828..b5e8adc88 100644 --- a/src/configurations/destinations/optimizely_fullstack/ui-config.json +++ b/src/configurations/destinations/optimizely_fullstack/ui-config.json @@ -220,49 +220,6 @@ } ] } - }, - { - "type": "checkbox", - "label": "Secure Environment", - "configKey": "secureEnvironment", - "default": false, - "note": [ - "Enable this if you are running experiment in Secure Environment. ", - { - "text": "Learn more here", - "link": "https://docs.developers.optimizely.com/feature-experimentation/docs/manage-environments#secure-environments" - } - ], - "preRequisites": { - "fields": [ - { - "configKey": "connectionModes.cloud", - "value": true - } - ] - } - }, - { - "type": "textInput", - "label": "Datafile Access Token", - "configKey": "dataFileAccessToken", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,200})$", - "regexErrorMessage": "Invalid Access Token", - "placeholder": "e.g. Ea9N54x3k8mT1qSv7Mf2zBcRn6IyOjGwXuLdH5pVhA0KlFgCtYsP3iU4WxQbZoD7vN2jX1kS8lR6wE", - "note": "Access token of your secure environment. You can find it in Settings -> Environments", - "preRequisites": { - "fields": [ - { - "configKey": "connectionModes.cloud", - "value": true - }, - { - "configKey": "secureEnvironment", - "value": true - } - ], - "condition": "and" - } } ] } diff --git a/src/configurations/sources/singer_zendesk_support/db-config.json b/src/configurations/sources/singer_zendesk_support/db-config.json index 6b39196c7..23dfda424 100644 --- a/src/configurations/sources/singer_zendesk_support/db-config.json +++ b/src/configurations/sources/singer_zendesk_support/db-config.json @@ -3,7 +3,7 @@ "category": "singer-protocol", "displayName": "Zendesk Support", "options": { - "image": "rudderstack/source-zendesk-support:v8.1.0-alpha.d99276fe70" + "image": "rudderstack/source-zendesk-support:v8.1.4-alpha.dd4e92c7d8" }, "type": "cloudSource" } diff --git a/src/configurations/sources/trino/db-config.json b/src/configurations/sources/trino/db-config.json new file mode 100644 index 000000000..86c5cf974 --- /dev/null +++ b/src/configurations/sources/trino/db-config.json @@ -0,0 +1,13 @@ +{ + "name": "trino", + "category": "warehouse", + "displayName": "Trino", + "options": { + "hidden": true, + "syncBehaviours": [ + "upsert" ], + "isSqlModelSupported": false, + "isAudienceSupported": false + }, + "type": "warehouse" +} diff --git a/src/configurations/sources/trino/metadata.json b/src/configurations/sources/trino/metadata.json new file mode 100644 index 000000000..1aa657680 --- /dev/null +++ b/src/configurations/sources/trino/metadata.json @@ -0,0 +1,13 @@ +{ + "metadata": { + "primaryCategory": "", + "secondaryCategory": [], + "docLink": "", + "logoPath": "", + "releaseStatus": "beta", + "sourceCode": { + "github": "", + "version": "v1.0.0" + } + } +} diff --git a/src/configurations/sources/trino/schema.json b/src/configurations/sources/trino/schema.json new file mode 100644 index 000000000..fddffa4cc --- /dev/null +++ b/src/configurations/sources/trino/schema.json @@ -0,0 +1,3 @@ +{ + "configSchema": null +} diff --git a/src/configurations/sources/trino/ui-config.json b/src/configurations/sources/trino/ui-config.json new file mode 100644 index 000000000..65db17052 --- /dev/null +++ b/src/configurations/sources/trino/ui-config.json @@ -0,0 +1,64 @@ +{ + "uiConfig": [ + { + "title": "Connection Credentials", + "secretFields": ["password"], + "docLinks": { + "grantPermissions": "", + "verifyingCredentials": "", + "jsonMapperUseInstructions": "", + "setupInstructions": "" + }, + "nameField": "user", + "fields": [ + { + "type": "textInput", + "label": "Host", + "value": "host", + "regex": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$", + "regexErrorMessage": "Invalid Value", + "required": true, + "addInAccountSummary": true, + "trim": true + }, + { + "type": "textInput", + "label": "Catalog Name", + "value": "catalog", + "regex": "^(.{0,100})$", + "regexErrorMessage": "Invalid Value", + "required": true, + "addInAccountSummary": true, + "trim": true + }, + { + "type": "textInput", + "label": "User", + "value": "user", + "regex": "^(.{0,100})$", + "regexErrorMessage": "Invalid Value", + "required": true, + "trim": true + }, + { + "type": "textInput", + "label": "Password", + "value": "password", + "inputFieldType": "password", + "regex": ".*", + "required": true, + "secret": true + }, + { + "type": "textInput", + "label": "Port", + "value": "port", + "regex": "^(.{0,100})$", + "regexErrorMessage": "Invalid Value", + "inputFieldType": "number", + "required": false + } + ] + } + ] +}