Skip to main content
Skip table of contents

Live content discovery

Summary

A usual requirement of client UI applications is to retrieve live content metadata, either in full to populate a grid/list guide, or to enhance and extend metadata retrieved from the broadcast stream itself.

The requests required and how the data is used will depend on the requirements of the deployment. Some deployment examples are as follows:

  • STB client retrieves the channel list and a few days of event data from a broadcast stream (for example, DVB-C). The event data should be enhanced and extended to have, for example, a 30 day EPG with rich metadata.
  • OTT STB or open device needs to retrieve the complete channel list, subscription information, and event data OTT from the OpenTV Platform.
  • An open device acting as a companion device to a Gateway STB retrieves the channel list from the gateway, but needs to retrieve all event data and subscription data from the OpenTV Platform.

Data models

The basic data models involved in these use cases are described below. All this data can be found in the Metadata Server (MDS). Product subscription data is found in the Service Delivery Platform (see Subscription data).

Service

Also known as a Channel, a service represents a broadcast channel and contains metadata about the channel, such as channel number, network location (for example, CDN url for OTT), name, and logo url. A service can contain one or more technical entities, which represent the different delivery mechanisms available such as broadcast and adaptive OTT streams.

Service data model
NameTypeDescriptionLocalisedAlways available
_idString

Internal identifier for the object.

NoYes
activeBooleanWhether the channel is active.NoYes
CarryingNetworkArray of stringsList of values representing the list of DVB triplets linked to this channel.
The decimal value calculation according to DVB triplet is customer dependent.
NoYes
catchUpSupportBooleanWhether the operator supports catch-up events on this channel.NoYes
CategoriesArray of strings

A list of keywords classifying the content of the channel.
CMS supports these keywords:

  • Action
  • Action-Adventure
  • Adult
  • Adventure
  • Children
  • Comedy
  • Documentary
  • Drama
  • EnEspanol
  • Family
  • Horror
  • International
  • Kids-Family
  • Library
  • NewRelease
  • Romance
  • ScienceFiction
  • SciFi-Horror
  • Sport
  • Suspense
  • Suspense-Thriller
  • ThreeDayRental
  • Thriller
  • Uncensored
  • War
NoNo
companyIdStringThe ID of the broadcaster company to which the channel is attached.

This field is not required, but the CMS always populates it.

NoNo
DescriptionStringA description of the channel, from the CMS Service EPG key Description.YesNo
drmInstanceNameStringA name that uniquely identifies the DRM system that manages access to this channel.
For channels protected by CAS (not DRM), this attribute is not present.
NoNo
drmIdStringThe identifier of the channel used by the DRM system that managies access to this channel.
Values of drmId will only be unique within a particular DRM instance. A drmId value will always be present when a drmInstanceName value is supplied.
For channels protected by CAS (not DRM), this attribute is not present.
NoNo
idStringThe CMS's identifier for the object.NoYes
localeStringThe locale used for the object's localisable fields. NoNo
longNameStringThe channel’s long name, for example, “The Biography Channel”.

This field is not required, but the CMS always populates it.

This field is not localised. Multi-language clients should use the Title field instead.

NoNo
NetworkLocationString

The location of the A/V stream of the channel on the network. For adaptive streaming, this will be the channel's URL.
In case of Harmonic OS, the value must be of the form:

http://<delivery-ip>/Content/
HLS/Live/Channel(<channel-name>)
/index.m3u8
NoNo
PrivateMetadataStringUsed to pass data directly from the operator to the end-user device without any CMS/SDP processing.
One possible use is to pass a list of keyword/value pairs, separated by semi-colons.
NoNo
profileRefStringThe identifier of the profile that applies to this channel.NoNo
PromoImagesArray of stringsA list of promo image URLs for the channel.
The Metadata Server does not validate the format of this field’s value, and does not attempt to access the URLs to verify the existence of the image files.
NoNo
productRefsArray of stringsA list of the IDs of the products that offer this channel.NoNo
providerStringThe identifier of the metadata provider, from the id of the export's CMSBtvData element.NoYes
Rating.codeStringParental rating code (from CMS).NoYes
Rating.precedenceIntegerQuantitative rating value.NoYes
Rating.nameStringLocalised name for the rating, for example, Adult or Adulto.YesYes
shortNameStringA short name for the channel, or its call letters.NoNo
startOverSupportBooleanWhether the operator supports start-over events on this channel.NoYes
TitleStringThe full name of the channel.

