Skip to content

Content Metadata

The Vimond platform provides the capability to add metadata to various objects such as assets, categories, lists, and product groups. Metadata in Vimond is stored as key/value pairs and is supported by a customized rule engine known as metadata definition. Each metadata field can have different definitions or rules.

A metadata entry consists of a name, value, language, and update time.

A metadata definition entry or rule specifies the characteristics of a field, such as its data type (string, number, date, etc.), whether it is required, and if it should be validated during asset/category/list/product group creation.

Additionally, the rule can enforce predefined values, limiting editorial staff to select from a dropdown list instead of entering free text. The rule can also define whether the field is protected or editable by editorial staff. These flexible rules enable the customization of each field for your specific usage scenarios.

Before adding new metadata to an asset or any other object, it is necessary to ensure that the metadata field has a definition; otherwise, the metadata creation will fail.

Here is a list of example metadata fields delivered with the platform so you got a reference point to some of the possible metadata fields you might want.

NameDatatypeDescription
titlestringTitle of asset/category
textstringShort description of the asset
production-yearnumberProduction year of asset
production-countrystringThe production origin country of the asset
original-titlestringOriginal title of movie/video (Some titles are translated into some languages)
genrestringThe genre of the asset
age-limitnumberRecommended age limit for viewing the asset, ex: 15 years
parental-guidancestringEx: Motion Picture Rating System and similar letter-based ratings
home-team-namestringApplicable for sports events
away-team-namestringApplicable for sports events
seasonnumberCan be the year for sports tournaments, and a number of Tv shows
leaguestringApplicable for sports events
description-longstringSynopsis or other longer descriptions of the asset
producerstringProducer of asset
directorstringDirector of asset
actorsstringList of actors in the asset
episodenumberepisode number in a season
studiostringStudio behind asset
tournamentstringApplicable for sports events
keywordsstringList of keywords
external-gerestringList of original genres provided by the content provider, every genre should be prefixed with a content provider identifier (Ex: dvb. 1000)
external-actor-idsstringList of external actor references, each reference should be prefixed with a content provider identifier (Ex: imdb.100)
external-director-idstringList of external director references, each reference should be prefixed with a content provider identifier (Ex: imdb.100)
external-producer-idstringList of external producer references, each reference should be prefixed with a content provider identifier (Ex: imdb.100)
seriesstringName of the series if the program belongs to a series
series-idstringSeries Id if the program belongs to a series
dtt-start-overnumberBoolean flag indicating if a live program is available for start-over (time-based buffer)
replaynumber1 if the program is a replay
premierenumber1 if the program is a premiere
highlightsnumber1 if the program is a highlight
dtt-video-propertiesstringVideo properties on the DTT channel
dtt-audio-propertiesstringAudio properties on the DTT channel
ratingsstringRatings
rating-overallnumberAverage rating

This is just a list of basic metadata definitions that we give on installation and all customers will generally have their own metadata fields they want added or they might have added to support what metadata they want to promote in the portal or use for content listing.

Protected metadata fields used by the VIA system

Section titled “Protected metadata fields used by the VIA system”

The protected metadata fields used by the VIA system serve crucial roles in managing assets, categories, lists, and product groups. These fields provide essential information for various functionalities and integrations within the system. Here is an overview of the protected metadata fields and their usage:

NameDatatypeDescription
titlestringRepresents the title of an asset, category, list, or product group
description-shortstringProvides a shorter description of an asset, category, list, or product group.
image-packstringContains a reference to the Image Services image pack ID associated with the asset, category, list, or product group.
unique-category-idstringUsed by the Feed Ingest functionality to map external categories to VIA categories.
external-asset-idstringUsed by the Feed Ingest functionality to map external assets to VIA assets.
media-feed-idstringRepresents the ID of the Feed Ingest feed where the asset originated.
import-job-idstringIdentifies the ID of the Feed Ingest job (batch) from which the asset originated.
publisher-idnumberRepresents the ID of the company that owns the content.

These protected metadata fields ensure consistency and accurate data management within the VIA system.

The data model for metadata in Vimond follows a hierarchical structure. The metadata definition is used to define rules for metadata fields. The appliesTo property in the metadata definition determines whether the definition applies to all possible entity types (Asset, Category, List, Product Group) or only a specific one. This allows you to have different metadata fields and requirements for your Assets, Categories, Lists, and Product Groups. By using appliesTo:all you can also add metadata fields and requirements across all Assets, Categories, Lists, and Product Groups.

