There are different ways on making use of the Metadata model depending on a OTT or Broadcaster business model.

The intention in the offer model is that:

  • descriptiveContentRef represents what the offer is
  • scopeContentRefs represents how you can watch the offer (through associated assets and their streaming urls)
  • contentRefs is the union set of descriptiveContentRef + scopeContentRefs

This means that you can represent:

  • single title offers with the same contentRef in both descriptiveContentRef and scopeContentRefs
  • boxsets by having a descriptiveContentRef that points to the content describing the boxset and scopeContentRefs to the individual items in the boxset.
  • Linear airings of a title with an offer having a descriptiveContentRef pointing to the title metadata but a scopeContentRefs pointing to the station through which the linear stream will show the title at the offer window

On the list below we just want to leverage a few examples on how the data can be stored for simple/easier discoverability of content.

VOD Single Title Offer

This is the most basic use of an offer, this apply to both TVOD or SVOD, based on the priced or subscriptionCodes, respectively.

Single title offer

VOD Boxsets Offer

In this case we are talking about defining a boxset or package for a predefined collection, where the descriptiveContentRef points to the Collection and the scopeContentRefs pointing to all the individual items

Collection offer

{
  "contents": [{
    "ref": "hbo:bruce-willis-boxset-1",
    "owner": "hbo",
    "name": "bruce-willis-boxset-1",
    "type": "collection",
    "title": "Best of Bruce Willis Boxset"
  }, {
    "ref": "hbo:die-hard",
    "owner": "hbo",
    "name": "die-hard",
    "type": "movie",
    "title": "Die Hard"
  }, {
    "ref": "hbo:harts-war",
    "owner": "hbo",
    "name": "harts-war",
    "type": "movie",
    "title": "Harts War"
  }, {
    "ref": "hbo:bandits",
    "owner": "hbo",
    "name": "bandits",
    "type": "movie",
    "title": "Bandits"
  }, {
    "ref": "hbo:the-seige",
    "owner": "hbo",
    "name": "the-seige",
    "type": "movie",
    "title": "The Seige"
  }]
}
{
  "offers": [{
    "ref": "hbo:collection-offer",
    "owner": "hbo",
    "name": "collection-offer",
    "type": "ondemand",
    "title": "Best of Bruce Willis Boxset",
    "price": {
        "GBP": 3.99
    },
    "descriptiveContentRef": "hbo:bruce-willis-boxset-1",
    "scopeContentRefs": ["hbo:die-hard","hbo:harts-war","hbo:bandits","hbo:the-seige"],
    "contentRefs": ["hbo:bruce-willis-boxset-1","hbo:die-hard","hbo:harts-war","hbo:bandits","hbo:the-seige"]
  }]
}

Season Offer

Another similar example, where the subscriptionCodes or price can be tied to a whole season.

Season offer

{
  "contents": [{
    "ref": "hbo:got-season-1",
    "owner": "hbo",
    "name": "got-season-1",
    "type": "season",
    "title": "Game of Thrones Season 1"
  }, {
    "ref": "hbo:got-s01-e01",
    "owner": "hbo",
    "name": "got-s01-e01",
    "type": "episode",
    "title": "Winter Is Coming"
  }, {
    "ref": "hbo:got-s01-e02",
    "owner": "hbo",
    "name": "got-s01-e02",
    "type": "episode",
    "title": "The Kingsroad"
  }, {
    "ref": "hbo:got-s01-e03",
    "owner": "hbo",
    "name": "got-s01-e03",
    "type": "episode",
    "title": "Lord Snow"
  }, {
    "ref": "hbo:got-s01-e04",
    "owner": "hbo",
    "name": "got-s01-e04",
    "type": "episode",
    "title": "Criples, Bastards, and Broken Things"
  }]
}
{
  "offers": [{
    "ref": "hbo:season-offer",
    "owner": "hbo",
    "name": "season-offer",
    "type": "ondemand",
    "title": "Game of Thrones Season 1",
    "price": {
        "GBP": 5.99
    },
    "descriptiveContentRef": "hbo:got-season-1",
    "scopeContentRefs": ["hbo:got-s01-e01","hbo:got-s01-e02","hbo:got-s01-e03","hbo:got-s01-e04"],
    "contentRefs": ["hbo:got-season-1","hbo:got-s01-e01","hbo:got-s01-e02","hbo:got-s01-e03","hbo:got-s01-e04"]
  }]
}

EPG Schedule

Linear airings of a title with an offer having a descriptiveContentRef pointing to the title metadata but a scopeContentRefs pointing to the station through which the linear stream will show the title at the offer window

EPG Schedule

{
  "contents": [{
    "ref": "hbo:HBO1",
    "owner": "hbo",
    "name": "HBO1",
    "type": "station",
    "title": "HBO 1"
  }, {
    "ref": "hbo:die-hard",
    "owner": "hbo",
    "name": "die-hard",
    "type": "movie",
    "title": "Die Hard"
  }, {
    "ref": "hbo:got-s01-e01",
    "owner": "hbo",
    "name": "got-s01-e01",
    "type": "episode",
    "title": "Winter Is Coming"
  }]
}
{
  "channels": [{
    "ref": "hbo:satellite-01",
    "owner": "hbo",
    "name": "satellite-01",
    "title": "HBO Channel 101 satellite",
    "stationRef": "hbo:HBO1"
  }]
}
{
  "offers": [{
    "ref": "hbo:program-airing-offer1",
    "owner": "hbo",
    "name": "program-airing-offer1",
    "type": "linear",
    "availabilityStartAt":"2016-01-01T12:00:00.000Z",
    "availabilityEndAt":"2016-01-01T12:30:00.000Z",
    "descriptiveContentRef": "hbo:HBO1",
    "scopeContentRefs": ["hbo:die-hard"],
    "contentRefs": ["hbo:HBO1","hbo:die-hard"]
  }, {
    "ref": "hbo:program-airing-offer2",
    "owner": "hbo",
    "name": "program-airing-offer2",
    "type": "linear",
    "availabilityStartAt":"2016-01-01T12:30:00.000Z",
    "availabilityEndAt":"2016-01-01T13:00:00.000Z",
    "descriptiveContentRef": "hbo:HBO1",
    "scopeContentRefs": ["hbo:got-s01-e01"],
    "contentRefs": ["hbo:HBO1","hbo:got-s01-e01"]
  }]
}

Linear EPG Schedule