The CMS mandates that this field will be populated for at least one locale-form of each channel.

YesNo
tvChannelIntegerThe channel number to be presented to the end user.NoYes
typeStringPresent on an editorial channel. If the channel originates from the CMS ingest this will be set to BTV.NoYes
xmlStringThe type of object. Always editorial.NoYes
nls.TitleStringNative language support for the title field. Allows correct sorting for a language, rather than relying on utf-8 ordering for sort.YesNo

9 reads

Programme

Also known as an Event, a programme represents a content item shown on a specific channel at a specific point in time (its schedule/period). Its metadata contains its schedule information, which channel it is on, if it's available as catchup or start-over, and usually duplicates most of its parent content information.

Programme data model
NameTypeDescriptionLocalisedAlways available
_idStringInternal identifier for the object.NoYes
ActorsArray of stringsThe actors associated with the programme.NoNo
AspectString

The aspect ratio.
Examples:

4:3
16:9
Widescreen
NoNo
AudioArray of strings

A list of “locale-type” patterns representing the audio streams available for this content.

  • locale: three-letter ISO language code
  • type: VisualImpaired or Standard

For example:

"Eng-Standard",
"Eng-VisualImpaired"'
"Fra-Standard"
NoNo
AudioModeString

The audio mode. For example,  MonoSRSTHX5.1Nicam Stereo, or Dual Mono.

NoNo
CategoriesArray of stringsThe operator-defined category or genre names that apply to this content.NoNo
CopyrightStringA copyright message.YesNo
CountriesArray of stringsThe two-letter ISO codes representing countries that apply to this programme.NoNo
DefinitionStringThe video definition. One of: HD, SD, or 3D.NoNo
DescriptionStringThe description of the programme.YesNo
DirectorsArray of stringsThe directors associated with the programme.NoNo
editorial

BTV Content data model object

The associated parent editorial of this programme.NoNo
editorial.technicalsArray of BTV Content data model objectsThe child technicals of the associated editorial.NoNo
EpisodeString

Localised text representation of the index of the episode in the series. This field is used to display the episode number.
For example:

Season 3, Episode 2
YesNo
eventIdNumberThe ID of the scheduled programme.NoNo
idStringThe CMS's identifier for the object.NoYes
isCatchUpBooleanWhether the time-shift “catch-up” function is available for this event.NoNo
IsRecordableBooleanWhether the end user is allowed to record this series.NoNo
isStartOverBooleanWhether the time-shift “start-over” function is available for this event.NoNo
IsTimeshiftedBooleanWhether the programme is a time-shifted broadcast of an earlier programme. Typically used for "+1 hour" channels.NoNo
LanguageStringThe original language of the content (three-letter ISO language code).NoNo
localeStringThe locale used for the object's localisable fields.NoYes
nls.TitleStringThe native language support for the title field – allowing for sorting according to the native language, rather than utf-8 order, as would be done through the Title field itself.YesNo
periodJSON object (see below)Details of the broadcast schedule for this programme.NoYes
period.durationNumberThe length of time this item will appear in the catalogue, in seconds. If not supplied, the duration is omitted, not calculated.NoNo
period.endString: a date and time in ISO 8601 formatThe end time of the broadcast event.NoYes
period.providerIdStringThe identifier of the metadata provider, from the ID of the export's CMSVodData element.NoYes
period.startstring: a date and time in ISO 8601 SormatThe start time of the broadcast event.NoYes
PrivateMetadataStringGeneric field used to pass directly data from the operator to the end-user device without any processing.
One possible use is to pass a list of keyword/value pairs separated by semi-colons.
NoNo
ProducersArray of stringsThe producers associated with the programme.NoNo
productRefsArray of stringsThe CMS IDs of the products that provide access to this programme.NoNo
profileRefStringThe CMS ID of the encoding profile that applies to this asset.NoNo
PromoImagesArray of stringsThe URLs of promo images. Must be composed of URL-safe characters only. NoNo
providerStringThe identifier of the metadata provider, from the id of the export's CMSBtvData element.NoYes
Rating.codeStringParental rating code (from CMS).NoYes
Rating.nameStringLocalized name for the rating, for example, Adult or Adulto.YesYes
Rating.precedenceIntegerQuantitative rating value.NoYes
RecommendedProgrammeIdsArray of strings

