Manifests
Ingredients
Overview
Most digital assets aren’t created in isolation — they often reuse elements from other assets. These source files are called ingredients.
Ingredients preserve provenance across edits, keeping original Content Credentials and linking them into the new asset.
Ingredient Objects
Ingredients are recorded in the manifest’s ingredients
array. Each entry
contains metadata about the source file.
Example:
"ingredients": [
{
"title": "photo1.jpg",
"format": "image/jpeg",
"instance_id": "xmp:iid:315e20bf-10da-...",
"thumbnail": {
"format": "image/jpeg",
"identifier": "photo1-thumb.jpg"
},
"relationship": "componentOf",
"active_manifest": "urn:uuid:8bb8ad50-ef2f-..."
}
]
Key Properties
- title (required): Usually filename
- format: MIME type (e.g.
image/jpeg
) - document_id / instance_id: From XMP metadata
- thumbnail: Thumbnail details
- active_manifest: Label of child manifest, if present
- relationship: How the ingredient relates (see below)
Ingredient Relationships
Value | Meaning |
---|---|
parentOf | The current asset is a derived version of this ingredient |
componentOf | This ingredient is combined to form the new asset |
inputTo | This ingredient was input to a process (e.g. AI model) that created it |
Validation for Ingredients
Ingredients may carry their own manifests. Que validates them when they are added.
Important
Ingredient validation does not imply the composed asset is valid. Each must be checked independently.
Example: Invalid Ingredient
{
"title": "E-sig-CA.jpg",
"format": "image/jpeg",
"relationship": "componentOf",
"validation_status": [
{
"code": "timeStamp.mismatch",
"explanation": "timestamp message imprint did not match"
},
{
"code": "claimSignature.mismatch",
"explanation": "claim signature is not valid"
}
]
}
Best Practices
- Keep ingredient manifests included whenever possible to retain provenance.
- Use relationships (
componentOf
,inputTo
) consistently. - Don’t ignore ingredient-level validation status.