Content Metadata
User-defined metadata is an arbitrary JSON structure that can be stored within a content object. The metadata can be modified as long as the content object has not been finalized. Query functionality provides efficient retrieval of subsets of the metadata.
Links
Example metadata with relative and absolute links:
{
"name": { "/": "./meta/titles/en" },
"titles": {
"en": "Loop the Hoop",
"de": "Greif den Reif",
"fr": "Le cerceau dans le berceau"
},
"directors": [
{ "/": "/qfab/hq__QmbWqTrE/meta/library/directors/Andrew Hooper" },
{ "/": "/qfab/hq__QmbWqTrE/meta/library/directors/Jackie Looper" }
],
"assets": {
"poster": { "/": "./files/images/poster-1080x768.jpg" },
"trailer": { "/": "/qfab/hq__6ABbaHWb/rep/playout/default/options.json" },
"main": { "/": "/qfab/hq__2wBPuKYi/rep/playout/default/options.json" },
},
"files": { ... }
}
Metadata may contain links to other metadata items, files, parts or even bitcode-generated information of the same or different content objects.
Relative links refer to information within the same content object. They are denoted with a starting ./ prefix
followed by the link type, called selector. The example on the right shows a metadata link in the name element
that refers to the English version of the title.
Absolute links point to items in another content object. They always start with /qfab/, followed by the hash
of the target content object and the link selector. In the example, the directors' information is actually stored
in another content object.
meta Links
Links to other parts of a content object's metadata. Metadata links may point to other links or metdata subtrees that contain links. However, circular dependencies are not permitted.
files Links
Example File Link
{ "/": "/qfab/hq__DzmzXsZuSxfN1yttYsJPLeYs14Ef8aHvNvW376MTVMt6NtNdiNY1NqaoW1SnPr7pVxEe1wr3Dy/files/images/poster.jpg" }
Links to a file in a file bundle.
rep Links
Example Rep Link
{ "/": "./rep/playout/default/options.json" }
Links to the rep API endpoint for a content object.
blob Links
Example Blob Link
{
"/": "./blob",
"data": "Y2xlYXIgZGF0YQ==",
"encryption": "cgck"
}
A blob link is a relative link with the blob selector, a data property that contains base64-encoded bytes, and
an optional "encryption" property:
none(default)cgck
Blob links are used to include small amounts of binary (and usually encrypted) data in metadata, and have it served in binary form (and optionally decrypted) by the fabric node just like content parts or files in a bundle. Use only in cases where the amount of data does not justify creating a separate part or a file bundle.
Auto-Update Links
Example auto-update link:
{
"/": "/qref/hq__ABC/files/images/poster.jpg",
"auto_update": {
"tag": "latest"
}
}
Content objects are immutable once finalized and published. This offers many advantages like simplified content distribution management, deterministic routing, content integrity proofs, etc. However, it makes change management to inter-dependent content objects more complex: an update in a given content object (achieved by creating a new content version) requires an update (with a new version) to each content object higher up in the content hierarchy...
To simplify this task, the content fabric offers auto-update links. They provide a single, but extremely useful function: they allow to retrieve all (directly and indirectly) referenced content objects in a hierarchy that have newer versions and hence need updates. In addition, the result includes the "bottom-up" order in which updates have to be made, as well as information about all the links that form the dependency graph. See Get Object & Update Graph.
Auto-update links are regular absolute links that contain a link property auto_update - see example on the
right. The value of the auto_update property is a JSON object that may be empty or contain a tag to denote the
desired version of the target content. For now only the tag latest is available, and will be used automatically
if not specified.
Get Metadata
Retrieve the user-defined metadata associated with the given content object in JSON form.
Get Metadata Subtree
Retrieve the user-defined metadata at the given path.
Get Metadata (JSON query)
Retrieve the user-defined metadata associated with the given content object in JSON form.
Get Metadata Subtree (JSON query)
Retrieve the user-defined metadata at the given path.
Merge Metadata
Merge the provided metadata with the existing metadata of the given content object.
Replace Metadata
Replace the existing metadata of the given content object.
Delete Metadata
Delete the existing metadata of the given content object.
Merge Metadata Subtree
Merge the provided metadata with the existing metadata at the given path.
Replace Metadata Subtree
Replace the existing metadata at the given path.
Delete Metadata Subtree
Delete the existing metadata at the given path.
Get Object & Update Graph
> Example result for content `hq__2ZFoswZSC9767e6dx1QMNjCJkP`:
Meta Change Notifications
Subscribe to and retrieve notifications for content metadata updates for the given content and metadata path.