The CMS programme IDs recommended for this programme (information taken from a recommendation engine or from the customer) with rank (a positive integer, where a higher number means a stronger recommendation) using the following pattern:

<ProgrammeId>/<Rank>

A referenced programme might be scheduled before or after the current one, and might be on a different channel.

NoNo
RecommendedVodItemIdsArray of strings

The CMS VodItem IDs recommended for this programme (this information comes from the recommendation engine or from the customer) with rank (a positive integer, where a higher number means a stronger recommendation) using the following pattern:

<VodItemId>/<Rank>
NoNo
serviceRefStringThe CMS ID of the channel carrying the programme.NoYes
ShortTitleStringThe short form of the title of this programme. Indended for use on devices with limited space.YesNo
SOCU_filenameStringName of the asset file when this event is available via catch-up or start-over functionality.NoNo
StudioStringThe name of the owner of the content broadcast in this programme.NoNo
SubtitlesString

A list of “locale-type” patterns representing the subtitle streams available for this content.

  • locale: three-letter ISO language code.
  • type: HearingImpaired or Standard.

For example:

"Eng-Standard",
"Eng-HearingImpaired",
"Fra-Standard"
NoNo
SynopsisStringA longer description of the programme.YesNo
titleStringThe name of the programme.

This field is not localised. Multi-language clients should use the Title field instead.

NoYes
TitleStringThe title of the programme displayed to the user.

The CMS mandates that this field will be populated for at least one locale-form of the asset.

YesNo
typeStringThe domain of the object, always btv in this case.NoNo
xmlStringThe type of the object. In this case, always Programme.NoYes
YearStringThe year of production of the content.NoNo

19 reads

Content

The Content represents a content item that is broadcast. It contains metadata such as the content title, description, episode number, actors, and definition. It also includes a link to its parent Series entity if such information exists for the content. If live content is also available as catchup or start-over, it can include one or more technical entities that contain media information, which represent the different available delivery mechanisms available for the catchup/startover.

Content data model
NameTypeDescriptionLocalisedAlways available
_idStringInternal identifier for the object.NoYes
ActorsArray of stringsList of actors.NoNo
AspectStringThe picture ratio, for example, 16:9.NoNo
AudioArray of strings

A list of locale-type patterns. For example:

"Eng-Standard",
"Eng-VisualImpaired"
NoNo
AudioModeStringThe audio mode, for example, Mono or 5.1.NoNo
BestSalesIndexInteger

Sales index for use in "Top" lists (for example, Top 10 Best Selling).

These are positive numbers, starting at 1.