Here is an illustration of the metadata data model:

image

Each Asset, Category, List, or Product Group can have 0 to many metadata entries.
Each metadata entry is backed by exactly one metadata definition (rule).

Before working with metadata and adding new fields, it’s recommended to review the existing metadata definitions for your service. This can be done using the metadata definition API (API Reference):

GET /api/metadata/definitions
curl --request GET \
--url https://{tenant}.rest-api.{region}.vmnd.tv/api/metadata/definitions \
--header 'accept: application/json;v=3'

The response will be in JSON format and provide a list of all existing metadata fields and their definitions.

{
"metadataDefinition": [
{
"name": "title",
"title": "Title",
"description": "The title of the asset",
"sortOrder": 1,
"required": true,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "all",
"multilingual": true,
"isProtected": false,
"defaultVisible": true,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "description-short",
"title": "Description",
"description": "Shorter description of asset",
"sortOrder": 5,
"required": false,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "all",
"multilingual": true,
"isProtected": false,
"defaultVisible": true,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "image-pack",
"title": "Image Pack",
"description": "Reference to Image services image pack id",
"sortOrder": 88,
"required": false,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "all",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "unique-category-id",
"title": "unique-category-id",
"description": "Used by AssetImporter to map categories",
"sortOrder": 101,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "all",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "external-asset-id",
"title": "external-asset-id",
"description": "Used by AssetImporter to map assets",
"sortOrder": 102,
"required": false,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "all",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "publisher-id",
"title": "Company ID",
"description": "The id of the company that owns this content",
"sortOrder": 103,
"required": false,
"searchable": true,
"fieldType": "TEXT",
"dataType": "NUMBER",
"enabled": true,
"hidden": false,
"appliesTo": "all",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "double",
"filterable": true,
"excluded": false
},
{
"name": "monetization-model",
"title": "monetization-model",
"description": "The monetization model",
"sortOrder": 62,
"required": false,
"searchable": true,
"fieldType": "SELECT",
"dataType": "STRING",
"options": "free,subscription,ad",
"enabled": true,
"hidden": false,
"appliesTo": "category",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "parent-asset-id",
"title": "parent-asset-id",
"description": "parent-asset-id",
"sortOrder": 104,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "NUMBER",
"enabled": true,
"hidden": false,
"appliesTo": "asset",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "double",
"filterable": true,
"excluded": false
},
{
"name": "labels",
"title": "Labels",
"description": "Labels",
"sortOrder": 0,
"required": false,
"searchable": true,
"fieldType": "AUTOCOMPLETE",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "all",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "panelType",
"title": "Container Type",
"description": "Decides which container will be used in the client",
"sortOrder": 3,
"required": false,
"searchable": false,
"fieldType": "SELECT",
"dataType": "STRING",
"options": "Hero Carousel, Tag Gallery, Content Gallery, Search",
"enabled": true,
"hidden": false,
"appliesTo": "contentpanel",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "people",
"title": "People",
"description": "People",
"sortOrder": 0,
"required": false,
"searchable": true,
"fieldType": "AUTOCOMPLETE",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "all",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "mimir-id",
"title": "mimir-id",
"description": "ID of asset in Mimir",
"sortOrder": 102,
"required": false,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "asset",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "io-project-id",
"title": "IO project id",
"description": "IO project id",
"sortOrder": 105,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": true,
"appliesTo": "asset",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "preview_url_mp4",
"title": "Preview url for mp4",
"description": "Preview url for mp4",
"sortOrder": 106,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": true,
"appliesTo": "contentpanel",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "preview_url_hls",
"title": "Preview url for hls",
"description": "Preview url for hls",
"sortOrder": 107,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": true,
"appliesTo": "contentpanel",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "panel-type",
"title": "Panel type",
"description": "The paneltype for a contentpanel",
"sortOrder": 2,
"required": false,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "contentpanel",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "container_type",
"title": "Container type",
"sortOrder": 0,
"required": false,
"searchable": true,
"fieldType": "SELECT",
"dataType": "STRING",
"options": "Shows, Films, Clips, Menu, Promotion, Asset-teaser, Category-teaser, URL-teaser",
"enabled": true,
"hidden": false,
"defaultValue": "Shows",
"appliesTo": "all",
"multilingual": true,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "external-product-id",
"title": "External Product Id",
"description": "External Product Package Id",
"sortOrder": 30,
"required": false,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "productgroup",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "FreezeOrder.Enabled",
"title": "FreezeOrderEnabled",
"description": "Needed for freeze orders",
"sortOrder": 0,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"defaultValue": "100.0",
"appliesTo": "productgroup",
"multilingual": true,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "FreezeOrder.StartDate",
"title": "FreezeOrderStartDate",
"description": "Needed for freeze orders",
"sortOrder": 0,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"defaultValue": "100.0",
"appliesTo": "productgroup",
"multilingual": true,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "FreezeOrder.EndDate",
"title": "FreezeOrderEndDate",
"description": "Needed for freeze orders",
"sortOrder": 0,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"defaultValue": "100.0",
"appliesTo": "productgroup",
"multilingual": true,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "preview-asset-id",
"title": "Preview asset id",
"description": "Preview asset id",
"sortOrder": 108,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "contentpanel",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "VatCalculation.TaxBasisPercentage",
"title": "TaxBasisPercentage",
"description": "Needed for VAT calculations",
"sortOrder": 0,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"defaultValue": "100.0",
"appliesTo": "productgroup",
"multilingual": true,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "publisher",
"title": "Publisher",
"description": "The publisher of a channel",
"sortOrder": 1,
"required": false,
"searchable": true,
"fieldType": "AUTOCOMPLETE",
"dataType": "STRING",
"options": "{\"url\":\"/cms/api/editorial/search?type=autocomplete\", \"queryParams\": [{\"key\":\"term\", \"value\":\"value\"}, {\"key\":\"field\", \"value\":\"field\"}]}",
"enabled": true,
"hidden": true,
"appliesTo": "all",
"multilingual": false,
"isProtected": true,
"defaultVisible": true,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "alias",
"title": "Alias",
"description": "Used to name content-panels",
"sortOrder": 0,
"required": false,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "contentpanel",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "import-job-id",
"title": "import-job-id",
"description": "The id of the job (batch) where the program originated",
"sortOrder": 99,
"required": false,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "asset",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "media-feed-id",
"title": "media-feed-id",
"description": "The id of the media feed where the program originated",
"sortOrder": 100,
"required": false,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "asset",
"multilingual": false,
"isProtected": true,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": true,
"excluded": false
},
{
"name": "age-rating",
"title": "Age Rating",
"description": "Rating of the content",
"sortOrder": 0,
"required": false,
"searchable": false,
"fieldType": "SELECT",
"dataType": "STRING",
"options": "A, 6+, 12+, 18+",
"enabled": true,
"hidden": false,
"appliesTo": "asset",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
},
{
"name": "popularity",
"title": "Popularity",
"description": "Popularity of the content",
"sortOrder": 0,
"required": false,
"searchable": false,
"fieldType": "TEXT",
"dataType": "NUMBER",
"enabled": true,
"hidden": false,
"appliesTo": "asset",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "double",
"filterable": true,
"excluded": false
},
{
"name": "tags",
"title": "Tags",
"description": "Comma separated values to describe the content",
"sortOrder": 0,
"required": false,
"searchable": true,
"fieldType": "AUTOCOMPLETE",
"dataType": "STRING",
"options": "Alex,Color,Cuisine,Documentary,Locally Producted,Real Madrid,alex,animals,barry,birds,dinosaurs,documentary,exclusive,knut,local_production,spain,sports,test",
"enabled": true,
"hidden": false,
"appliesTo": "all",
"multilingual": false,
"isProtected": false,
"defaultVisible": false,
"solrFieldTypeVal": "text",
"filterable": false,
"excluded": false
}
]
}

