From 2d47532a8045e320a655f69eea196961fe1e9996 Mon Sep 17 00:00:00 2001 From: Dilip Kola Date: Thu, 26 Dec 2024 17:39:48 +0530 Subject: [PATCH] feat: add support for versioning for destination config v2 --- .../fb_custom_audience/db-config.json | 77 +- .../fb_custom_audience/schema.json | 1143 +++++++---- .../fb_custom_audience/ui-config.json | 1707 ++++++++++++----- .../destinations/db-config-schema.json | 272 ++- 4 files changed, 2278 insertions(+), 921 deletions(-) diff --git a/src/configurations/destinations/fb_custom_audience/db-config.json b/src/configurations/destinations/fb_custom_audience/db-config.json index a9c2e2c4f..25f04ce20 100644 --- a/src/configurations/destinations/fb_custom_audience/db-config.json +++ b/src/configurations/destinations/fb_custom_audience/db-config.json @@ -2,24 +2,78 @@ "name": "FB_CUSTOM_AUDIENCE", "displayName": "Facebook Custom Audience", "config": { - "features": ["vdm-next"], + "features": [ + "vdm-next" + ], "supportsBlankAudienceCreation": true, "disableJsonMapper": true, "supportsVisualMapper": true, - "syncBehaviours": ["mirror"], + "syncBehaviours": [ + "mirror" + ], "transformAtV1": "router", "saveDestinationResponse": true, - "includeKeys": ["oneTrustCookieCategories", "ketchConsentPurposes", "consentManagement"], + "includeKeys": [ + "oneTrustCookieCategories", + "ketchConsentPurposes", + "consentManagement" + ], "excludeKeys": [], - "supportedSourceTypes": ["cloud", "warehouse", "shopify"], + "supportedSourceTypes": [ + "cloud", + "warehouse", + "shopify" + ], + "versions": [ + { + "type": "es-v1", + "actions": [ + "create", + "update" + ] + }, + { + "type": "retl-v1", + "actions": [ + "create", + "update" + ], + "prerequisite": { + "type": "featureFlag", + "name": "AMP_fbca-retl-v2-enabled", + "value": "false" + } + }, + { + "type": "retl-v2", + "actions": [ + "create", + "update" + ], + "prerequisite": { + "type": "featureFlag", + "name": "AMP_fbca-retl-v2-enabled", + "value": "true" + } + } + ], "supportedMessageTypes": { - "cloud": ["audiencelist", "record"] + "cloud": [ + "audiencelist", + "record" + ] }, "isAudienceSupported": true, "supportedConnectionModes": { - "cloud": ["cloud"], - "warehouse": ["cloud"], - "shopify": ["cloud"] + "cloud": [ + "cloud" + ], + "warehouse": [ + "cloud" + ], + "shopify": [ + "cloud" + ] }, "destConfig": { "defaultConfig": [ @@ -54,7 +108,10 @@ "ketchConsentPurposes" ] }, - "secretKeys": ["accessToken", "appSecret"] + "secretKeys": [ + "accessToken", + "appSecret" + ] }, "responseRules": { "responseType": "JSON", @@ -84,4 +141,4 @@ ] } } -} +} \ No newline at end of file diff --git a/src/configurations/destinations/fb_custom_audience/schema.json b/src/configurations/destinations/fb_custom_audience/schema.json index 30b288044..02453212f 100644 --- a/src/configurations/destinations/fb_custom_audience/schema.json +++ b/src/configurations/destinations/fb_custom_audience/schema.json @@ -1,423 +1,846 @@ { "configSchema": { - "$schema": "http://json-schema.org/draft-07/schema#", - "required": ["accessToken"], - "type": "object", - "properties": { - "accessToken": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,500})$" - }, - "appSecret": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,200})$" - }, - "maxUserCount": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" - }, - "userSchema": { - "type": "array", - "items": { + "es-v1": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": ["accessToken"], + "type": "object", + "properties": { + "accessToken": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,500})$" + }, + "appSecret": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,200})$" + }, + "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": [ - "EMAIL", - "PHONE", - "GEN", - "MADID", - "EXTERN_ID", - "DOBY", - "DOBM", - "DOBD", - "LN", - "FN", - "FI", - "CT", - "ST", - "ZIP", - "COUNTRY" - ] + "UNKNOWN", + "FILE_IMPORTED", + "EVENT_BASED", + "SEED_BASED", + "THIRD_PARTY_IMPORTED", + "COPY_PASTE", + "CONTACT_IMPORTER", + "HOUSEHOLD_AUDIENCE", + "NA" + ], + "default": "NA" }, - "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": "object", - "properties": { - "cloud": { - "type": "array", - "items": { - "type": "object", - "properties": { - "oneTrustCookieCategory": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + "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": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oneTrustCookieCategory": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } } } - } - }, - "warehouse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "oneTrustCookieCategory": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oneTrustCookieCategory": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } } } - } - }, - "shopify": { - "type": "array", - "items": { - "type": "object", - "properties": { - "oneTrustCookieCategory": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oneTrustCookieCategory": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } } } } } - } - }, - "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})$" + }, + "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" - } + }, + "allOf": [ + { + "if": { + "properties": { + "provider": { + "const": "custom" + } + }, + "required": ["provider"] }, - "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" }, - "then": { - "properties": { - "resolutionStrategy": { - "type": "string", - "enum": ["and", "or"] + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } } - }, - "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"] } } - } - }, - "allOf": [ - { - "if": { - "properties": { - "provider": { - "const": "custom" - } - }, - "required": ["provider"] + ] + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": ["custom", "ketch", "oneTrust"], + "default": "oneTrust" }, - "then": { - "properties": { - "resolutionStrategy": { - "type": "string", - "enum": ["and", "or"] + "consents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "consent": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } } - }, - "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"] } } + ] + } + } + } + }, + "connectionMode": { + "type": "object", + "properties": { + "shopify": { + "type": "string", + "enum": ["cloud"] + }, + "cloud": { + "type": "string", + "enum": ["cloud"] + }, + "warehouse": { + "type": "string", + "enum": ["cloud"] + } + } + }, + "ketchConsentPurposes": { + "type": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "purpose": { + "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": { + "purpose": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "purpose": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" } } - ] + } } } } }, - "connectionMode": { - "type": "object", - "properties": { - "shopify": { - "type": "string", - "enum": ["cloud"] + "allOf": [ + { + "if": { + "properties": { + "connectionMode": { + "type": "object", + "properties": { + "cloud": { + "const": "cloud" + } + }, + "required": ["cloud"] + } + }, + "required": ["connectionMode"] }, - "cloud": { - "type": "string", - "enum": ["cloud"] + "then": { + "properties": { + "audienceId": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + }, + "required": ["audienceId"] + } + }, + { + "if": { + "properties": { + "connectionMode": { + "type": "object", + "properties": { + "warehouse": { + "const": "cloud" + } + }, + "required": ["warehouse"] + } + }, + "required": ["connectionMode"] }, - "warehouse": { - "type": "string", - "enum": ["cloud"] + "then": { + "properties": { + "adAccountId": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + }, + "required": ["adAccountId"] } } - }, - "ketchConsentPurposes": { - "type": "object", - "properties": { - "cloud": { - "type": "array", - "items": { - "type": "object", - "properties": { - "purpose": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + ] + }, + "retl-v2": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": ["accessToken"], + "type": "object", + "properties": { + "accessToken": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,500})$" + }, + "appSecret": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,200})$" + }, + "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": "object", + "properties": { + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oneTrustCookieCategory": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } } } - } - }, - "warehouse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "purpose": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oneTrustCookieCategory": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } } } - } - }, - "shopify": { - "type": "array", - "items": { - "type": "object", - "properties": { - "purpose": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oneTrustCookieCategory": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } } } } } - } - } - }, - "allOf": [ - { - "if": { + }, + "consentManagement": { + "type": "object", "properties": { - "connectionMode": { - "type": "object", - "properties": { - "cloud": { - "const": "cloud" - } - }, - "required": ["cloud"] + "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"] + } + } + ] + } + }, + "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"] + } + } + ] + } } - }, - "required": ["connectionMode"] + } }, - "then": { + "connectionMode": { + "type": "object", "properties": { - "audienceId": { + "shopify": { + "type": "string", + "enum": ["cloud"] + }, + "cloud": { + "type": "string", + "enum": ["cloud"] + }, + "warehouse": { "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + "enum": ["cloud"] } - }, - "required": ["audienceId"] - } - }, - { - "if": { + } + }, + "ketchConsentPurposes": { + "type": "object", "properties": { - "connectionMode": { - "type": "object", - "properties": { - "warehouse": { - "const": "cloud" + "cloud": { + "type": "array", + "items": { + "type": "object", + "properties": { + "purpose": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } } - }, - "required": ["warehouse"] + } + }, + "warehouse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "purpose": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } + }, + "shopify": { + "type": "array", + "items": { + "type": "object", + "properties": { + "purpose": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + } } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "connectionMode": { + "type": "object", + "properties": { + "cloud": { + "const": "cloud" + } + }, + "required": ["cloud"] + } + }, + "required": ["connectionMode"] }, - "required": ["connectionMode"] + "then": { + "properties": { + "audienceId": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + }, + "required": ["audienceId"] + } }, - "then": { - "properties": { - "adAccountId": { - "type": "string", - "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" - } + { + "if": { + "properties": { + "connectionMode": { + "type": "object", + "properties": { + "warehouse": { + "const": "cloud" + } + }, + "required": ["warehouse"] + } + }, + "required": ["connectionMode"] }, - "required": ["adAccountId"] + "then": { + "properties": { + "adAccountId": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + }, + "required": ["adAccountId"] + } } - } - ] + ] + } } } diff --git a/src/configurations/destinations/fb_custom_audience/ui-config.json b/src/configurations/destinations/fb_custom_audience/ui-config.json index e6602eb87..992c3a3c6 100644 --- a/src/configurations/destinations/fb_custom_audience/ui-config.json +++ b/src/configurations/destinations/fb_custom_audience/ui-config.json @@ -1,574 +1,1257 @@ { "uiConfig": { - "baseTemplate": [ - { - "title": "Initial setup", - "note": "Review how this destination is set up", - "sections": [ + "es-v1": { + "version": "es-v1", + "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": "Access Token", + "note": "Enter the access token of your business application set up for accessing the Facebook Marketing API.", + "configKey": "accessToken", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,500})$", + "regexErrorMessage": "Invalid Access Token", + "placeholder": "e.g: EAALmZAOFOFpXXXXXXPl4uSHPxQDZCrU6KbZB1gICD9y1ZBNpevRXXXXXO06WZCUuySAX7vw2Re7vmZAHo6OFFZA4vsCUqq2XqBQgkbbgXXXXXXQ4wJFJ2GXGe69qaOXgugjkdjfgRjkknkfOUUTJfmGnzShXXXXX1kDX7xZB8IX9vdfEIZBZBhHQo4ZD", + "secret": true + }, + { + "type": "textInput", + "label": "Audience Id", + "note": "Enter your audience id", + "configKey": "audienceId", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "placeholder": "e.g: 238476XXXX5910030" + } + ] + } + ] + }, + { + "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": [], + "callout": { + "message": "Cloud mode for this destination will be deprecated soon. Please migrate to Facebook Conversions destination for cloud mode.", + "type": "info" + } + } + ] + } + ] + }, + { + "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", + "note": "Configure event-specific settings here", + "fields": [ + { + "type": "textInput", + "label": "App Secret", + "note": "Provide App Secret from your Facebook Developer App's basic settings.", + "configKey": "appSecret", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,200})$", + "regexErrorMessage": "Invalid App Secret", + "placeholder": "e.g: f65c45d8e013faXXXXXe1759c123456", + "secret": true + }, + { + "type": "textInput", + "label": "Audience Batch Size", + "configKey": "maxUserCount", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "regexErrorMessage": "Invalid Audience Batch Size", + "default": "10000" + } + ] + }, + { + "title": "Destination and event level setting", + "note": "Configure advanced destination and event-specific settings here", + "fields": [ + { + "type": "multiSelect", + "label": "Schema Fields", + "note": "The Allowed Parameter List : https://developers.facebook.com/docs/marketing-api/audiences/guides/custom-audiences/#hash", + "configKey": "userSchema", + "placeholder": "e.g: EMAIL", + "options": [ + { + "label": "EMAIL", + "value": "EMAIL" + }, + { + "label": "PHONE", + "value": "PHONE" + }, + { + "label": "GENDER", + "value": "GEN" + }, + { + "label": "MADID", + "value": "MADID" + }, + { + "label": "EXTERN_ID", + "value": "EXTERN_ID" + }, + { + "label": "DOB YEAR (YYYY)", + "value": "DOBY" + }, + { + "label": "DOB MONTH (MM)", + "value": "DOBM" + }, + { + "label": "DOB DATE (DD)", + "value": "DOBD" + }, + { + "label": "LAST NAME", + "value": "LN" + }, + { + "label": "FIRST NAME", + "value": "FN" + }, + { + "label": "FIRST NAME INITIAL", + "value": "FI" + }, + { + "label": "CITY", + "value": "CT" + }, + { + "label": "US STATES", + "value": "ST" + }, + { + "label": "ZIP", + "value": "ZIP" + }, + { + "label": "COUNTRY", + "value": "COUNTRY" + } + ], + "default": [ + "EMAIL" + ] + }, + { + "type": "checkbox", + "label": "Enable Hashing", + "configKey": "isHashRequired", + "default": true + }, + { + "type": "checkbox", + "label": "Is The Data Raw", + "configKey": "isRaw", + "default": false + }, + { + "type": "checkbox", + "label": "Disable Formatting", + "configKey": "disableFormat", + "default": false + }, + { + "type": "singleSelect", + "label": "Type", + "configKey": "type", + "placeholder": "e.g: NA", + "options": [ + { + "label": "UNKNOWN", + "value": "UNKNOWN" + }, + { + "label": "FILE_IMPORTED", + "value": "FILE_IMPORTED" + }, + { + "label": "EVENT_BASED", + "value": "EVENT_BASED" + }, + { + "label": "SEED_BASED", + "value": "SEED_BASED" + }, + { + "label": "THIRD_PARTY_IMPORTED", + "value": "THIRD_PARTY_IMPORTED" + }, + { + "label": "COPY_PASTE", + "value": "COPY_PASTE" + }, + { + "label": "CONTACT_IMPORTER", + "value": "CONTACT_IMPORTER" + }, + { + "label": "HOUSEHOLD_AUDIENCE", + "value": "HOUSEHOLD_AUDIENCE" + }, + { + "label": "NA", + "value": "NA" + } + ], + "default": "NA" + }, + { + "type": "singleSelect", + "label": "Sub Type", + "configKey": "subType", + "placeholder": "e.g: NA", + "options": [ + { + "label": "ANYTHING", + "value": "ANYTHING" + }, + { + "label": "NOTHING", + "value": "NOTHING" + }, + { + "label": "HASHES", + "value": "HASHES" + }, + { + "label": "USER_IDS", + "value": "USER_IDS" + }, + { + "label": "HASHES_OR_USER_IDS", + "value": "HASHES_OR_USER_IDS" + }, + { + "label": "MOBILE_ADVERTISER_IDS", + "value": "MOBILE_ADVERTISER_IDS" + }, + { + "label": "FB_EVENT_SIGNALS", + "value": "FB_EVENT_SIGNALS" + }, + { + "label": "EXTERNAL_IDS", + "value": "EXTERNAL_IDS" + }, + { + "label": "MULTI_HASHES", + "value": "MULTI_HASHES" + }, + { + "label": "TOKENS", + "value": "TOKENS" + }, + { + "label": "EXTERNAL_IDS_MIX", + "value": "EXTERNAL_IDS_MIX" + }, + { + "label": "WEB_PIXEL_HITS", + "value": "WEB_PIXEL_HITS" + }, + { + "label": "MOBILE_APP_EVENTS", + "value": "MOBILE_APP_EVENTS" + }, + { + "label": "MOBILE_APP_COMBINATION_EVENTS", + "value": "MOBILE_APP_COMBINATION_EVENTS" + }, + { + "label": "VIDEO_EVENTS", + "value": "VIDEO_EVENTS" + }, + { + "label": "WEB_PIXEL_COMBINATION_EVENTS", + "value": "WEB_PIXEL_COMBINATION_EVENTS" + }, + { + "label": "IG_BUSINESS_EVENTS", + "value": "IG_BUSINESS_EVENTS" + }, + { + "label": "MULTI_DATA_EVENTS", + "value": "MULTI_DATA_EVENTS" + }, + { + "label": "STORE_VISIT_EVENTS", + "value": "STORE_VISIT_EVENTS" + }, + { + "label": "INSTANT_ARTICLE_EVENTS", + "value": "INSTANT_ARTICLE_EVENTS" + }, + { + "label": "ENGAGEMENT_EVENT_USERS", + "value": "ENGAGEMENT_EVENT_USERS" + }, + { + "label": "FACEBOOK_WIFI_EVENTS", + "value": "FACEBOOK_WIFI_EVENTS" + }, + { + "label": "CUSTOM_AUDIENCE_USERS", + "value": "CUSTOM_AUDIENCE_USERS" + }, + { + "label": "S_EXPR", + "value": "S_EXPR" + }, + { + "label": "DYNAMIC_RULE", + "value": "DYNAMIC_RULE" + }, + { + "label": "CONVERSION_PIXEL_HITS", + "value": "CONVERSION_PIXEL_HITS" + }, + { + "label": "APP_USERS", + "value": "APP_USERS" + }, + { + "label": "CAMPAIGN_CONVERSIONS", + "value": "CAMPAIGN_CONVERSIONS" + }, + { + "label": "WEB_PIXEL_HITS_CUSTOM_AUDIENCE_USERS", + "value": "WEB_PIXEL_HITS_CUSTOM_AUDIENCE_USERS" + }, + { + "label": "MOBILE_APP_CUSTOM_AUDIENCE_USERS", + "value": "MOBILE_APP_CUSTOM_AUDIENCE_USERS" + }, + { + "label": "VIDEO_EVENT_USERS", + "value": "VIDEO_EVENT_USERS" + }, + { + "label": "FB_PIXEL_HITS", + "value": "FB_PIXEL_HITS" + }, + { + "label": "IG_PROMOTED_POST", + "value": "IG_PROMOTED_POST" + }, + { + "label": "PLACE_VISITS", + "value": "PLACE_VISITS" + }, + { + "label": "OFFLINE_EVENT_USERS", + "value": "OFFLINE_EVENT_USERS" + }, + { + "label": "EXPANDED_AUDIENCE", + "value": "EXPANDED_AUDIENCE" + }, + { + "label": "SEED_LIST", + "value": "SEED_LIST" + }, + { + "label": "PARTNER_CATEGORY_USERS", + "value": "PARTNER_CATEGORY_USERS" + }, + { + "label": "PAGE_SMART_AUDIENCE", + "value": "PAGE_SMART_AUDIENCE" + }, + { + "label": "MULTICOUNTRY_COMBINATION", + "value": "MULTICOUNTRY_COMBINATION" + }, + { + "label": "PLATFORM_USERS", + "value": "PLATFORM_USERS" + }, + { + "label": "MULTI_EVENT_SOURCE", + "value": "MULTI_EVENT_SOURCE" + }, + { + "label": "SMART_AUDIENCE", + "value": "SMART_AUDIENCE" + }, + { + "label": "LOOKALIKE_PLATFORM", + "value": "LOOKALIKE_PLATFORM" + }, + { + "label": "SIGNAL_SOURCE", + "value": "SIGNAL_SOURCE" + }, + { + "label": "MAIL_CHIMP_EMAIL_HASHES", + "value": "MAIL_CHIMP_EMAIL_HASHES" + }, + { + "label": "CONSTANT_CONTACTS_EMAIL_HASHES", + "value": "CONSTANT_CONTACTS_EMAIL_HASHES" + }, + { + "label": "COPY_PASTE_EMAIL_HASHES", + "value": "COPY_PASTE_EMAIL_HASHES" + }, + { + "label": "CONTACT_IMPORTER", + "value": "CONTACT_IMPORTER" + }, + { + "label": "DATA_FILE", + "value": "DATA_FILE" + }, + { + "label": "NA", + "value": "NA" + } + ], + "default": "NA" + } + ] + } + ] + }, + { + "id": "consentSettings", + "title": "Consent settings", + "note": "Configure consent settings for each provider here", + "icon": "settings", + "groups": [] + } + ] + } + ], + "sdkTemplate": { + "title": "SDK settings", + "note": "not visible in the ui", + "fields": [] + }, + "consentSettingsTemplate": { + "title": "Consent settings", + "note": "not visible in the ui", + "fields": [ { - "groups": [ + "type": "dynamicCustomForm", + "configKey": "consentManagement", + "default": [], + "rowFields": [ { - "title": "Connection settings", - "note": "Update your connection settings here", - "icon": "settings", - "fields": [ + "type": "singleSelect", + "label": "Consent management provider", + "configKey": "provider", + "options": [ { - "type": "textInput", - "label": "Access Token", - "note": "Enter the access token of your business application set up for accessing the Facebook Marketing API.", - "configKey": "accessToken", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,500})$", - "regexErrorMessage": "Invalid Access Token", - "placeholder": "e.g: EAALmZAOFOFpXXXXXXPl4uSHPxQDZCrU6KbZB1gICD9y1ZBNpevRXXXXXO06WZCUuySAX7vw2Re7vmZAHo6OFFZA4vsCUqq2XqBQgkbbgXXXXXXQ4wJFJ2GXGe69qaOXgugjkdjfgRjkknkfOUUTJfmGnzShXXXXX1kDX7xZB8IX9vdfEIZBZBhHQo4ZD", - "secret": true + "label": "Custom", + "value": "custom" }, { - "type": "textInput", - "label": "Ad Account id", - "note": "Enter the Ad Account id of your business application set up", - "configKey": "adAccountId", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", - "regexErrorMessage": "Invalid Ad Account id", - "placeholder": "e.g: 2309XXX5483", - "preRequisites": { - "fields": [ - { - "configKey": "connectionMode.warehouse", - "value": "cloud" - } - ] - } + "label": "Ketch", + "value": "ketch" }, { - "type": "textInput", - "label": "Audience Id", - "note": "Enter your audience id", - "configKey": "audienceId", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", - "placeholder": "e.g: 238476XXXX5910030", - "preRequisites": { - "fields": [ - { - "configKey": "connectionMode.cloud", - "value": "cloud" - } - ] - } + "label": "OneTrust", + "value": "oneTrust" } - ] - } - ] - }, - { - "groups": [ + ], + "default": "oneTrust", + "required": true + }, { - "title": "Connection mode", - "note": [ - "Update how you want to route events from your source to destination. ", + "type": "singleSelect", + "label": "the required consent logic", + "configKey": "resolutionStrategy", + "options": [ + { + "label": "AND", + "value": "and" + }, { - "text": "Get help deciding", - "link": "https://www.rudderstack.com/docs/destinations/rudderstack-connection-modes/" + "label": "OR", + "value": "or" } ], - "icon": "sliders", - "fields": [], - "callout": { - "message": "Cloud mode for this destination will be deprecated soon. Please migrate to Facebook Conversions destination for cloud mode.", - "type": "info" + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] } + }, + { + "type": "tagInput", + "label": "Enter consent category IDs", + "note": "Input your consent category IDs by pressing 'Enter' after each entry. We recommend using IDs instead of names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "configKey": "consents", + "tagKey": "consent", + "placeholder": "e.g: Marketing", + "default": [ + { + "consent": "" + } + ] } ] } ] + } + }, + "retl-v1": { + "version": "retl-v1", + "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": "Access Token", + "note": "Enter the access token of your business application set up for accessing the Facebook Marketing API.", + "configKey": "accessToken", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,500})$", + "regexErrorMessage": "Invalid Access Token", + "placeholder": "e.g: EAALmZAOFOFpXXXXXXPl4uSHPxQDZCrU6KbZB1gICD9y1ZBNpevRXXXXXO06WZCUuySAX7vw2Re7vmZAHo6OFFZA4vsCUqq2XqBQgkbbgXXXXXXQ4wJFJ2GXGe69qaOXgugjkdjfgRjkknkfOUUTJfmGnzShXXXXX1kDX7xZB8IX9vdfEIZBZBhHQo4ZD", + "secret": true + }, + { + "type": "textInput", + "label": "Ad Account id", + "note": "Enter the Ad Account id of your business application set up", + "configKey": "adAccountId", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "regexErrorMessage": "Invalid Ad Account id", + "placeholder": "e.g: 2309XXX5483" + } + ] + } + ] + }, + { + "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": [], + "callout": { + "message": "Cloud mode for this destination will be deprecated soon. Please migrate to Facebook Conversions destination for cloud mode.", + "type": "info" + } + } + ] + } + ] + }, + { + "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", + "note": "Configure event-specific settings here", + "fields": [ + { + "type": "textInput", + "label": "App Secret", + "note": "Provide App Secret from your Facebook Developer App's basic settings.", + "configKey": "appSecret", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,200})$", + "regexErrorMessage": "Invalid App Secret", + "placeholder": "e.g: f65c45d8e013faXXXXXe1759c123456", + "secret": true + }, + { + "type": "textInput", + "label": "Audience Batch Size", + "configKey": "maxUserCount", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "regexErrorMessage": "Invalid Audience Batch Size", + "default": "10000" + } + ] + }, + { + "title": "Destination and event level setting", + "note": "Configure advanced destination and event-specific settings here", + "fields": [ + { + "type": "multiSelect", + "label": "Schema Fields", + "note": "The Allowed Parameter List : https://developers.facebook.com/docs/marketing-api/audiences/guides/custom-audiences/#hash", + "configKey": "userSchema", + "placeholder": "e.g: EMAIL", + "options": [ + { + "label": "EMAIL", + "value": "EMAIL" + }, + { + "label": "PHONE", + "value": "PHONE" + }, + { + "label": "GENDER", + "value": "GEN" + }, + { + "label": "MADID", + "value": "MADID" + }, + { + "label": "EXTERN_ID", + "value": "EXTERN_ID" + }, + { + "label": "DOB YEAR (YYYY)", + "value": "DOBY" + }, + { + "label": "DOB MONTH (MM)", + "value": "DOBM" + }, + { + "label": "DOB DATE (DD)", + "value": "DOBD" + }, + { + "label": "LAST NAME", + "value": "LN" + }, + { + "label": "FIRST NAME", + "value": "FN" + }, + { + "label": "FIRST NAME INITIAL", + "value": "FI" + }, + { + "label": "CITY", + "value": "CT" + }, + { + "label": "US STATES", + "value": "ST" + }, + { + "label": "ZIP", + "value": "ZIP" + }, + { + "label": "COUNTRY", + "value": "COUNTRY" + } + ], + "default": [ + "EMAIL" + ] + }, + { + "type": "checkbox", + "label": "Enable Hashing", + "configKey": "isHashRequired", + "default": true + }, + { + "type": "checkbox", + "label": "Is The Data Raw", + "configKey": "isRaw", + "default": false + }, + { + "type": "checkbox", + "label": "Disable Formatting", + "configKey": "disableFormat", + "default": false + }, + { + "type": "singleSelect", + "label": "Type", + "configKey": "type", + "placeholder": "e.g: NA", + "options": [ + { + "label": "UNKNOWN", + "value": "UNKNOWN" + }, + { + "label": "FILE_IMPORTED", + "value": "FILE_IMPORTED" + }, + { + "label": "EVENT_BASED", + "value": "EVENT_BASED" + }, + { + "label": "SEED_BASED", + "value": "SEED_BASED" + }, + { + "label": "THIRD_PARTY_IMPORTED", + "value": "THIRD_PARTY_IMPORTED" + }, + { + "label": "COPY_PASTE", + "value": "COPY_PASTE" + }, + { + "label": "CONTACT_IMPORTER", + "value": "CONTACT_IMPORTER" + }, + { + "label": "HOUSEHOLD_AUDIENCE", + "value": "HOUSEHOLD_AUDIENCE" + }, + { + "label": "NA", + "value": "NA" + } + ], + "default": "NA" + }, + { + "type": "singleSelect", + "label": "Sub Type", + "configKey": "subType", + "placeholder": "e.g: NA", + "options": [ + { + "label": "ANYTHING", + "value": "ANYTHING" + }, + { + "label": "NOTHING", + "value": "NOTHING" + }, + { + "label": "HASHES", + "value": "HASHES" + }, + { + "label": "USER_IDS", + "value": "USER_IDS" + }, + { + "label": "HASHES_OR_USER_IDS", + "value": "HASHES_OR_USER_IDS" + }, + { + "label": "MOBILE_ADVERTISER_IDS", + "value": "MOBILE_ADVERTISER_IDS" + }, + { + "label": "FB_EVENT_SIGNALS", + "value": "FB_EVENT_SIGNALS" + }, + { + "label": "EXTERNAL_IDS", + "value": "EXTERNAL_IDS" + }, + { + "label": "MULTI_HASHES", + "value": "MULTI_HASHES" + }, + { + "label": "TOKENS", + "value": "TOKENS" + }, + { + "label": "EXTERNAL_IDS_MIX", + "value": "EXTERNAL_IDS_MIX" + }, + { + "label": "WEB_PIXEL_HITS", + "value": "WEB_PIXEL_HITS" + }, + { + "label": "MOBILE_APP_EVENTS", + "value": "MOBILE_APP_EVENTS" + }, + { + "label": "MOBILE_APP_COMBINATION_EVENTS", + "value": "MOBILE_APP_COMBINATION_EVENTS" + }, + { + "label": "VIDEO_EVENTS", + "value": "VIDEO_EVENTS" + }, + { + "label": "WEB_PIXEL_COMBINATION_EVENTS", + "value": "WEB_PIXEL_COMBINATION_EVENTS" + }, + { + "label": "IG_BUSINESS_EVENTS", + "value": "IG_BUSINESS_EVENTS" + }, + { + "label": "MULTI_DATA_EVENTS", + "value": "MULTI_DATA_EVENTS" + }, + { + "label": "STORE_VISIT_EVENTS", + "value": "STORE_VISIT_EVENTS" + }, + { + "label": "INSTANT_ARTICLE_EVENTS", + "value": "INSTANT_ARTICLE_EVENTS" + }, + { + "label": "ENGAGEMENT_EVENT_USERS", + "value": "ENGAGEMENT_EVENT_USERS" + }, + { + "label": "FACEBOOK_WIFI_EVENTS", + "value": "FACEBOOK_WIFI_EVENTS" + }, + { + "label": "CUSTOM_AUDIENCE_USERS", + "value": "CUSTOM_AUDIENCE_USERS" + }, + { + "label": "S_EXPR", + "value": "S_EXPR" + }, + { + "label": "DYNAMIC_RULE", + "value": "DYNAMIC_RULE" + }, + { + "label": "CONVERSION_PIXEL_HITS", + "value": "CONVERSION_PIXEL_HITS" + }, + { + "label": "APP_USERS", + "value": "APP_USERS" + }, + { + "label": "CAMPAIGN_CONVERSIONS", + "value": "CAMPAIGN_CONVERSIONS" + }, + { + "label": "WEB_PIXEL_HITS_CUSTOM_AUDIENCE_USERS", + "value": "WEB_PIXEL_HITS_CUSTOM_AUDIENCE_USERS" + }, + { + "label": "MOBILE_APP_CUSTOM_AUDIENCE_USERS", + "value": "MOBILE_APP_CUSTOM_AUDIENCE_USERS" + }, + { + "label": "VIDEO_EVENT_USERS", + "value": "VIDEO_EVENT_USERS" + }, + { + "label": "FB_PIXEL_HITS", + "value": "FB_PIXEL_HITS" + }, + { + "label": "IG_PROMOTED_POST", + "value": "IG_PROMOTED_POST" + }, + { + "label": "PLACE_VISITS", + "value": "PLACE_VISITS" + }, + { + "label": "OFFLINE_EVENT_USERS", + "value": "OFFLINE_EVENT_USERS" + }, + { + "label": "EXPANDED_AUDIENCE", + "value": "EXPANDED_AUDIENCE" + }, + { + "label": "SEED_LIST", + "value": "SEED_LIST" + }, + { + "label": "PARTNER_CATEGORY_USERS", + "value": "PARTNER_CATEGORY_USERS" + }, + { + "label": "PAGE_SMART_AUDIENCE", + "value": "PAGE_SMART_AUDIENCE" + }, + { + "label": "MULTICOUNTRY_COMBINATION", + "value": "MULTICOUNTRY_COMBINATION" + }, + { + "label": "PLATFORM_USERS", + "value": "PLATFORM_USERS" + }, + { + "label": "MULTI_EVENT_SOURCE", + "value": "MULTI_EVENT_SOURCE" + }, + { + "label": "SMART_AUDIENCE", + "value": "SMART_AUDIENCE" + }, + { + "label": "LOOKALIKE_PLATFORM", + "value": "LOOKALIKE_PLATFORM" + }, + { + "label": "SIGNAL_SOURCE", + "value": "SIGNAL_SOURCE" + }, + { + "label": "MAIL_CHIMP_EMAIL_HASHES", + "value": "MAIL_CHIMP_EMAIL_HASHES" + }, + { + "label": "CONSTANT_CONTACTS_EMAIL_HASHES", + "value": "CONSTANT_CONTACTS_EMAIL_HASHES" + }, + { + "label": "COPY_PASTE_EMAIL_HASHES", + "value": "COPY_PASTE_EMAIL_HASHES" + }, + { + "label": "CONTACT_IMPORTER", + "value": "CONTACT_IMPORTER" + }, + { + "label": "DATA_FILE", + "value": "DATA_FILE" + }, + { + "label": "NA", + "value": "NA" + } + ], + "default": "NA" + } + ] + } + ] + }, + { + "id": "consentSettings", + "title": "Consent settings", + "note": "Configure consent settings for each provider here", + "icon": "settings", + "groups": [] + } + ] + } + ], + "sdkTemplate": { + "title": "SDK settings", + "note": "not visible in the ui", + "fields": [] }, - { - "title": "Configuration settings", - "note": "Manage the settings for your destination", - "sections": [ + "consentSettingsTemplate": { + "title": "Consent settings", + "note": "not visible in the ui", + "fields": [ { - "title": "Destination settings", - "note": "Configure advanced destination-specific settings here", - "icon": "settings", - "groups": [ + "type": "dynamicCustomForm", + "configKey": "consentManagement", + "default": [], + "rowFields": [ { - "title": "Event Settings", - "note": "Configure event-specific settings here", - "fields": [ + "type": "singleSelect", + "label": "Consent management provider", + "configKey": "provider", + "options": [ + { + "label": "Custom", + "value": "custom" + }, { - "type": "textInput", - "label": "App Secret", - "note": "Provide App Secret from your Facebook Developer App's basic settings.", - "configKey": "appSecret", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,200})$", - "regexErrorMessage": "Invalid App Secret", - "placeholder": "e.g: f65c45d8e013faXXXXXe1759c123456", - "secret": true + "label": "Ketch", + "value": "ketch" }, { - "type": "textInput", - "label": "Audience Batch Size", - "configKey": "maxUserCount", - "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", - "regexErrorMessage": "Invalid Audience Batch Size", - "default": "10000" + "label": "OneTrust", + "value": "oneTrust" } - ] + ], + "default": "oneTrust", + "required": true }, { - "title": "Destination and event level setting", - "note": "Configure advanced destination and event-specific settings here", - "fields": [ - { - "type": "multiSelect", - "label": "Schema Fields", - "note": "The Allowed Parameter List : https://developers.facebook.com/docs/marketing-api/audiences/guides/custom-audiences/#hash", - "configKey": "userSchema", - "placeholder": "e.g: EMAIL", - "options": [ - { - "label": "EMAIL", - "value": "EMAIL" - }, - { - "label": "PHONE", - "value": "PHONE" - }, - { - "label": "GENDER", - "value": "GEN" - }, - { - "label": "MADID", - "value": "MADID" - }, - { - "label": "EXTERN_ID", - "value": "EXTERN_ID" - }, - { - "label": "DOB YEAR (YYYY)", - "value": "DOBY" - }, - { - "label": "DOB MONTH (MM)", - "value": "DOBM" - }, - { - "label": "DOB DATE (DD)", - "value": "DOBD" - }, - { - "label": "LAST NAME", - "value": "LN" - }, - { - "label": "FIRST NAME", - "value": "FN" - }, - { - "label": "FIRST NAME INITIAL", - "value": "FI" - }, - { - "label": "CITY", - "value": "CT" - }, - { - "label": "US STATES", - "value": "ST" - }, - { - "label": "ZIP", - "value": "ZIP" - }, - { - "label": "COUNTRY", - "value": "COUNTRY" - } - ], - "default": ["EMAIL"] - }, - { - "type": "checkbox", - "label": "Enable Hashing", - "configKey": "isHashRequired", - "default": true - }, + "type": "singleSelect", + "label": "the required consent logic", + "configKey": "resolutionStrategy", + "options": [ { - "type": "checkbox", - "label": "Is The Data Raw", - "configKey": "isRaw", - "default": false + "label": "AND", + "value": "and" }, { - "type": "checkbox", - "label": "Disable Formatting", - "configKey": "disableFormat", - "default": false - }, - { - "type": "singleSelect", - "label": "Type", - "configKey": "type", - "placeholder": "e.g: NA", - "options": [ - { - "label": "UNKNOWN", - "value": "UNKNOWN" - }, - { - "label": "FILE_IMPORTED", - "value": "FILE_IMPORTED" - }, - { - "label": "EVENT_BASED", - "value": "EVENT_BASED" - }, - { - "label": "SEED_BASED", - "value": "SEED_BASED" - }, - { - "label": "THIRD_PARTY_IMPORTED", - "value": "THIRD_PARTY_IMPORTED" - }, - { - "label": "COPY_PASTE", - "value": "COPY_PASTE" - }, - { - "label": "CONTACT_IMPORTER", - "value": "CONTACT_IMPORTER" - }, - { - "label": "HOUSEHOLD_AUDIENCE", - "value": "HOUSEHOLD_AUDIENCE" - }, - { - "label": "NA", - "value": "NA" - } - ], - "default": "NA" - }, - { - "type": "singleSelect", - "label": "Sub Type", - "configKey": "subType", - "placeholder": "e.g: NA", - "options": [ - { - "label": "ANYTHING", - "value": "ANYTHING" - }, - { - "label": "NOTHING", - "value": "NOTHING" - }, - { - "label": "HASHES", - "value": "HASHES" - }, - { - "label": "USER_IDS", - "value": "USER_IDS" - }, - { - "label": "HASHES_OR_USER_IDS", - "value": "HASHES_OR_USER_IDS" - }, - { - "label": "MOBILE_ADVERTISER_IDS", - "value": "MOBILE_ADVERTISER_IDS" - }, - { - "label": "FB_EVENT_SIGNALS", - "value": "FB_EVENT_SIGNALS" - }, - { - "label": "EXTERNAL_IDS", - "value": "EXTERNAL_IDS" - }, - { - "label": "MULTI_HASHES", - "value": "MULTI_HASHES" - }, - { - "label": "TOKENS", - "value": "TOKENS" - }, - { - "label": "EXTERNAL_IDS_MIX", - "value": "EXTERNAL_IDS_MIX" - }, - { - "label": "WEB_PIXEL_HITS", - "value": "WEB_PIXEL_HITS" - }, - { - "label": "MOBILE_APP_EVENTS", - "value": "MOBILE_APP_EVENTS" - }, - { - "label": "MOBILE_APP_COMBINATION_EVENTS", - "value": "MOBILE_APP_COMBINATION_EVENTS" - }, - { - "label": "VIDEO_EVENTS", - "value": "VIDEO_EVENTS" - }, - { - "label": "WEB_PIXEL_COMBINATION_EVENTS", - "value": "WEB_PIXEL_COMBINATION_EVENTS" - }, - { - "label": "IG_BUSINESS_EVENTS", - "value": "IG_BUSINESS_EVENTS" - }, - { - "label": "MULTI_DATA_EVENTS", - "value": "MULTI_DATA_EVENTS" - }, - { - "label": "STORE_VISIT_EVENTS", - "value": "STORE_VISIT_EVENTS" - }, - { - "label": "INSTANT_ARTICLE_EVENTS", - "value": "INSTANT_ARTICLE_EVENTS" - }, - { - "label": "ENGAGEMENT_EVENT_USERS", - "value": "ENGAGEMENT_EVENT_USERS" - }, - { - "label": "FACEBOOK_WIFI_EVENTS", - "value": "FACEBOOK_WIFI_EVENTS" - }, - { - "label": "CUSTOM_AUDIENCE_USERS", - "value": "CUSTOM_AUDIENCE_USERS" - }, - { - "label": "S_EXPR", - "value": "S_EXPR" - }, - { - "label": "DYNAMIC_RULE", - "value": "DYNAMIC_RULE" - }, - { - "label": "CONVERSION_PIXEL_HITS", - "value": "CONVERSION_PIXEL_HITS" - }, - { - "label": "APP_USERS", - "value": "APP_USERS" - }, - { - "label": "CAMPAIGN_CONVERSIONS", - "value": "CAMPAIGN_CONVERSIONS" - }, - { - "label": "WEB_PIXEL_HITS_CUSTOM_AUDIENCE_USERS", - "value": "WEB_PIXEL_HITS_CUSTOM_AUDIENCE_USERS" - }, - { - "label": "MOBILE_APP_CUSTOM_AUDIENCE_USERS", - "value": "MOBILE_APP_CUSTOM_AUDIENCE_USERS" - }, - { - "label": "VIDEO_EVENT_USERS", - "value": "VIDEO_EVENT_USERS" - }, - { - "label": "FB_PIXEL_HITS", - "value": "FB_PIXEL_HITS" - }, - { - "label": "IG_PROMOTED_POST", - "value": "IG_PROMOTED_POST" - }, - { - "label": "PLACE_VISITS", - "value": "PLACE_VISITS" - }, - { - "label": "OFFLINE_EVENT_USERS", - "value": "OFFLINE_EVENT_USERS" - }, - { - "label": "EXPANDED_AUDIENCE", - "value": "EXPANDED_AUDIENCE" - }, - { - "label": "SEED_LIST", - "value": "SEED_LIST" - }, - { - "label": "PARTNER_CATEGORY_USERS", - "value": "PARTNER_CATEGORY_USERS" - }, - { - "label": "PAGE_SMART_AUDIENCE", - "value": "PAGE_SMART_AUDIENCE" - }, - { - "label": "MULTICOUNTRY_COMBINATION", - "value": "MULTICOUNTRY_COMBINATION" - }, - { - "label": "PLATFORM_USERS", - "value": "PLATFORM_USERS" - }, - { - "label": "MULTI_EVENT_SOURCE", - "value": "MULTI_EVENT_SOURCE" - }, - { - "label": "SMART_AUDIENCE", - "value": "SMART_AUDIENCE" - }, - { - "label": "LOOKALIKE_PLATFORM", - "value": "LOOKALIKE_PLATFORM" - }, - { - "label": "SIGNAL_SOURCE", - "value": "SIGNAL_SOURCE" - }, - { - "label": "MAIL_CHIMP_EMAIL_HASHES", - "value": "MAIL_CHIMP_EMAIL_HASHES" - }, - { - "label": "CONSTANT_CONTACTS_EMAIL_HASHES", - "value": "CONSTANT_CONTACTS_EMAIL_HASHES" - }, - { - "label": "COPY_PASTE_EMAIL_HASHES", - "value": "COPY_PASTE_EMAIL_HASHES" - }, - { - "label": "CONTACT_IMPORTER", - "value": "CONTACT_IMPORTER" - }, - { - "label": "DATA_FILE", - "value": "DATA_FILE" - }, - { - "label": "NA", - "value": "NA" - } - ], - "default": "NA" + "label": "OR", + "value": "or" } ], + "required": true, + "variant": "badge", "preRequisites": { "fields": [ { - "configKey": "connectionMode.cloud", - "value": "cloud" - } - ], - "prerequisitesCondition": "or", - "featureFlags": [ - { - "configKey": "AMP_vdm-next", - "value": false + "configKey": "provider", + "value": "custom" } ] } + }, + { + "type": "tagInput", + "label": "Enter consent category IDs", + "note": "Input your consent category IDs by pressing 'Enter' after each entry. We recommend using IDs instead of names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "configKey": "consents", + "tagKey": "consent", + "placeholder": "e.g: Marketing", + "default": [ + { + "consent": "" + } + ] } ] - }, - { - "id": "consentSettings", - "title": "Consent settings", - "note": "Configure consent settings for each provider here", - "icon": "settings", - "groups": [] } ] } - ], - "sdkTemplate": { - "title": "SDK settings", - "note": "not visible in the ui", - "fields": [] }, - "consentSettingsTemplate": { - "title": "Consent settings", - "note": "not visible in the ui", - "fields": [ + "retl-v2": { + "version": "retl-v2", + "baseTemplate": [ { - "type": "dynamicCustomForm", - "configKey": "consentManagement", - "default": [], - "rowFields": [ + "title": "Initial setup", + "note": "Review how this destination is set up", + "sections": [ { - "type": "singleSelect", - "label": "Consent management provider", - "configKey": "provider", - "options": [ - { - "label": "Custom", - "value": "custom" - }, - { - "label": "Ketch", - "value": "ketch" - }, + "groups": [ { - "label": "OneTrust", - "value": "oneTrust" + "title": "Connection settings", + "note": "Update your connection settings here", + "icon": "settings", + "fields": [ + { + "type": "textInput", + "label": "Access Token", + "note": "Enter the access token of your business application set up for accessing the Facebook Marketing API.", + "configKey": "accessToken", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{1,500})$", + "regexErrorMessage": "Invalid Access Token", + "placeholder": "e.g: EAALmZAOFOFpXXXXXXPl4uSHPxQDZCrU6KbZB1gICD9y1ZBNpevRXXXXXO06WZCUuySAX7vw2Re7vmZAHo6OFFZA4vsCUqq2XqBQgkbbgXXXXXXQ4wJFJ2GXGe69qaOXgugjkdjfgRjkknkfOUUTJfmGnzShXXXXX1kDX7xZB8IX9vdfEIZBZBhHQo4ZD", + "secret": true + }, + { + "type": "textInput", + "label": "Ad Account id", + "note": "Enter the Ad Account id of your business application set up", + "configKey": "adAccountId", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "regexErrorMessage": "Invalid Ad Account id", + "placeholder": "e.g: 2309XXX5483" + } + ] } - ], - "default": "oneTrust", - "required": true + ] }, { - "type": "singleSelect", - "label": "the required consent logic", - "configKey": "resolutionStrategy", - "options": [ + "groups": [ { - "label": "AND", - "value": "and" - }, - { - "label": "OR", - "value": "or" - } - ], - "required": true, - "variant": "badge", - "preRequisites": { - "fields": [ - { - "configKey": "provider", - "value": "custom" + "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": [], + "callout": { + "message": "Cloud mode for this destination will be deprecated soon. Please migrate to Facebook Conversions destination for cloud mode.", + "type": "info" } - ] - } - }, + } + ] + } + ] + }, + { + "title": "Configuration settings", + "note": "Manage the settings for your destination", + "sections": [ { - "type": "tagInput", - "label": "Enter consent category IDs", - "note": "Input your consent category IDs by pressing 'Enter' after each entry. We recommend using IDs instead of names as IDs are unique and less likely to change over time, making them a more reliable choice.", - "configKey": "consents", - "tagKey": "consent", - "placeholder": "e.g: Marketing", - "default": [ + "title": "Destination settings", + "note": "Configure advanced destination-specific settings here", + "icon": "settings", + "groups": [ { - "consent": "" + "title": "Event Settings", + "note": "Configure event-specific settings here", + "fields": [ + { + "type": "textInput", + "label": "App Secret", + "note": "Provide App Secret from your Facebook Developer App's basic settings.", + "configKey": "appSecret", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,200})$", + "regexErrorMessage": "Invalid App Secret", + "placeholder": "e.g: f65c45d8e013faXXXXXe1759c123456", + "secret": true + }, + { + "type": "textInput", + "label": "Audience Batch Size", + "configKey": "maxUserCount", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "regexErrorMessage": "Invalid Audience Batch Size", + "default": "10000" + } + ] } ] + }, + { + "id": "consentSettings", + "title": "Consent settings", + "note": "Configure consent settings for each provider here", + "icon": "settings", + "groups": [] } ] } - ] + ], + "consentSettingsTemplate": { + "title": "Consent settings", + "note": "not visible in the ui", + "fields": [ + { + "type": "dynamicCustomForm", + "configKey": "consentManagement", + "default": [], + "rowFields": [ + { + "type": "singleSelect", + "label": "Consent management provider", + "configKey": "provider", + "options": [ + { + "label": "Custom", + "value": "custom" + }, + { + "label": "Ketch", + "value": "ketch" + }, + { + "label": "OneTrust", + "value": "oneTrust" + } + ], + "default": "oneTrust", + "required": true + }, + { + "type": "singleSelect", + "label": "the required consent logic", + "configKey": "resolutionStrategy", + "options": [ + { + "label": "AND", + "value": "and" + }, + { + "label": "OR", + "value": "or" + } + ], + "required": true, + "variant": "badge", + "preRequisites": { + "fields": [ + { + "configKey": "provider", + "value": "custom" + } + ] + } + }, + { + "type": "tagInput", + "label": "Enter consent category IDs", + "note": "Input your consent category IDs by pressing 'Enter' after each entry. We recommend using IDs instead of names as IDs are unique and less likely to change over time, making them a more reliable choice.", + "configKey": "consents", + "tagKey": "consent", + "placeholder": "e.g: Marketing", + "default": [ + { + "consent": "" + } + ] + } + ] + } + ] + }, + "sdkTemplate": { + "title": "SDK settings", + "note": "not visible in the ui", + "fields": [] + } } } -} +} \ No newline at end of file diff --git a/src/schemas/destinations/db-config-schema.json b/src/schemas/destinations/db-config-schema.json index 35a0306f2..2114b48b5 100644 --- a/src/schemas/destinations/db-config-schema.json +++ b/src/schemas/destinations/db-config-schema.json @@ -1,7 +1,11 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", - "required": ["name", "displayName", "config"], + "required": [ + "name", + "displayName", + "config" + ], "title": "Destination definition schema", "description": "The schema for a destination definition. This is used to validate the destination definition configuration files (db-config.json).", "properties": { @@ -11,7 +15,11 @@ "description": "A unique name for a destination without any whitespace or special characters.", "$comment": "Typically, all the characters are in uppercase with words separated by underscores.", "pattern": "^[a-zA-Z0-9_-]+$", - "examples": ["BING_ADS", "GOOGLE_ANALYTICS", "FACEBOOK_ADS"] + "examples": [ + "BING_ADS", + "GOOGLE_ANALYTICS", + "FACEBOOK_ADS" + ] }, "displayName": { "type": "string", @@ -31,13 +39,18 @@ "title": "Category", "description": "The category of the destination.", "$comment": "Typically, needs to be defined only for warehouse destinations.", - "enum": ["warehouse"] + "enum": [ + "warehouse" + ] }, "config": { "type": "object", "title": "Configuration", "description": "This hosts all the destination parameters.", - "required": ["supportedSourceTypes", "destConfig"], + "required": [ + "supportedSourceTypes", + "destConfig" + ], "additionalProperties": false, "properties": { "transformAtV1": { @@ -45,7 +58,11 @@ "title": "Transform At V1", "description": "The module in the server that should initiate destination transformation.", "$comment": "This field deprecates 'transformAt'.", - "enum": ["processor", "router", "none"], + "enum": [ + "processor", + "router", + "none" + ], "default": "processor" }, "features": { @@ -54,7 +71,9 @@ "description": "The list of features supported by the destination.", "items": { "type": "string", - "enum": ["vdm-next"] + "enum": [ + "vdm-next" + ] }, "minItems": 1, "uniqueItems": true @@ -217,7 +236,9 @@ "type": "object", "title": "Source Type Filter Map", "description": "The event types supported by the destination for the source type.", - "required": ["messageType"], + "required": [ + "messageType" + ], "properties": { "messageType": { "type": "array", @@ -311,19 +332,25 @@ "type": "object", "title": "Authentication", "description": "The authentication parameters for the destination.", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "type": "string", "title": "Type", "description": "The mechanism of authentication active for the destination.", - "enum": ["OAuth"] + "enum": [ + "OAuth" + ] }, "provider": { "type": "string", "title": "Provider", "description": "The authentication provider's name.", - "enum": ["Google"] + "enum": [ + "Google" + ] }, "role": { "type": "string", @@ -338,7 +365,10 @@ "$comment": "'delivery' - event delivery requests. 'delete' - user deletion requests", "items": { "type": "string", - "enum": ["delivery", "delete"] + "enum": [ + "delivery", + "delete" + ] }, "minItems": 1, "uniqueItems": true @@ -375,9 +405,56 @@ "description": "TBD", "items": { "type": "string", - "enum": ["mirror", "upsert"] + "enum": [ + "mirror", + "upsert" + ] }, "uniqueItems": true + }, + "versions": { + "type": "array", + "title": "Versions", + "description": "The versions supported by the destination.", + "items": { + "type": "object", + "required": [ + "type", + "actions", + "sourceCategory" + ], + "properties": { + "type": { + "type": "string", + "title": "Type", + "description": "The version type supported by the destination.", + "$comment": "This is used to identify the version of the destination.", + "enum": [ + "es-v1", + "retl-v1", + "retl-v2" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "The actions supported by the version.", + "$comment": "This is used to identify the actions supported by the version.", + "items": { + "type": "string", + "enum": [ + "create", + "update" + ] + }, + "minItems": 1, + "uniqueItems": true + }, + "prerequisite": { + "$ref": "#/definitions/logicalOrBasePrerequisite" + } + } + } } }, "allOf": [ @@ -391,90 +468,130 @@ "properties": { "web": { "type": "array", - "contains": { "const": "hybrid" } + "contains": { + "const": "hybrid" + } } }, - "required": ["web"] + "required": [ + "web" + ] }, { "properties": { "android": { "type": "array", - "contains": { "const": "hybrid" } + "contains": { + "const": "hybrid" + } } }, - "required": ["android"] + "required": [ + "android" + ] }, { "properties": { "ios": { "type": "array", - "contains": { "const": "hybrid" } + "contains": { + "const": "hybrid" + } } }, - "required": ["ios"] + "required": [ + "ios" + ] }, { "properties": { "unity": { "type": "array", - "contains": { "const": "hybrid" } + "contains": { + "const": "hybrid" + } } }, - "required": ["unity"] + "required": [ + "unity" + ] }, { "properties": { "amp": { "type": "array", - "contains": { "const": "hybrid" } + "contains": { + "const": "hybrid" + } } }, - "required": ["amp"] + "required": [ + "amp" + ] }, { "properties": { "reactnative": { "type": "array", - "contains": { "const": "hybrid" } + "contains": { + "const": "hybrid" + } } }, - "required": ["reactnative"] + "required": [ + "reactnative" + ] }, { "properties": { "flutter": { "type": "array", - "contains": { "const": "hybrid" } + "contains": { + "const": "hybrid" + } } }, - "required": ["flutter"] + "required": [ + "flutter" + ] }, { "properties": { "cordova": { "type": "array", - "contains": { "const": "hybrid" } + "contains": { + "const": "hybrid" + } } }, - "required": ["cordova"] + "required": [ + "cordova" + ] }, { "properties": { "shopify": { "type": "array", - "contains": { "const": "hybrid" } + "contains": { + "const": "hybrid" + } } }, - "required": ["shopify"] + "required": [ + "shopify" + ] } ] } }, - "required": ["supportedConnectionModes"] + "required": [ + "supportedConnectionModes" + ] }, "then": { - "required": ["hybridModeCloudEventsFilter"], + "required": [ + "hybridModeCloudEventsFilter" + ], "properties": { "hybridModeCloudEventsFilter": { "type": "object" @@ -530,7 +647,6 @@ } ] }, - "deprecated": { "type": "boolean", "title": "Deprecated", @@ -603,14 +719,20 @@ "description": "Some destinations send 2xx as status code even when the request has some errors. Hence, we have to parse the response body to determine the actual status.", "$comment": "This method of parsing the response is DEPRECATED now in lieu of transformer proxy.", "additionalProperties": false, - "required": ["responseType", "rules"], + "required": [ + "responseType", + "rules" + ], "properties": { "responseType": { "type": "string", "title": "Response Type", "description": "The response type from the destination.", "$comment": "This indicates the type of response returned by the destination.", - "enum": ["JSON", "TXT"] + "enum": [ + "JSON", + "TXT" + ] }, "rules": { "type": "object", @@ -652,13 +774,82 @@ } }, "definitions": { + "basePrerequisite": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "featureFlag" + ] + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "name", + "value" + ], + "additionalProperties": false + }, + "logicalPrerequisite": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "or", + "and" + ] + }, + "prerequisites": { + "type": "array", + "items": { + "$ref": "#/definitions/logicalOrBasePrerequisite" + } + } + }, + "required": [ + "type", + "prerequisites" + ], + "additionalProperties": false + }, + "logicalOrBasePrerequisite": { + "oneOf": [ + { + "$ref": "#/definitions/basePrerequisite" + }, + { + "$ref": "#/definitions/logicalPrerequisite" + } + ] + }, "eventType": { "type": "string", - "enum": ["track", "identify", "page", "screen", "alias", "group", "audiencelist", "record"] + "enum": [ + "track", + "identify", + "page", + "screen", + "alias", + "group", + "audiencelist", + "record" + ] }, "connectionMode": { "type": "string", - "enum": ["cloud", "device", "hybrid"] + "enum": [ + "cloud", + "device", + "hybrid" + ] }, "sourceType": { "type": "string", @@ -691,11 +882,14 @@ "success": { "type": "string", "title": "Success", - "enum": ["true", "false"] + "enum": [ + "true", + "false" + ] } }, "minProperties": 1, "maxProperties": 2 } } -} +} \ No newline at end of file