NoNo
CategoriesArray of stringsA list of categories.NoNo
ContentTypeStringFree text. Used for implementation-specific data.NoNo
CopyProtectionsStringA list of rules for controlling certain hardware products.NoNo
CopyrightStringCopyright.NoNo
CountriesArray of stringsA list of countries.NoNo
CUEndDateDateEnd date of period during which recorded content can be seen in nPVR.NoNo
CUStartDateDateStart date of period during which recorded content can be seen in nPVR.NoNo
DefinitionStringThe picture definition, for example, HD or SD.NoNo
DescriptionStringThe description of the content.YesNo
DirectorsArray of stringsList of directors.NoNo
durationIntegerApproximate movie duration in seconds.NoYes
DvbCategoriesArray of stringsList of DVB genres and sub-genres.NoNo
EpisodeStringEpisode text string.YesNo
episodeNumberIntegerIndex of the episode of a series.NoNo
IsRecordableBooleanWhether the content is recordable or not.NoNo
LanguageStringThe original language of the content.NoNo
mainContentRefStringMain content ID.NoNo
nls.TitleStringNLS version of title to allow for correct sorting of items.NoNo
PrivateMetadataStringGeneric field to pass directly data from customer to end-user device.NoNo
ProducersArray of stringsList of producers.NoNo
profileRefStringThe encoding profile ID.NoNo
ProgrammeEndDateDateIf content is catch-up, this contains the end time of the corresponding event.NoNo
ProgrammeStartDateDateIf content is catch-up, this contains the start time of the corresponding event.NoNo
PromoImagesArray of stringsA list of promo image URLs.NoNo
promoRefsArray of stringsThe list of promotion IDs.NoNo
providerStringProvider-related identifier.NoYes
Rating.codeStringParental rating code (from CMS).NoYes
Rating.nameStringLocalised name for the rating, for example, Adult or Adulto.NoYes
Rating.precedenceIntegerQuantitative rating value.NoYes
ScoringIntegerScore of the content/episode.NoNo
seriesRefStringIdentification of parent series.NoNo
ServiceLongNameStringIf content is catch-up, this contains the service long name of the corresponding event.NoNo
ShortTitleStringThe short name of the content.YesNo
SubtitlesString

A list of "locale-type" mappings, for example:

Eng-Standard
NoNo
StudioStringThe content owner.NoNo
SynopsisStringThe synopsis of the content.YesNo
titleStringUnique identifier of the content (duplicated across locales though).NoYes
TitleStringThe name of the content.YesYes
TotalDownloadsIntegerTotal number of downloads of the content/episode.NoNo
ViewingCounterIntegerNumber of times a piece of content has been viewed.NoNo
ViewingNumberIntegerNumber of times a user can see the content once purchased.NoNo
YearIntegerYear of production.NoNo

21 reads

Series

The Series represents a collection of Content items that belong together, either representing a Season or the whole Series (but currently not both). The Series contains metadata such as a description and promotional image information. It also acts as a link for all related content. Not all content items will have a series, and some deployments do not provide this information at all.

Series data model
NameTypeDescriptionLocalisedAlways available
_idStringInternal identifier for the object.NoYes
ActorsArray of strings

A list of actors. For example:

"Tom Cruise",
"Nicole Kidman"
NoNo
AspectStringThe aspect ratio, for example, 16:9 or Widescreen.NoNo
AudioArray of strings

A list of "locale-type" patterns representing the audio streams available for this series.

  • locale: three-letter ISO language code
  • type: VisualImpaired or Standard

For example:

"Eng-Standard",
"Eng-VisualImpaired",
"Fra-Standard"
NoNo
AudioModeStringThe audio mode. For example, Mono, SRS, THX, 5.1, Nicam Stereo, or Dual Mono.NoNo
BestSalesIndexInteger

Sales index (position) for use in "Top" lists (for example, Top 10 Best Selling).

These are positive numbers, starting at 1.

If -1 or not present, this series is not in any "Top n" index.

NoNo
CategoriesArray of stringsA list of operator-defined category or genre names for this series.NoNo
ContentTypeStringFree text. Used for implementation-specific data.NoNo
CopyProtectionsString

A list of usage rules for controlling certain hardware outputs to prevent unauthorised content copying.

For example:

"CGMS-A",
"HDCP"

If the value is 0 or not present, there is no restriction.

NoNo
CopyrightStringA copyright message.NoNo
CountriesArray of stringsA string of two-letter ISO codes representing countries relevant to this series.NoNo
DefinitionStringThe video definition. One of HD, SD, or 3D.NoNo
DescriptionStringThe description of the series.YesNo
DirectorsArray of stringsA list of directors.NoNo
DvbCategoriesArray of stringsArray of DVB genres and sub-genres.NoNo
EpisodeStringEpisode text string.YesNo
IsRecordableBooleanWhether the end user is allowed to record this series.NoNo
LanguageStringThe original language of the series (three-letter ISO language code).NoNo
nls.TitleStringNative language support for the title field, which allows it to be sorted correctly in the local languare rather than using UTF-8 ordering.