Adding or Modifying Metadata Definition Fields

Section titled “Adding or Modifying Metadata Definition Fields”

To add a new field or modify an existing one, you can use the following API endpoint (API Reference):

PUT /api/metadata/definition/{field}
curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/metadata/definition/title \
--header 'accept: application/json;v=3' \
--header 'content-type: application/json;v=3' \
--data '
{
"required": true,
"searchable": true,
"fieldType": "TEXT",
"dataType": "STRING",
"enabled": true,
"hidden": false,
"appliesTo": "all",
"multilingual": true,
"isProtected": true,
"defaultVisible": true,
"solrFieldTypeVal": "text",
"filterable": true,
"title": "Title",
"description": "The title of the Asset",
"sortOrder": 1
}
'

This endpoint allows you to create new fields or update existing ones. However, please exercise caution when modifying existing fields, as it may impact Assets, Categories, Lists, or Product Groups that already have metadata entries for that field type.

❗️ Note: It is important to carefully consider the implications before making changes to existing fields to avoid any disruptions to the system.

When developing end-user applications, it is recommended to refer to the Content Discovery guide, which provides information on using search endpoints to search, filter, and retrieve metadata in different languages for end-users.

For machine-to-machine integrations, content metadata can be accessed using the expand=metadata parameter in the assets endpoint based on category (API Reference). This parameter allows retrieving metadata along with asset data.

