diff --git a/components/datatypes/paid-media/paid-media-additional-field.example.1.json b/components/datatypes/paid-media/paid-media-additional-field.example.1.json new file mode 100644 index 000000000..f54bb1bff --- /dev/null +++ b/components/datatypes/paid-media/paid-media-additional-field.example.1.json @@ -0,0 +1,4 @@ +{ + "xdm:fieldName": "platform_specific_metric", + "xdm:stringValue": "high_engagement" +} diff --git a/components/datatypes/paid-media/paid-media-additional-field.example.2.json b/components/datatypes/paid-media/paid-media-additional-field.example.2.json new file mode 100644 index 000000000..35b9e641e --- /dev/null +++ b/components/datatypes/paid-media/paid-media-additional-field.example.2.json @@ -0,0 +1,4 @@ +{ + "xdm:fieldName": "custom_score", + "xdm:numberValue": 87.5 +} diff --git a/components/datatypes/paid-media/paid-media-additional-field.example.3.json b/components/datatypes/paid-media/paid-media-additional-field.example.3.json new file mode 100644 index 000000000..7c3df7a15 --- /dev/null +++ b/components/datatypes/paid-media/paid-media-additional-field.example.3.json @@ -0,0 +1,4 @@ +{ + "xdm:fieldName": "is_optimized", + "xdm:booleanValue": true +} diff --git a/components/datatypes/paid-media/paid-media-additional-field.example.4.json b/components/datatypes/paid-media/paid-media-additional-field.example.4.json new file mode 100644 index 000000000..326a38dc0 --- /dev/null +++ b/components/datatypes/paid-media/paid-media-additional-field.example.4.json @@ -0,0 +1,4 @@ +{ + "xdm:fieldName": "last_updated", + "xdm:dateValue": "2025-01-15T10:30:00Z" +} diff --git a/components/datatypes/paid-media/paid-media-additional-field.schema.json b/components/datatypes/paid-media/paid-media-additional-field.schema.json new file mode 100644 index 000000000..dcd3ec9e0 --- /dev/null +++ b/components/datatypes/paid-media/paid-media-additional-field.schema.json @@ -0,0 +1,43 @@ +{ + "meta:license": [ + "Copyright 2025 Adobe Systems Incorporated. All rights reserved.", + "This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license", + "you may not use this file except in compliance with the License. You may obtain a copy", + "of the License at https://creativecommons.org/licenses/by/4.0/" + ], + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "https://ns.adobe.com/xdm/datatypes/paid-media-additional-field", + "title": "Paid Media Additional Field", + "type": "object", + "description": "Flexible field structure for storing platform-specific or custom fields not defined in core schema. Supports multiple value types to accommodate different data types from paid media network APIs.", + "properties": { + "xdm:fieldName": { + "title": "Field Name", + "type": "string", + "description": "Name of the additional field" + }, + "xdm:stringValue": { + "title": "String Value", + "type": "string", + "description": "String value of the field" + }, + "xdm:numberValue": { + "title": "Number Value", + "type": "number", + "description": "Numeric value of the field" + }, + "xdm:booleanValue": { + "title": "Boolean Value", + "type": "boolean", + "description": "Boolean value of the field" + }, + "xdm:dateValue": { + "title": "Date Value", + "type": "string", + "format": "date-time", + "description": "Date/time value of the field" + } + }, + "required": ["xdm:fieldName"], + "meta:status": "experimental" +} diff --git a/components/datatypes/paid-media/paid-media-creative.example.1.json b/components/datatypes/paid-media/paid-media-creative.example.1.json new file mode 100644 index 000000000..c0ab65816 --- /dev/null +++ b/components/datatypes/paid-media/paid-media-creative.example.1.json @@ -0,0 +1,34 @@ +{ + "xdm:creativeID": "creative-12345", + "xdm:creativeType": "image", + "xdm:title": "Summer Sale - 50% Off", + "xdm:body": "Don't miss our biggest sale of the season. Shop now and save big on all summer items.", + "xdm:callToAction": "Shop Now", + "xdm:destinationURL": "https://example.com/summer-sale?utm_source=facebook&utm_campaign=summer2025", + "xdm:displayURL": "https://example.com/summer-sale", + "xdm:trackingURLs": [ + { + "xdm:eventType": "impression", + "xdm:url": "https://tracking.example.com/imp?id=12345" + }, + { + "xdm:eventType": "click", + "xdm:url": "https://tracking.example.com/click?id=12345" + } + ], + "xdm:assets": [ + { + "xdm:assetID": "asset-001", + "xdm:assetType": "image", + "xdm:name": "summer-sale-hero.jpg", + "xdm:url": "https://cdn.example.com/images/summer-sale-hero.jpg", + "xdm:thumbnailURL": "https://cdn.example.com/images/summer-sale-hero-thumb.jpg", + "xdm:dimensions": { + "xdm:width": 1200, + "xdm:height": 628 + }, + "xdm:fileSize": 245760, + "xdm:hash": "a3f5c8d9e2b1f4a6c7d8e9f0a1b2c3d4" + } + ] +} diff --git a/components/datatypes/paid-media/paid-media-creative.example.2.json b/components/datatypes/paid-media/paid-media-creative.example.2.json new file mode 100644 index 000000000..e0e25f0b6 --- /dev/null +++ b/components/datatypes/paid-media/paid-media-creative.example.2.json @@ -0,0 +1,24 @@ +{ + "xdm:creativeID": "creative-67890", + "xdm:creativeType": "video", + "xdm:title": "New Product Launch", + "xdm:body": "Introducing our revolutionary new product. Watch the video to learn more.", + "xdm:callToAction": "Learn More", + "xdm:destinationURL": "https://example.com/new-product", + "xdm:assets": [ + { + "xdm:assetID": "asset-video-001", + "xdm:assetType": "video", + "xdm:name": "product-launch-video.mp4", + "xdm:url": "https://cdn.example.com/videos/product-launch.mp4", + "xdm:thumbnailURL": "https://cdn.example.com/videos/product-launch-thumb.jpg", + "xdm:dimensions": { + "xdm:width": 1920, + "xdm:height": 1080 + }, + "xdm:fileSize": 15728640, + "xdm:duration": 30.5, + "xdm:hash": "b4e6d9f1a2c3e5d7f8a9b0c1d2e3f4a5" + } + ] +} diff --git a/components/datatypes/paid-media/paid-media-creative.example.3.json b/components/datatypes/paid-media/paid-media-creative.example.3.json new file mode 100644 index 000000000..5c8d12f0e --- /dev/null +++ b/components/datatypes/paid-media/paid-media-creative.example.3.json @@ -0,0 +1,43 @@ +{ + "xdm:creativeID": "creative-carousel-001", + "xdm:creativeType": "carousel", + "xdm:title": "Explore Our Collection", + "xdm:body": "Swipe through our latest products and find your favorites.", + "xdm:callToAction": "View Collection", + "xdm:destinationURL": "https://example.com/collection", + "xdm:assets": [ + { + "xdm:assetID": "asset-carousel-001", + "xdm:assetType": "image", + "xdm:name": "product-1.jpg", + "xdm:url": "https://cdn.example.com/carousel/product-1.jpg", + "xdm:dimensions": { + "xdm:width": 1080, + "xdm:height": 1080 + }, + "xdm:fileSize": 180224 + }, + { + "xdm:assetID": "asset-carousel-002", + "xdm:assetType": "image", + "xdm:name": "product-2.jpg", + "xdm:url": "https://cdn.example.com/carousel/product-2.jpg", + "xdm:dimensions": { + "xdm:width": 1080, + "xdm:height": 1080 + }, + "xdm:fileSize": 195584 + }, + { + "xdm:assetID": "asset-carousel-003", + "xdm:assetType": "image", + "xdm:name": "product-3.jpg", + "xdm:url": "https://cdn.example.com/carousel/product-3.jpg", + "xdm:dimensions": { + "xdm:width": 1080, + "xdm:height": 1080 + }, + "xdm:fileSize": 172032 + } + ] +} diff --git a/components/datatypes/paid-media/paid-media-creative.schema.json b/components/datatypes/paid-media/paid-media-creative.schema.json new file mode 100644 index 000000000..285da8a61 --- /dev/null +++ b/components/datatypes/paid-media/paid-media-creative.schema.json @@ -0,0 +1,187 @@ +{ + "meta:license": [ + "Copyright 2025 Adobe Systems Incorporated. All rights reserved.", + "This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license", + "you may not use this file except in compliance with the License. You may obtain a copy", + "of the License at https://creativecommons.org/licenses/by/4.0/" + ], + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "https://ns.adobe.com/xdm/datatypes/paid-media-creative", + "title": "Paid Media Creative", + "type": "object", + "description": "Data type representing creative assets and content for paid media ads", + "definitions": { + "paidMediaCreative": { + "properties": { + "xdm:creativeID": { + "type": "string", + "title": "Creative ID", + "description": "Unique identifier for the creative" + }, + "xdm:creativeType": { + "type": "string", + "title": "Creative Type", + "description": "Type of creative content", + "enum": [ + "image", + "video", + "carousel", + "collection", + "dynamic", + "text", + "html5", + "playable", + "other" + ], + "meta:enum": { + "image": "Static Image", + "video": "Video", + "carousel": "Carousel/Multi-image", + "collection": "Collection/Catalog", + "dynamic": "Dynamic Creative", + "text": "Text Only", + "html5": "HTML5/Rich Media", + "playable": "Playable Ad", + "other": "Other Creative Type" + } + }, + "xdm:title": { + "type": "string", + "title": "Title", + "description": "Creative title or headline" + }, + "xdm:body": { + "type": "string", + "title": "Body Text", + "description": "Main body text or description" + }, + "xdm:callToAction": { + "type": "string", + "title": "Call to Action", + "description": "Call to action text or type" + }, + "xdm:destinationURL": { + "type": "string", + "format": "uri", + "title": "Destination URL", + "description": "Landing page URL where users are directed" + }, + "xdm:displayURL": { + "type": "string", + "format": "uri", + "title": "Display URL", + "description": "URL displayed in the ad" + }, + "xdm:trackingURLs": { + "type": "array", + "title": "Tracking URLs", + "description": "Third-party tracking URLs", + "items": { + "type": "object", + "properties": { + "xdm:eventType": { + "type": "string", + "title": "Event Type", + "description": "Type of event being tracked (click, impression, conversion)" + }, + "xdm:url": { + "type": "string", + "format": "uri", + "title": "Tracking URL", + "description": "The tracking URL" + } + } + } + }, + "xdm:assets": { + "type": "array", + "title": "Creative Assets", + "description": "Media assets used in the creative", + "items": { + "$ref": "#/definitions/asset" + } + } + } + }, + "asset": { + "properties": { + "xdm:assetID": { + "type": "string", + "title": "Asset ID", + "description": "Unique identifier for the asset" + }, + "xdm:assetType": { + "type": "string", + "title": "Asset Type", + "description": "Type of media asset", + "enum": ["image", "video", "audio", "document", "other"], + "meta:enum": { + "image": "Image", + "video": "Video", + "audio": "Audio", + "document": "Document", + "other": "Other Asset Type" + } + }, + "xdm:name": { + "type": "string", + "title": "Asset Name", + "description": "Name or title of the asset" + }, + "xdm:url": { + "type": "string", + "format": "uri", + "title": "Asset URL", + "description": "URL where the asset can be accessed" + }, + "xdm:thumbnailURL": { + "type": "string", + "format": "uri", + "title": "Thumbnail URL", + "description": "URL for asset thumbnail" + }, + "xdm:dimensions": { + "type": "object", + "title": "Asset Dimensions", + "description": "Dimensions of the asset", + "properties": { + "xdm:width": { + "type": "integer", + "title": "Width", + "description": "Width in pixels", + "minimum": 0 + }, + "xdm:height": { + "type": "integer", + "title": "Height", + "description": "Height in pixels", + "minimum": 0 + } + } + }, + "xdm:fileSize": { + "type": "integer", + "title": "File Size", + "description": "File size in bytes", + "minimum": 0 + }, + "xdm:duration": { + "type": "number", + "title": "Duration", + "description": "Duration in seconds (for video/audio assets)" + }, + "xdm:hash": { + "type": "string", + "title": "Asset Hash", + "description": "Unique hash identifier for the asset content" + } + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/paidMediaCreative" + } + ], + "meta:status": "experimental" +} diff --git a/components/datatypes/paid-media/paid-media-targeting.example.1.json b/components/datatypes/paid-media/paid-media-targeting.example.1.json new file mode 100644 index 000000000..063a8e690 --- /dev/null +++ b/components/datatypes/paid-media/paid-media-targeting.example.1.json @@ -0,0 +1,41 @@ +{ + "xdm:geoTargeting": { + "xdm:countries": ["US", "CA", "GB"], + "xdm:regions": ["California", "New York", "Ontario"], + "xdm:cities": ["San Francisco", "New York", "Toronto"] + }, + "xdm:demographicTargeting": { + "xdm:ageRanges": [ + { + "xdm:minAge": 25, + "xdm:maxAge": 34 + }, + { + "xdm:minAge": 35, + "xdm:maxAge": 44 + } + ], + "xdm:genders": ["all"], + "xdm:languages": ["en-US", "en-CA", "en-GB"] + }, + "xdm:interestTargeting": { + "xdm:interests": ["Technology", "E-commerce", "Fashion"], + "xdm:behaviors": ["Online Shoppers", "Frequent Travelers"], + "xdm:customAudiences": [ + { + "xdm:audienceID": "aud-12345", + "xdm:audienceName": "Website Visitors - Last 30 Days", + "xdm:audienceType": "retargeting" + } + ] + }, + "xdm:deviceTargeting": { + "xdm:deviceTypes": ["mobile", "desktop"], + "xdm:operatingSystems": ["iOS", "Android", "Windows", "macOS"], + "xdm:browsers": ["Chrome", "Safari", "Firefox"] + }, + "xdm:placementTargeting": { + "xdm:placements": ["feed", "stories", "search"], + "xdm:publisherCategories": ["News", "Entertainment", "Technology"] + } +} diff --git a/components/datatypes/paid-media/paid-media-targeting.example.2.json b/components/datatypes/paid-media/paid-media-targeting.example.2.json new file mode 100644 index 000000000..3d3800b4d --- /dev/null +++ b/components/datatypes/paid-media/paid-media-targeting.example.2.json @@ -0,0 +1,31 @@ +{ + "xdm:geoTargeting": { + "xdm:countries": ["US"], + "xdm:radius": { + "xdm:latitude": 37.7749, + "xdm:longitude": -122.4194, + "xdm:radiusKm": 25 + } + }, + "xdm:demographicTargeting": { + "xdm:ageRanges": [ + { + "xdm:minAge": 18, + "xdm:maxAge": 24 + } + ], + "xdm:genders": ["female"] + }, + "xdm:interestTargeting": { + "xdm:customAudiences": [ + { + "xdm:audienceID": "aud-lookalike-001", + "xdm:audienceName": "Lookalike - High Value Customers", + "xdm:audienceType": "lookalike" + } + ] + }, + "xdm:deviceTargeting": { + "xdm:deviceTypes": ["mobile"] + } +} diff --git a/components/datatypes/paid-media/paid-media-targeting.example.3.json b/components/datatypes/paid-media/paid-media-targeting.example.3.json new file mode 100644 index 000000000..1a89e5f4b --- /dev/null +++ b/components/datatypes/paid-media/paid-media-targeting.example.3.json @@ -0,0 +1,18 @@ +{ + "xdm:geoTargeting": { + "xdm:countries": ["DE", "FR", "IT", "ES"], + "xdm:postalCodes": ["10115", "75001", "00100", "28001"] + }, + "xdm:demographicTargeting": { + "xdm:ageRanges": [ + { + "xdm:minAge": 45, + "xdm:maxAge": 65 + } + ], + "xdm:languages": ["de-DE", "fr-FR", "it-IT", "es-ES"] + }, + "xdm:deviceTargeting": { + "xdm:deviceTypes": ["desktop", "tablet"] + } +} diff --git a/components/datatypes/paid-media/paid-media-targeting.schema.json b/components/datatypes/paid-media/paid-media-targeting.schema.json new file mode 100644 index 000000000..8016b905f --- /dev/null +++ b/components/datatypes/paid-media/paid-media-targeting.schema.json @@ -0,0 +1,246 @@ +{ + "meta:license": [ + "Copyright 2025 Adobe Systems Incorporated. All rights reserved.", + "This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license", + "you may not use this file except in compliance with the License. You may obtain a copy", + "of the License at https://creativecommons.org/licenses/by/4.0/" + ], + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "https://ns.adobe.com/xdm/datatypes/paid-media-targeting", + "title": "Paid Media Targeting", + "type": "object", + "description": "Data type representing targeting specifications for paid media campaigns", + "definitions": { + "targeting": { + "properties": { + "xdm:geoTargeting": { + "type": "object", + "title": "Geographic Targeting", + "description": "Geographic targeting specifications", + "properties": { + "xdm:countries": { + "type": "array", + "title": "Countries", + "description": "Targeted countries (ISO country codes)", + "items": { + "type": "string" + } + }, + "xdm:regions": { + "type": "array", + "title": "Regions/States", + "description": "Targeted regions or states", + "items": { + "type": "string" + } + }, + "xdm:cities": { + "type": "array", + "title": "Cities", + "description": "Targeted cities", + "items": { + "type": "string" + } + }, + "xdm:postalCodes": { + "type": "array", + "title": "Postal Codes", + "description": "Targeted postal codes", + "items": { + "type": "string" + } + }, + "xdm:radius": { + "type": "object", + "title": "Radius Targeting", + "description": "Location radius targeting", + "properties": { + "xdm:latitude": { + "type": "number", + "title": "Latitude" + }, + "xdm:longitude": { + "type": "number", + "title": "Longitude" + }, + "xdm:radiusKm": { + "type": "number", + "title": "Radius (km)", + "description": "Radius in kilometers" + } + } + } + } + }, + "xdm:demographicTargeting": { + "type": "object", + "title": "Demographic Targeting", + "description": "Demographic targeting specifications", + "properties": { + "xdm:ageRanges": { + "type": "array", + "title": "Age Ranges", + "description": "Targeted age ranges", + "items": { + "type": "object", + "properties": { + "xdm:minAge": { + "type": "integer", + "title": "Minimum Age" + }, + "xdm:maxAge": { + "type": "integer", + "title": "Maximum Age" + } + } + } + }, + "xdm:genders": { + "type": "array", + "title": "Genders", + "description": "Targeted genders", + "items": { + "type": "string", + "enum": ["male", "female", "all", "unknown"], + "meta:enum": { + "male": "Male", + "female": "Female", + "all": "All Genders", + "unknown": "Unknown/Unspecified" + } + } + }, + "xdm:languages": { + "type": "array", + "title": "Languages", + "description": "Targeted languages (ISO language codes)", + "items": { + "type": "string" + } + } + } + }, + "xdm:interestTargeting": { + "type": "object", + "title": "Interest Targeting", + "description": "Interest and behavior targeting", + "properties": { + "xdm:interests": { + "type": "array", + "title": "Interests", + "description": "Targeted interest categories", + "items": { + "type": "string" + } + }, + "xdm:behaviors": { + "type": "array", + "title": "Behaviors", + "description": "Targeted behaviors", + "items": { + "type": "string" + } + }, + "xdm:customAudiences": { + "type": "array", + "title": "Custom Audiences", + "description": "Custom audience segments", + "items": { + "type": "object", + "properties": { + "xdm:audienceID": { + "type": "string", + "title": "Audience ID" + }, + "xdm:audienceName": { + "type": "string", + "title": "Audience Name" + }, + "xdm:audienceType": { + "type": "string", + "title": "Audience Type", + "enum": ["custom", "lookalike", "retargeting", "similar"], + "meta:enum": { + "custom": "Custom Audience", + "lookalike": "Lookalike Audience", + "retargeting": "Retargeting Audience", + "similar": "Similar Audience" + } + } + } + } + } + } + }, + "xdm:deviceTargeting": { + "type": "object", + "title": "Device Targeting", + "description": "Device and platform targeting", + "properties": { + "xdm:deviceTypes": { + "type": "array", + "title": "Device Types", + "description": "Targeted device types", + "items": { + "type": "string", + "enum": ["desktop", "mobile", "tablet", "tv", "other"], + "meta:enum": { + "desktop": "Desktop", + "mobile": "Mobile", + "tablet": "Tablet", + "tv": "Connected TV", + "other": "Other Device" + } + } + }, + "xdm:operatingSystems": { + "type": "array", + "title": "Operating Systems", + "description": "Targeted operating systems", + "items": { + "type": "string" + } + }, + "xdm:browsers": { + "type": "array", + "title": "Browsers", + "description": "Targeted browsers", + "items": { + "type": "string" + } + } + } + }, + "xdm:placementTargeting": { + "type": "object", + "title": "Placement Targeting", + "description": "Ad placement targeting", + "properties": { + "xdm:placements": { + "type": "array", + "title": "Placements", + "description": "Targeted ad placements", + "items": { + "type": "string" + } + }, + "xdm:publisherCategories": { + "type": "array", + "title": "Publisher Categories", + "description": "Targeted publisher categories", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/targeting" + } + ], + "meta:status": "experimental" +} diff --git a/components/datatypes/paid-media/paid-media-url-tracking.example.1.json b/components/datatypes/paid-media/paid-media-url-tracking.example.1.json new file mode 100644 index 000000000..80e201b2e --- /dev/null +++ b/components/datatypes/paid-media/paid-media-url-tracking.example.1.json @@ -0,0 +1,18 @@ +{ + "xdm:trackingTemplate": "{lpurl}?s_kwcid=AL!{userid}!3!{creative}!{matchtype}!{network}!{keyword}", + "xdm:finalUrlSuffix": "utm_source=google&utm_medium=cpc", + "xdm:customParameters": [ + { + "xdm:key": "campaign_id", + "xdm:value": "{campaignid}" + }, + { + "xdm:key": "adgroup_id", + "xdm:value": "{adgroupid}" + }, + { + "xdm:key": "keyword", + "xdm:value": "{keyword}" + } + ] +} diff --git a/components/datatypes/paid-media/paid-media-url-tracking.example.2.json b/components/datatypes/paid-media/paid-media-url-tracking.example.2.json new file mode 100644 index 000000000..eea92317d --- /dev/null +++ b/components/datatypes/paid-media/paid-media-url-tracking.example.2.json @@ -0,0 +1,17 @@ +{ + "xdm:trackingTemplate": "https://example.com/track?url={lpurl}&campaign={campaignid}", + "xdm:customParameters": [ + { + "xdm:key": "utm_source", + "xdm:value": "facebook" + }, + { + "xdm:key": "utm_campaign", + "xdm:value": "{campaign.name}" + }, + { + "xdm:key": "utm_content", + "xdm:value": "{ad.id}" + } + ] +} diff --git a/components/datatypes/paid-media/paid-media-url-tracking.example.3.json b/components/datatypes/paid-media/paid-media-url-tracking.example.3.json new file mode 100644 index 000000000..18595bcfc --- /dev/null +++ b/components/datatypes/paid-media/paid-media-url-tracking.example.3.json @@ -0,0 +1,13 @@ +{ + "xdm:finalUrlSuffix": "gclid={gclid}&msclkid={msclkid}", + "xdm:customParameters": [ + { + "xdm:key": "source", + "xdm:value": "paid_search" + }, + { + "xdm:key": "placement", + "xdm:value": "{placement}" + } + ] +} diff --git a/components/datatypes/paid-media/paid-media-url-tracking.schema.json b/components/datatypes/paid-media/paid-media-url-tracking.schema.json new file mode 100644 index 000000000..4c31f7096 --- /dev/null +++ b/components/datatypes/paid-media/paid-media-url-tracking.schema.json @@ -0,0 +1,46 @@ +{ + "meta:license": [ + "Copyright 2025 Adobe Systems Incorporated. All rights reserved.", + "This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license", + "you may not use this file except in compliance with the License. You may obtain a copy", + "of the License at https://creativecommons.org/licenses/by/4.0/" + ], + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "https://ns.adobe.com/xdm/datatypes/paid-media-url-tracking", + "title": "Paid Media URL Tracking", + "type": "object", + "description": "URL tracking configuration for paid media campaigns, ad groups, and ads. Captures tracking templates and custom parameters used to track user clicks and conversions.", + "properties": { + "xdm:trackingTemplate": { + "type": "string", + "title": "Tracking URL Template", + "description": "URL tracking template with macros (e.g., {lpurl}?s_kwcid=AL!{userid}!3!{creative})" + }, + "xdm:finalUrlSuffix": { + "type": "string", + "title": "Final URL Suffix", + "description": "Parameters appended to the final URL" + }, + "xdm:customParameters": { + "type": "array", + "title": "Custom URL Parameters", + "description": "Custom tracking parameters configured for the entity", + "items": { + "type": "object", + "properties": { + "xdm:key": { + "type": "string", + "title": "Parameter Key", + "description": "Parameter name (e.g., 'utm_source', 'campaign_id')" + }, + "xdm:value": { + "type": "string", + "title": "Parameter Value", + "description": "Parameter value or macro (e.g., '{campaignid}')" + } + } + } + } + }, + "meta:status": "experimental" +}