Request
To create a node (that is, a collection of VOD and/or catch-up content), send a POST request to:
https://<host>:<port>/metadata/content/v1/nodes/
Nodes and content groups are both used for grouping content. However, content groups are more flexible and powerful.
For example, a content item can only belong to one node, whereas it can belong to multiple content groups.
Also, a content group can consist of channels.
Ingesting a node does not associate any content with it. To associate content with the node, see Ingesting aa node link.
Headers
-
Content-Type: application/json
Mandatory arguments
All of the following arguments are part of the request body:
-
Either:
-
id– the ID of the node, or -
Both
providerIdandproviderResourceId
-
Other arguments
-
name– the node’s name -
description– a description of the node -
start– the node’s validity start date, in ISO 8601 format up to the second and including the “Z” GMT time zone indicator. -
end– the node’s validity end date, in ISO 8601 format up to the second and including the “Z” GMT time zone indicator. -
metadataSet– a set of locale-specificmetadatablocks, each of which has:-
locale* – the locale for themetadataelement. If locale is set to none, themetadatablock that it applies to is the default – it is the one that is used if there is nometadatablock for the user's locale. -
metadata* – a block containing one or more key/value pairs in the following form:JSON[{ "key": "<key_name>", "value": "<value>" }]You can add whatever keys you require. However, the following values have significance in OpenTV Platform:
-
Title– the node title -
Rating– the rating (score) for the node
-
-
-
position– the node’s position relative to its sibling nodes (integer, lowest first). If two nodes have the sameposition, their order cannot be guaranteed. -
parentRef– for a child node, a reference to the parent node. This is either-
id– the ID of the parent node, or -
Both
providerIdandproviderResourceId
-
-
orderingFields– if set, these tailor the return order of the node’s items. You can specify one or more such fields. -
timeShifting– enables or disables short-term and/or long-term catch-up. It contains the following:-
shortTermCatchUpSupport– enables or disables short-term catch-up for the items in the node (trueorfalse) -
longTermCatchUpSupport– enables or disables long-term catch-up for the items in the node (trueorfalse)
-
The following fields are set internally by CPM and should not be used in this request:
-
creationDate -
lastModificationDate -
self -
statusPerExportSet -
preferenceSet -
lastContentAdded
Example
A POST request with this payload creates a new node for movies that is a child of a node called vod_catalogue:
{
"id": "movies",
"name": "Movies",
"start": "2025-05-31T06:10:30Z",
"end": "2027-05-31T06:10:30Z",
"metadataSet": [
{
"locale": "en_GB",
"metadata": [
{
"key": "Title",
"value": "Movies"
}
]
}
],
"position": 1,
"parentRef": {
"id": "vod_catalogue"
},
}
Response
A successful request returns an HTTP 201 status. The response body contains the URI of the newly-created node.
A bad request returns an HTTP 400 status.
See also
For full details of this API, see Content and Product Manager (CPM) API documentation: content v1.