Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"xdm:fieldName": "platform_specific_metric",
"xdm:stringValue": "high_engagement"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"xdm:fieldName": "custom_score",
"xdm:numberValue": 87.5
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"xdm:fieldName": "is_optimized",
"xdm:booleanValue": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"xdm:fieldName": "last_updated",
"xdm:dateValue": "2025-01-15T10:30:00Z"
}
Original file line number Diff line number Diff line change
@@ -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"
}
34 changes: 34 additions & 0 deletions components/datatypes/paid-media/paid-media-creative.example.1.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
}
24 changes: 24 additions & 0 deletions components/datatypes/paid-media/paid-media-creative.example.2.json
Original file line number Diff line number Diff line change
@@ -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"
}
]
}
43 changes: 43 additions & 0 deletions components/datatypes/paid-media/paid-media-creative.example.3.json
Original file line number Diff line number Diff line change
@@ -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
}
]
}
187 changes: 187 additions & 0 deletions components/datatypes/paid-media/paid-media-creative.schema.json
Original file line number Diff line number Diff line change
@@ -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": {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd recommend to keep these fields inside an object that acts like a namespace, for example "xdm:paidMediaCreative". You can choose an appropriate name that does not clash; some of the fields defined in this datatype clash with other datatypes in global XDM (for example "xdm:createiveID", "xdm:body", "xdm:destinationURL".) By nesting inside an object will avoid collisions

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed creative to paidMediaCreative to avoid collisions.

"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"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you reuse the "asset" block defined in the schema in the future? Wanted to find out why it was taken out from the items and defined as a separate block.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we might reuse "asset" in the schema, should I move it in items?

}
}
}
},
"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"
}
Original file line number Diff line number Diff line change
@@ -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"]
}
}
Loading