PrivateMetadataStringGeneric field used to pass data directly from the operator to the end-user device without any processing.
One possible use is to pass a list of keyword/value pairs.
NoNo
ProducersArray of stringsA list of producers.NoNo
PromoImagesArray of stringsA list of promo image URLs. Must contain only URL-safe characters.NoNo
providerStringThe identifier of the metadata provider, from the id of the export's CMSVodData element.NoYes
Rating.codeStringParental rating code (from CMS).NoYes
Rating.nameStringLocalised name for the rating, for example, Adult orAdulto.YesYes
Rating.precedenceIntegerQuantitative rating value.NoYes
ScoringIntegerScore of the series.NoNo
ShortTitleStringThe short name of the content.YesNo
StudioStringThe content owner.NoNo
SubtitlesString

A list of “locale-type” patterns representing the subtitle streams available for this series.

  • locale: 3-letters ISO language code
  • type: HearingImpaired or Standard

Example:

"Eng-Standard",
"Eng-HearingImpaired",
"Fra-Standard"
NoNo
SynopsisStringA longer description of the series.YesNo
titleString

The name of the series.

This field is not localised. Multi-language clients should use the Title field instead.

NoYes
TitleString

The name of the series.

The CMS mandates that this field will be populated for at least one locale-form of the asset.

