Metadata
Asset metadata contains all of the information about the movies, series, episodes, channels and broadcasts in your service.
Properties
This table outlines which properties are available on all types of media metadata.
Property | Type | Usage |
---|---|---|
id | string | This field is auto generated when an asset is created. |
external_id | string | This field can reference the ID of the same asset in an external system (usually an OVP). It’s usually used internally for deeper integration with said external system. |
type | string | The type of the asset. Can be: movie,series,episode,channel,broadcast |
label | string | The name or title of the asset. |
description | string | The description of the asset. |
short_description | string | A short form description of the asset. |
images | object | An object containing the various image formats. |
images.still | array | An array containing a still image (16:9) in various sizes. |
images.poster | array | An array containing a poster image (2:3) in various sizes. |
images.background | array | An array containing a background image (16:9) in various sizes. |
genres | array | An array containing genre reference objects |
crew | array | An array containing person reference objects |
age_classification.types | array | An array containing the different classification types for this asset |
geoblock | object | An object containing geoblock values. Either the allow or deny property may be filled, but not both at the same time |
geoblock.allow | array | An array of ISO 3166-1 alpha-2 values that are allowed for this asset |
geoblock.deny | array | An array of ISO 3166-1 alpha-2 values that deny this asset |
duration | int | The duration of the asset in seconds |
release_date | string | The date on which the asset had it’s release (for a movie it’s premiere date for example). Should follow YYYY-MM-DD format |
rating | int | Field denoting how the asset is rated, should be between 0-100 (percentage). |
Referenced objects
Asset/media metadata uses references in some instances and thus does not rely on just a flat list of data.
Images
When images are referenced in backstage they are usually provided as an array of multiple sizes (so the client apps can choose the most appropriate one for the device resolution). They are structured as follows:
{
"url": "https://cdn.example.com/image.jpg",
"size": {
"width": 1920,
"height": 1080
}
}
So an example of the still
images property for an asset might look like this:
{
"images": {
"still": [
{
"url": "https://cdn.example.com/image_1080.jpg",
"size": {
"width": 1920,
"height": 1080
}
},
{
"url": "https://cdn.example.com/image_720.jpg",
"size": {
"width": 1280,
"height": 720
}
},
{
"url": "https://cdn.example.com/image_360.jpg",
"size": {
"width": 640,
"height": 360
}
},
{
"url": "https://cdn.example.com/image_180.jpg",
"size": {
"width": 320,
"height": 180
}
}
]
}
}
Genres
When genres are referenced by assets they are always referenced by ID. This means that, when building a system that pushes data against backstage, you’ll first need to be aware of the genres available in the system. So:
- Grab list of all genres
- See if it already contains the genre you want to attach
- If not create a new genre and remember it’s ID
- Attach the genre to the asset via the ID
Genre reference objects should be added as follows
{
"id": "..."
}
The id is the ID of the genre you want to reference. When the front-ends retrieve these objects through an asset they’re automatically populated with the genre metadata at runtime.
Crew / Persons
When persons are reference by assets (via the crew field) they are always reference by ID. Process wise this follows the same steps as genre reference objects.
Person reference objects should be entered as follows:
{
"id": "...",
"role": "..."
}
The id is the ID of the person you want to reference, the role is a field denoting the type of role the person had in this asset (for example actor or director). When the front-ends retrieve these objects through an asset they’re automatically populated with the person metadata at runtime.
Age classification
An asset can have multiple age classification systems assigned (for example NICAM for the Netherlands and MPAA for the United States). When the front-end is requesting assets the system will automatically pick the age classification system applicable to that user and return it to the app.
property | type | usage |
---|---|---|
type | string | The key of the age classification system, the value is arbitrary but must be consistently used throughout the service. |
rating | int | The minimum age requirement for this asset to be viewable to a user |
indicatorIds | array | An array of indicator ID’s. Indicators are visual representations of the ratings (so for MPAA an icon for PG-13 and for NICAM an icon for scary content for example) |
The indicator objects follow the same procedure as genres & persons and need to be created up-front via their own API