The metadata returned for assets can provide information such as movie/series actors, production year, and more.

Here’s an example of a machine-to-machine API request using the expand=metadata parameter:

GET /api/:platform/asset/:assetId?expand=metadata
curl -X GET \
-H "Accept: application/json" \
"https://api.yoursite.com/api/:platform/asset/:assetId?expand=metadata"

The response will be in JSON format and include asset data along with its associated metadata

{
"uri": "/api/web/asset/179937",
"id": 179937,
"categoryId": 134398,
"channelId": 0,
"profileId": 0,
"viewCount": 0,
"commentsUri": {
"uri": "/api/web/asset/179937/comments"
},
"ratingsUri": {
"uri": "/api/web/asset/179937/ratings"
},
"copyLiveStream": false,
"aspect16x9": true,
"drmProtected": false,
"live": false,
"publishedPlatforms": [],
"itemsUri": {
"uri": "/api/web/asset/179937/items",
"items": []
},
"categoryUri": {
"uri": "/api/web/category/134398",
"properties": {},
"assets": [],
"articleList": {
"articles": []
},
"sectionUri": {},
"metadata": {
"entries": {},
"empty": true
},
"ancestorCategories": {
"categories": []
},
"available": false,
"children": [],
"categoriesUri": {
"categories": []
},
"assetsUri": {
"assets": []
}
},
"playbackUri": {
"uri": "/api/web/asset/179937/play",
"playbackItems": []
},
"metadata": {
"uri": "/api/metadata/asset/179937",
"entries": {
"image-pack": [
{
"lang": "*",
"value": "626bd9a0e4b098de8e5bbecc-1651235250549"
}
],
"publisher-id": [
{
"lang": "*",
"value": "2"
}
],
"description-short": [
{
"lang": "en_US",
"value": "Stockholm City Part 2"
}
],
"title": [
{
"lang": "en_US",
"value": "Stockholm"
}
]
},
"empty": false
},
"encoderGroupId": 0,
"archive": false,
"deleted": false,
"distributed": 0,
"createTime": "2022-04-29T12:25:33Z",
"updateTime": "2023-01-25T09:35:39Z",
"itemsPublished": false,
"playbackStrategy": "EXTERNAL",
"labeledAsFree": true,
"externalPlaybacks": [],
"parent": true,
"onDemandTimeBegin": 0.0,
"onDemandTimeEnd": 0.0,
"imageVersions": {
"images": []
},
"title": "Stockholm",
"liveBroadcastTime": "2022-04-29T12:25:33Z",
"description": "Stockholm City Part 2",
"duration": 5.96,
"autoEncode": false,
"autoPublish": false,
"autoDistribute": false,
"assetTypeId": 0,
"showInEpg": false,
"hostProgramId": 179937,
"durationLong": 6,
"platformPublishInfo": [
{
"id": 905348,
"platformId": 1,
"assetId": 179937,
"platformName": "web",
"livePublished": true,
"onDemandPublished": true,
"downloadable": false,
"publish": "2022-04-29T12:29:15Z"
},
{
"id": 905349,
"platformId": 27,
"assetId": 179937,
"platformName": "app",
"livePublished": true,
"onDemandPublished": true,
"downloadable": false,
"publish": "2022-04-29T12:29:15Z"
}
],
"programViewCount": 0,
"productUri": {
"uri": "/api/web/asset/179937/productgroups",
"productPaymentsUri": {}
},
"hostAssetId": 179937,
"productGroupAccessType": "FREE_NOLOGIN"
}

If you are only interested in the metadata you can do a more direct lookup for this with the API

GET /api/metadata/asset/:assetId

Ref API reference

or search for assets with a specific metadata field/value using

GET /api/metadata/lookup/assets/:field

ref API reference

Retrieving metadata for a category follows a similar approach to getting metadata for assets.

