9.1 KiB
Questions for OpenText DAM IT Team - Metadata Inheritance
Date: October 29, 2025 Context: Content Scaling Workflow - Uploading derivative assets with metadata from master assets Issue: Need to copy metadata from master asset to derivative asset and update specific fields
Current Situation
What Works ✅
- Simple Upload: Uploading new assets with 5 basic metadata fields works perfectly
FERRERO.FIELD.MKTG.ASSET TYPEFERRERO.FIELD.FISCAL YEARMAIN_LANGUAGESARTESIA.FIELD.ASSET NAMEFERRERO.FIELD.STATE
- Result: HTTP 202 Accepted, asset appears in folder, metadata applied correctly
What Doesn't Work ❌
- Full Metadata Upload: When we send the complete metadata structure from a master asset (~128KB JSON)
- Result: HTTP 202 Accepted, but asset does NOT appear in the folder
- Behavior: Silent failure - no error message, just doesn't create the asset
- Metadata Size: 128,912 bytes vs 2,000 bytes for simple structure
Our Goal
We want to implement a "derivative asset" workflow:
- Master Asset exists in DAM with complete metadata (16+ fields)
- Download master asset and all its metadata
- Store complete metadata in our database
- Agency creates derivative/localized versions
- Upload derivative with:
- All metadata from master (inherited)
- Updated fields from filename (language, country, asset name)
- Result: Derivative has same metadata as master except for the fields we changed
Example Flow
Master Asset: 06_RAFFAELLO_MAESTRO_SD.mp4
- Language: EN
- Asset Type: TVC
- Brand: RAFFAELLO
- Agency: XYZ Agency
- Fiscal Year: 2025/2026
- [12+ other fields]
Derivative File: RAF_DE_de_XMAS_TVC_001_6S_16x9.mp4
- Language: DE ← Updated from filename
- Asset Type: TVC (same)
- Asset Name: RAF_DE_de_XMAS_TVC_001_6S_16x9 ← Updated
- Brand: RAFFAELLO ← Inherited from master
- Agency: XYZ Agency ← Inherited from master
- Fiscal Year: 2025/2026 ← Inherited from master
- [All other fields inherited from master]
Questions for DAM IT Team
Question 1: Metadata Payload Size Limits
Q: Is there a maximum size limit for metadata payloads when uploading assets via POST /v6/assets?
Context:
- Simple upload (5 fields): ~2KB payload → Works ✅
- Full metadata (16+ fields): ~128KB payload → Silent failure ❌
- Both return HTTP 202, but large payload doesn't create asset
What we need to know:
- Is 128KB too large?
- Is there a documented limit?
- Is there a timeout for large payloads?
Question 2: Metadata Inheritance from Master Assets
Q: What's the recommended approach to copy/inherit metadata from one asset to another?
Options we're considering:
- Copy full metadata structure - Download master metadata and send it when uploading derivative
- Use asset reference - Reference the master asset ID and tell DAM to copy metadata
- Use template/copy API - Is there a dedicated endpoint for copying metadata between assets?
- Selective field upload - Only send the fields we want to change, DAM preserves others?
What we need:
- Best practice for metadata inheritance
- Any special API endpoints for this?
- Example request structure
Question 3: Nested Category Structure
Q: When uploading metadata, do we need to preserve the categorized structure from the master asset?
Master metadata structure we're seeing:
{
"metadata": {
"metadata_element_list": [
{
"category_id": "1",
"metadata_element_list": [
{"id": "FERRERO.FIELD.MKTG.ASSET TYPE", "value": "..."},
{"id": "MAIN_LANGUAGES", "value": "..."},
...
]
},
{
"category_id": "2",
"metadata_element_list": [...]
}
]
}
}
Questions:
- Must we preserve the category structure?
- Can we flatten to a single array of fields?
- Does the API accept both formats?
Question 4: Updating Specific Fields
Q: Can we upload an asset with partial metadata and update specific fields later?
Scenario:
- Upload asset with basic metadata (5 fields) ← Works
- Then call an UPDATE endpoint to add/modify fields ← Does this exist?
Questions:
- Is there a PATCH/UPDATE metadata endpoint?
- Can we update metadata after asset creation?
- What's the endpoint:
PATCH /v6/assets/{id}/metadata?
Question 5: Field Type Requirements
Q: Are there specific field types that are required vs optional for the ECOMMERCE metadata model?
What we need:
- List of required fields for ECOMMERCE model
- Can we omit optional fields vs must send them with empty/default values?
- Does omitting fields cause validation failures?
Question 6: Domain Values
Q: Some fields have complex domain value structures with field_value vs simple value. What determines which structure to use?
Example structures we're seeing:
// Structure A (domain value with field_value)
{
"id": "FERRERO.MARKETING.FIELD.AGENCY NAME",
"value": {
"domain_value": true,
"value": {
"field_value": {"value": "0000000023"},
"type": "com.artesia.metadata.DomainValue"
}
}
}
// Structure B (simple domain value)
{
"id": "FERRERO.FIELD.MKTG.ASSET TYPE",
"value": {
"domain_value": true,
"value": {"type": "string", "value": "heroimage"}
}
}
Questions:
- Which structure should we use for each field?
- Is this defined in the lookup domains?
- Can we query this via API?
Question 7: Tabular Fields
Q: How do we properly handle tabular fields like MAIN_LANGUAGES?
Current structure:
{
"id": "MAIN_LANGUAGES",
"parent_table_id": "FERRERO.TABULAR.FIELD.MAIN LANGUAGES",
"type": "com.artesia.metadata.MetadataTableField",
"values": [{"cascading_domain_value": false, ...}]
}
Questions:
- Can tabular fields have multiple values?
- Do we always use
valuesarray (plural)? - Is
parent_table_idrequired?
Question 8: Silent Failures
Q: Why does the API return HTTP 202 (Accepted) but not create the asset when metadata is large?
Observations:
- Small metadata (~2KB): HTTP 202 → Asset created ✅
- Large metadata (~128KB): HTTP 202 → Asset NOT created ❌
- No error message in either case
- Both use identical upload structure, just different metadata content
Questions:
- Is there async validation that can fail after 202 response?
- How can we check if validation failed?
- Is there a job status endpoint to check async upload status?
- Should we poll for the asset to verify it was created?
What We've Tried
Attempt 1: Full Metadata from Master ❌
// Downloaded full master asset metadata
// Sent entire metadata_element_list structure (15 categories, 50+ fields)
// Size: 128KB
// Result: HTTP 202 but asset not created
Attempt 2: Simple 5 Fields ✅
// Created minimal metadata with 5 fields
// Size: 2KB
// Result: HTTP 202 and asset appears in folder
Technical Details
API Endpoint Used
POST https://ppr.dam.ferrero.com/otmmapi/v6/assets
Request Structure
POST /v6/assets
Content-Type: multipart/form-data
Parameters:
- asset_representation: {JSON structure}
- parent_folder_id: {folder_id}
- manifest: {upload_manifest JSON}
- files: {binary file data}
Authentication
OAuth 2.0 Bearer Token (client_credentials)
Working correctly (uploads succeed with simple metadata)
Target Folder
Final Assets Folder ID: ea0dbf86e13e3634895746d3a986558ec2eb8be1
Permissions: Write access confirmed
Recommended Approach (Need IT Team Guidance)
Option 1: Copy from Master Asset (Preferred)
Is there an API to say "create asset X with metadata copied from asset Y"?
Then we could update just the fields we need to change.
Option 2: Two-Step Process
Step 1: Upload with minimal metadata (5 fields) - Works
Step 2: PATCH/UPDATE to add remaining fields from master - Does this exist?
Option 3: Selective Metadata
Send only the fields that changed from master + references to master
Does DAM support referencing master metadata?
Option 4: Understand Payload Limits
If there's a size limit, we could:
- Send only essential fields
- Use metadata templates
- Reference external metadata
Sample Data Available
We can provide:
- ✅ Working simple metadata JSON (2KB, 5 fields)
- ✅ Full master metadata JSON (128KB, 50+ fields)
- ✅ Successful upload request (works)
- ✅ Failed upload request (202 but no asset created)
- ✅ HTTP request/response logs
Priority Questions (Most Important)
- What's the proper way to inherit metadata from a master asset to a derivative?
- Is there a size limit on metadata payloads?
- Can we update metadata after asset creation? (PATCH endpoint)
- Why does HTTP 202 not always create the asset?
Contact Information
Project: Ferrero Content Scaling Workflow Developer: Dave Porter Environment: Production (ppr.dam.ferrero.com) Client ID: otds-OLV
Please advise on the best approach for metadata inheritance in derivative asset workflows. 🙏