YesYes
TotalDownloadsIntegerTotal number of downloads of the series (or of episodes within the series, according to the operator's preference).NoNo
ViewingCounterIntegerNumber of times a piece of content has been viewed.NoNo
ViewingNumberIntegerHow many times a user can watch the series (or episodes within it) once purchased.
If 0 or not present, there is no limitation.
NoNo
YearIntegerThe year of production of the content.NoNo

8 reads

Product

A live content product is the same as an on-demand product; it makes content available for a length of time for a specific price. The metadata includes details such as product availability, price, currency and type. A product can be linked to any number of channels or events. Likewise, an event or channel could be linked to any number of products, though it is expected that each product has a different offering, for example, different product types or content.

There are two product types:

  • Subscription
  • Transaction
Product data model
NameTypeDescriptionLocalisedAlways available
_idStringInternal identifier for the object.NoYes
businessProductRefsArray of stringsList of IDs referring to parent "business products".

Since MDS 1.1STD4.

NoNo
businessProductTypeStringA numeric value provided by the CAS to classify the type of product.NoNo
casInstanceNameStringThe name that uniquely identifies the CAS server that manages access to this channel or event.NoNo
casIdStringThe identifier of this product within the CAS. This is the technical ID for all conditional-access-related operations.

For the NAGRA CAS, this ID is a numeric value with up to 12 digits.

NoNo
casMopIdStringThe MOP ID assigned by the NAGRA CAS to this product, if applicable. The presence of this value depends on the CAS features activated for the customer project.NoNo
endPurchaseString: a date and time in ISO 8601 formatThe end date and time of the period when the end user may purchase this product.NoNo
endValidityString: a date and time in ISO 8601 formatThe end date and time of the period when this product is valid. Access to the content/event sold by this product is not allowed after this time.NoNo
idStringThe CMS's identifier for the object.NoYes
impulsiveBooleanWhether the product can be acquired by the end-user “impulsively”, that is, without requiring a right to be delivered explicitly from the head-end.

CMS 4 always sets this field to true.

NoNo
isSOCUBoolean

Whether start-up and catch-up can be used with this content.

For PPV and subscription products, the default is configured in the CMS. For other products, the default value is false.

NoNo
localeStringThe language of the profile.YesYes
orderingBooleanWhether the product be acquired by the end-user in “ordering” mode, that is, via a right delivered from the head-end.

CMS 4 always sets this field to false.

NoNo
priceSub-objectThe price this product can be purchased for.

MDS currently only supports one price in one currency per product.

NoNo
price.currencyStringThe currency the price is in.NoYes
price.endPurchaseString: a date and time in ISO 8601 formatThe end date and time of the period when the end user may purchase the product at this price.NoNo
price.providerIdStringThe identifier of the metadata provider, from the id of the export's CMSBtvData.NoYes
price.valueNumberThe value of the price in the specified currency.NoYes
price.startPurchaseString: a date and time in ISO 8601 formatThe start date and time of the period when the end user may purchase the product at this price.NoNo
PrivateMetadataString

Used to pass data directly from the customer to the end user device without any processing.

One possible use is to pass a list of keyword/value pairs separated by semi-colons.

No validation is done by the Metadata Server on the value of this field.

NoNo
ProfileNameStringAllows a product to be associated to an externally-managed profile.NoNo
providerIdStringThe identifier of the metadata provider, from the id of the export's CMSBtvData element.NoYes
startPurchaseString: a date and time in ISO 8601 formatThe start date and time of the period when the end user may purchase this product.NoNo
startValidityString: a date and time in ISO 8601 formatThe start date and time of the period when this product is valid. Access to the content/event sold by this product is not allowed before this time.NoNo
titleStringThe name of the product.

This field is not localised. Multi-language clients should use the TitleForProduct field instead.

NoYes
TitleForProductStringThe name of the product.YesNo
typeString

The type of product. Either single orsubscription.

  • single products reference only one broadcast event.
  • subscription products reference multiple events, payable as a recurring subscription.
NoYes
xmlStringThe type of object. Always Product.NoYes

12 reads

Subscription product

A subscription product is a product that typically has no predefined end date, and incurs a recurring charge on an account for continued access. Access to content contained within only stops if subscription to the product is cancelled or the content stops becoming available within the product.

The typical use case for subscription products in the context of live content is to give access to one or more channels. This product will usually also give access to any start-over or catchup on-demand content that is linked to the subscribed channel.

Transaction product

A transaction product is a product that gives access to content for a specific length of time for a single charge. It can include any number of content items.

The typical use case for transaction products in the context of live content is for Pay-Per-View (PPV) events.

Model graph

The following diagram shows the links between the various models within MDS. Each model is grouped within the API by which it can be accessed.

Use cases

Subscription information: Use cases regarding retrieval of subscription information is covered in Subscription data.

Retrieving a channel list

A list of channels can be retrieved using the MDS Services API. Refer to the MDS API reference, open the document corresponding to the Metadata delivery API and go to the '/metadata/delivery/btv/services' section.

Retrieving all channels

All channels can be retrieved by not specifying a channel filter.  For example:

CODE
http://server:port/metadata/delivery/[provider]/btv/services?filter={"locale":"en_gb"}&sort=[["Title",1]]&fields=["Title", "tvChannel"]&offset=0&limit=10

This will request the list of all channels with an "en_gb" locale, ordered by Title, with only the Title and tvChannel (channel number) field returned. A locale must be specified to retrieve the data in that language. If no locale is specified, the system default is used. Only the first 10 channels will be returned due to the limit. The next 10 can be returned by specifying offset=10&limit=10.

Retrieving subscribed channels

First retrieve the broadcast subscription products applicable for the account, as described in Subscription data.

Collate the product identifiers together into an array, and pass it as a productRef filter.  For example:

CODE
http://server:port/metadata/delivery/[provider]/btv/services?filter={"locale":"en_gb", "productRef": {$in: ["LYS12345", "LYS23456", "LYS34567"]}}&sort=[["Title",1]]&fields=["Title", "tvChannel"]&offset=0&limit=10

Retrieving events to drive an EPG

A list of events can be retrieved using the MDS Programmes API. Refer to the MDS API reference, open the document corresponding to the Metadata delivery API and go to the '/metadata/delivery/btv/programmes' section.

Retrieving events for an EPG window

In this use case we want enough EPG data to render an EPG screen with 8 channels and a 3 hour window (for example, the user can see from 10 AM to 2PM).

For the purpose of optimisation, the events should be retrieved per channel. In the example below we ask for events on BBC1, with a start time before 2PM on Oct 29th but after 2PM on Oct 28th. This restriction on starting after 24 hrs earlier reduces the work the MDS needs to do when filtering on end time. We then specify events ending after 10AM. We specifically ask for only the Title, Description, Duration, Start, End, and Rating fields, as these are the only fields used to render the EPG. Paging is not necessary because we are already restricting the returned items by dates.

CODE
http://server:port/metadata/delivery/[provider]/btv/programmes?filter={"locale":"en_GB", "serviceRef":"BBC1","period.start":{"$lte":1414591200,"$gte":1414490400},"period.end":{"$gte":1414576800}}&fields=["id","Title","Description","period.duration","period.end","period.start","Rating"]

Retrieving detailed event information

In this use case a user wants to view additional information about an event, such as show cast, episode data, technical information, and so on.
Because we know the event in question, we can specify its unique id in the request and no other filter is necessary. To retrieve the additional information we need to render the UI, we specify further fields. Because we already have the information for "id", "Title", "Description", and so on, we don't need to retrieve them again, only the additional data.

CODE
http://server:port/metadata/delivery/[provider]/btv/programmes?filter={"id":"ABC123"}&fields=["Audio","Definition","Episode","Language","productRefs"]

Retrieving live content to show a content-first view

When retrieving events for the purpose of rendering an EPG, a schedule-first view is required. Some UI applications might also have a content first view, where a user browses the content available before discovering its schedule. Or the user might want to find out when a show is repeated.

To enable this functionality in an efficient way, an MDS BTV editorials API is provided. This structures the response so that the content returned includes the schedules, rather than the other way around (which is a less efficient structure for this use case).

Refer to the MDS API reference, open the document corresponding to the Metadata delivery API and go to the '/metadata/delivery/btv/editorials' section.

Editorial content is not always available​: Live TV editorial content is only made available if the data provided by the content provider links the scheduled programmes with their content. If this link is missing, the editorials API will have no data.

Retrieving all schedules for a particular content

The following example can be used to retrieve all schedules for a particular content (using the editorial.id):

CODE
http://server:port/metadata/delivery/[provider]/btv/editorials?filter={"editorial.id":"0000300794","locale":"en_GB"}&fields=["editorial.id","editorial.Title","editorial.Description","programme.period.duration","programme.period.end","programme.period.start","editorial.Rating"]

Retrieving related product information

If channels or programmes have any related products, the identifiers for those products are returned in the productRef field. For channels, if the productRef list is empty, the channel is free-to-air (FTA). If a programme productRef list is empty, it means that the programme is included with the access to its channel, be that FTA or not. If the channel or programme does have associated products, it can be assumed that one of the products must be purchased/subscribed for access to that channel.

A request to the MDS BTV products API should be made when you need to display the product information.

Refer to the MDS API reference, open the document corresponding to the Metadata delivery API and go to the '/metadata/delivery/btv/products' section.

Retrieving product information for a channel or event

Pass in the productRef from the service or programme as the id in the products API.

CODE
http://server:port/metadata/delivery/[provider]/btv/products?filter={"id":"LYS000494276"}&fields=["price.currency","price.endPurchase","price.startPurchase","price.value","type"]

Retrieving series information

Series information can be used to group episodes of a series together, both for display purposes and for PVR series linking. Series information is available only if the Content metadata is available.

Retrieving series information for a content item

The series information can be retrieved by using the MDS BTV Series API. Pass in the seriesRef value as the id into the Series API.

Refer to the MDS API reference, open the document corresponding to the Metadata delivery API and go to the '/metadata/delivery/btv/series' section.

CODE
http://server:port/metadata/delivery/[provider]/btv/series?filter={"id":"00000000063628", "locale":"en_GB"}&fields=["title","description"]

Retrieving all content belonging to a series

The following example can be used to retrieve all content for a particular series (using the editorial.seriesRef):

CODE
http://server:port/metadata/delivery/[provider]/btv/editorials?filter={"editorial.seriesRef":"00000000063628", "locale":"en_GB"}&fields=["title","description"]

See also

The full MDS API documentation.


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.