For end-user applications, refer to the Content Discovery guide to understand how to use search endpoints for retrieving metadata in different languages.

For machine-to-machine integrations, metadata for categories can be accessed using the expand metadata parameter in the category lookup endpoint ( API Reference). The metadata definitions applicable to the category will be included in the response.

Example curl and response:

GET /api/:platform/category/:categoryId?expand=metadata
curl -X GET \
-H "Accept: application/json" \
"https://api.yoursite.com/api/:platform/category/:categoryid?expand=metadata"
{
"category": {
"@id": "134398",
"@uri": "/api/web/category/134398",
"level": "SEASON",
"levelTypeId": 10,
"parent": {
"@id": "134360",
"@uri": "/api/web/category/134360",
"level": "SHOW",
"levelTypeId": 5,
"parent": {
"@id": "134321",
"@uri": "/api/web/category/134321",
"level": "SHOW_CATALOG",
"levelTypeId": 9,
"parent": {
"@id": "134319",
"@uri": "/api/web/category/134319",
"level": "ENTERTAINMENT",
"levelTypeId": 7,
"parent": {
"@id": "134318",
"@uri": "/api/web/category/134318",
"level": "COMPANY",
"levelTypeId": 6,
"parent": {
"@id": "999",
"@uri": "/api/web/category/999",
"level": "TOP_LEVEL",
"levelTypeId": 1,
"priority": 0,
"properties": "",
"title": "Vimond",
"favoritable": false,
"shareable": true,
"searchable": true,
"assets": "",
"articles": "",
"metadata": {
"@uri": "/api/metadata/category/999"
},
"categories": {
"@uri": "/api/web/category/999/categories"
},
"approvalStatus": "APPROVED",
"assetSortBy": "asset title",
"activationStatus": "ACTIVE",
"published": true,
"updateTime": "2021-11-03T09:29:53Z",
"available": true
},
"parentId": 999,
"priority": 1,
"properties": "",
"title": "Example company",
"favoritable": false,
"shareable": true,
"searchable": true,
"assets": "",
"articles": "",
"metadata": {
"@uri": "/api/metadata/category/134318"
},
"categories": {
"@uri": "/api/web/category/134318/categories"
},
"approvalStatus": "APPROVED",
"assetSortBy": "asset title",
"activationStatus": "ACTIVE",
"published": true,
"updateTime": "2023-01-19T16:21:12Z",
"available": true
},
"parentId": 134318,
"priority": 1,
"properties": "",
"title": "Entertainment",
"favoritable": false,
"shareable": true,
"searchable": true,
"assets": "",
"articles": "",
"metadata": {
"@uri": "/api/metadata/category/134319"
},
"categories": {
"@uri": "/api/web/category/134319/categories"
},
"approvalStatus": "APPROVED",
"assetSortBy": "asset title",
"activationStatus": "ACTIVE",
"published": true,
"updateTime": "2023-01-19T16:21:29Z",
"available": true
},
"parentId": 134319,
"priority": 1,
"properties": "",
"title": "TV Shows",
"favoritable": false,
"shareable": true,
"searchable": true,
"assets": "",
"articles": "",
"metadata": {
"@uri": "/api/metadata/category/134321"
},
"categories": {
"@uri": "/api/web/category/134321/categories"
},
"approvalStatus": "APPROVED",
"assetSortBy": "asset title",
"activationStatus": "ACTIVE",
"published": true,
"updateTime": "2023-01-19T16:22:10Z",
"available": true
},
"parentId": 134321,
"priority": 1,
"properties": "",
"title": "Nordic Cities",
"favoritable": false,
"shareable": true,
"searchable": true,
"assets": "",
"articles": "",
"metadata": {
"@uri": "/api/metadata/category/134360"
},
"categories": {
"@uri": "/api/web/category/134360/categories"
},
"approvalStatus": "APPROVED",
"assetSortBy": "asset title",
"activationStatus": "ACTIVE",
"published": true,
"updateTime": "2023-01-24T10:52:30Z",
"available": true
},
"parentId": 134360,
"priority": 1,
"properties": "",
"title": "Season 01 Sweden",
"programTypeId": 130196,
"favoritable": false,
"shareable": true,
"searchable": false,
"assets": {
"@uri": "/api/web/category/134398/assets"
},
"articles": "",
"metadata": {
"@uri": "/api/metadata/category/134398",
"image-pack": {
"@xml:lang": "*",
"$": "63d2e681e4b05c6cea9786ed-1674765958427"
},
"publisher-id": {
"@xml:lang": "*",
"$": "2"
},
"title": {
"@xml:lang": "en_US",
"$": "Season 01 Sweden"
}
},
"categories": {
"@uri": "/api/web/category/134398/categories"
},
"approvalStatus": "APPROVED",
"assetSortBy": "asset title",
"activationStatus": "ACTIVE",
"published": false,
"updateTime": "2023-01-25T09:34:36Z",
"available": true
}
}

