OpenTV ENTera & OpenTV Platform Documentation

Ingesting a node

Request

To create a node (that is, a collection of VOD and/or catch-up content), send a POST request to:

Bash
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 providerId and providerResourceId

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-specific metadata blocks, each of which has:

    • locale* – the locale for the metadata element. If locale is set to none, the metadata block that it applies to is the default – it is the one that is used if there is no metadata block 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 same position, 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 providerId and providerResourceId

  • 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 (true or false)

    • longTermCatchUpSupport – enables or disables long-term catch-up for the items in the node (true or false)

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:

JSON
{
  "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.