Created comprehensive list of questions about:
- Metadata payload size limits
- Proper metadata inheritance approach
- Nested category structures
- Updating specific fields
- Silent failures (HTTP 202 but no asset)
- Domain value structures
- Tabular field handling
Includes technical details, examples, and our test results.
🤖 Generated with Claude Code
334 lines
9.1 KiB
Markdown
334 lines
9.1 KiB
Markdown
# 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 TYPE`
|
|
- `FERRERO.FIELD.FISCAL YEAR`
|
|
- `MAIN_LANGUAGES`
|
|
- `ARTESIA.FIELD.ASSET NAME`
|
|
- `FERRERO.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:
|
|
|
|
1. **Master Asset** exists in DAM with complete metadata (16+ fields)
|
|
2. **Download** master asset and all its metadata
|
|
3. **Store** complete metadata in our database
|
|
4. **Agency** creates derivative/localized versions
|
|
5. **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:**
|
|
1. **Copy full metadata structure** - Download master metadata and send it when uploading derivative
|
|
2. **Use asset reference** - Reference the master asset ID and tell DAM to copy metadata
|
|
3. **Use template/copy API** - Is there a dedicated endpoint for copying metadata between assets?
|
|
4. **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:**
|
|
```json
|
|
{
|
|
"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:**
|
|
1. Upload asset with basic metadata (5 fields) ← Works
|
|
2. 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:**
|
|
```json
|
|
// 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:**
|
|
```json
|
|
{
|
|
"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 `values` array (plural)?
|
|
- Is `parent_table_id` required?
|
|
|
|
---
|
|
|
|
### 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 ❌
|
|
```php
|
|
// 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 ✅
|
|
```php
|
|
// 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)
|
|
|
|
1. **What's the proper way to inherit metadata from a master asset to a derivative?**
|
|
2. **Is there a size limit on metadata payloads?**
|
|
3. **Can we update metadata after asset creation? (PATCH endpoint)**
|
|
4. **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.** 🙏
|