If only the metadata is required, a direct lookup can be performed using the following API endpoint:

GET /api/metadata/category/:categoryId

ref API reference

… or search for categories with a specific metadata field/value using

GET /api/metadata/lookup/categories/:field

ref API reference

Content panels also support metadata, providing additional information about the panel’s content. Metadata for content panels can be retrieved by using the expand=metadata parameter in the content panel endpoint.

Example curl and response:

GET /api/contentpanel/element/:contentpanelId?expand=metadata
curl -X GET \
-H "Accept: application/xml" \
"https://api.yoursite.com/api/contentpanel/element/:contentpanelId?expand=metadata"
{
"uri": "/api/contentpanel/element/80376",
"id": 80376,
"metadata": {
"entries": {
"title": [
{
"lang": "en_US",
"value": "Main Carousel"
}
],
"description-short": [
{
"lang": "en_US",
"value": "This is the main carousel used on the demo portal"
}
],
"tags": [
{
"lang": "*",
"value": "carousel"
}
]
},
"empty": false
},
"panelName": "koRnrliaIp",
"sortIndex": 1,
"contentType": {
"value": "carousel"
},
"contentKey": "cu3zzI8W6q",
"title": "Main Carousel",
"text": "This is the main carousel used on the demo portal",
"imageUrl": "https://sales.image-service.eu-north-1-prod.vmnd.tv/api/v2/img/64876a3ce4b0663d3d107bd6",
"imagePackId": "64876a3ce4b0663d3d107bd6",
"isPublished": false,
"archived": false,
"createTime": "2021-03-25T09:23:37Z"
}

Metadata can also be obtained for product groups. This can be useful for providing additional information about a product besides price and period.

To retrieve metadata for all product groups or a specific product group, the expand=metadata parameter can be used.

All product groups

GET /api/web/productgroup?expand=metadata
curl -X GET \
-H "Accept: application/json" \
"https://api.yoursite.com/api/web/productgroup?expand=metadata"

Single product group

GET /api/web/productgroup/:productgroupId?expand=metadata
curl -X GET \
-H "Accept: application/json" \
"https://api.yousite.com/api/web/productgroup/:productgroupId?expand=metadata"

Example response for a single product group call:

{
"productGroup": {
"@id": "1221",
"@uri": "/api/web/productgroup/1221",
"description": "Se PGA Touren. Over 100 turneringer om året og få adgang til ekstra-features.",
"name": "C More Golf DK",
"sortIndex": 1,
"categories": {
"@uri": "/api/web/productgroup/1221/categories"
},
"accessType": "PAID",
"metadata": {
"productgroup-customconf": {
"@xml:lang": "*",
"$": "{\"theme\":\"sea-green\",\"signup\":{\"text\":\"Prøv nu\",\"link\":null},\"pricing\":null,\"sidebar\":{\"subheading\":\"Det her indgår\",\"highlights\":[\"Det bedste golf fra PGA\",\"Ingen bindning\",\"Ingen reklamer\"]}}"
},
"productgroup-description": {
"@xml:lang": "*",
"$": "Det bedste golf fra PGA på C More"
},
"productgroup-slug": {
"@xml:lang": "*",
"$": "c-more-golf-dk"
},
"productgroup-title": {
"@xml:lang": "*",
"$": "C More Golf"
}
},
"products": {
"@uri": "/api/web/productgroup/1221/products"
},
"productGroupAccesses": {
"@uri": "/api/web/productgroup/1221/accesses"
},
"saleStatus": "ENABLED",
"checkAccessForProgramRelations": false
}
}

Additionally, it is possible to search for product groups with a specific metadata field/value using the following API endpoint:

GET /api/metadata/lookup/productgroups/:field

ref API reference

This allows searching for product groups based on specific metadata criteria.

The provided examples and explanations offer insights into accessing and utilizing metadata in the Vimond platform for different types of objects.