metadata-ingest provides data about our content (movies, series, and such).
/entity/<entity-id>
Retrieves a metadata entity. This endpoint is meant only for human consumption and must not be used by any service.
/event/<source>
Handles an event from an external source. Possible sources are comet6-program
,
comet6-package
, comet6-schedule
, vimond-asset
.
There are currently no events for comet6-channel
. Raw data for this source is
to be updated manually through posting to /raw/comet6-channel/<id>
.
There are also no events for comet6-broadcast
. Broadcast data is extracted
from schedule data (comet6-schedule
).
The /raw/ endpoint is meant for manually fetching and updating data in the formats provided by our data sources. It is not intended for use by other services.
/raw/<source>/<id>
Returns the raw data and the their state for the given source and ID.
/__status
Provides service status information.
200
SHOW
{ "date": "2020-06-23T11:14:05.529788Z", "framework": { "name": "stdlib", "version": "go1.14.4" }, "go": { "goarch": "amd64", "goos": "darwin", "num_cpu": 8, "num_goroutines": 3, "version": "go1.14.4" }, "language": { "name": "go", "version": "go1.14.4" }, "service": { "birthday": "2020-06-23" } }
Tasks provides a means to monitor and control background work.
/tasks
Fetches information about all tasks.
> Client: <client>
> X-Api-Key: <key>
200
SHOW
[ { "created": "2020-12-14T15:37:50.86033Z", "description": "Send entities", "id": "db70c2", "modified": "2020-12-14T15:37:50.872928Z", "state": "completed" }, { "created": "2020-12-14T15:37:46.908205Z", "description": "Send entities", "id": "d88bb5", "modified": "2020-12-14T15:37:46.924263Z", "state": "completed" } ]
/tasks/<id>
Fetches information about the given task.
/internal/external_ids{?source,entity_type}
Returns external ids corresponding to the given source and entity_type source. This endpoint is meant only for human consumption and must not be used by any service.
/internal/mapping/<source>/<id>
Returns the entity ID corresponding to the given external ID for the given source. This endpoint is meant only for human consumption and must not be used by any service.
/internal/send-entities{?everything,since,source,entity_type,state}
Triggers entities to be sent on the SNS and returns a task ID that can be used to abort the send if needed.
If the request body is empty, the request must have exactly one of the three parameters specified.
The request body may contain a newline-delimited list of entity IDs of the entities to send.
Name | Description | Required | Type | Example |
---|---|---|---|---|
everything | Set to |
bool |
true
|
|
since | Include only those entities whose underlying raw data has been modified in the specified period of time. |
duration |
24h
|
|
source | Include only those entities which have underlying raw data from the specified source. |
string |
comet6-program
|
|
entity_type | Include only those entities of matching type. |
string |
series
|
|
state | Include only the entities created by raws with given state. |
string |
deleted
|
> Client: <client>
> X-Api-Key: <key>
> Client: <client>
> X-Api-Key: <key>
0194fdc2fa2ffcc041d3 ff12045b73c86e4ff95f
202
SHOW
{ "task_id": "abc123", }
All data in Metadata Ingest is represented as entities. An entity is a JSON
object with a unique ID, a type, modification timestamp, data, and external IDs.
The data is defined by the type of the entity, and is always a JSON object. Any
field under data
may be omitted. Any ID referenced from an entity is a Entity
ID unless otherwise specified.
{
"id": "0194fdc2fa2ffcc041d3",
"type": "episode",
"modified": "2021-02-11T11:11:11Z",
"data": { ... },
"external_ids": [ ... ],
"state": "published"
}
Possible entity types are episode
, season
, series
, movie
, video
(video
file, i.e. Vimond asset, Comet VOD package), clipvideo
, channel
, schedule
,
broadcast
.
The external_ids
is a list of corresponding IDs from external sources.
Possible sources are comet5-program
, comet6-program
, comet6-package
,
comet6-channel
, comet6-schedule
, comet6-broadcast
, vimond-asset
,
vimond-fi-asset
, vimond-fi-category
, won-product-code
.
All timestamps are formatted according to RFC 3339.
content_rating
– content rating for different rating systems (tv4
, kavi
)
tv4
age_rating
– parental rating following the TV4 color rating system (green
, turqouise
, blue
, orange
, red
, purple
)
kavi
– KAVI content rating system for MTV
age_rating
– one of S
, T
, 7
, 12
, 16
, 18
descriptors
– one of anxiety
, violence
, sex
, intoxicants
duration
– duration of the video in seconds
localizations
– data in different languages
language
– one of da
, fi
, lt
, nb
, sv
only_fetchable_by_id
– used to hide entity from other requests then when asking for it by id or vimondId directly.
original_title
– title of the program in the original language
production_countries
– list of ISO 3166-1 alpha-2 country codes
publishing
– publishing information
site
– one of mtv.fi
, tv4play.se
published
– indicates whether or not the entity is to be considered published on the given sitepublish_at
– time at which the entity was or is expected to be publishedexpire_at
– time at which the entity expired or is expected to expireplayable_at
– time after which the corresponding video can be playedoffline
– offline data
download_allowed
– indicates whether or not entity is downloadablerating
– parental rating following the TV4 Media rating color system (green
, turqouise
, blue
, orange
, red
, purple
)
resources
– list of images and trailers
kind
– one of backdroptall
, character
, cover
, main
, main-annotated
, trailer
, logocolour
, logowhite
, logocolourlocal
, logowhitelocal
, poster
, logoroundlocal
, brandlogocolour
, brandlogowhite
, first-frame-landscape
, first-frame-portrait
, serieslogo
region
– one of DK
, FI
, NO
, SE
type
– one of image
, trailer
category
– one of entertainment
, movie
visibility
– one of Default
, AlwaysShow
, NeverShow
rights
content_owner
– tv4
, mtv
country
– one of DK
, FI
, NO
, SE
category
– one of entertainment
, factual
, news
, scripted
visibility
– one of Default
, AlwaysShow
, NeverShow
audio
language
– one of da
, fi
, nb
, sv
kind
– always dubbed
orientation
– one of landscape
, portrait
planning_system_id
– id for video in planning/contract system louise or won
id
– id for video in planning/contract systemtype
– louise
or won
parent_id
– link from video
to a corresponding episode
or movie
playable_entity
– links to a VOD entity (episode/movie)
type
– one of live
, recorded
status
– one of rerun
, first-run
planned
– exact start and end of the broadcast
public
– start and end of the broadcast rounded to the nearest 5 minute period, meant for public presentations
rights
type
– one of start-over
, catch-up
, blackout
device_types
– one or more of ott
, stb
type
– one of linear
, virtual
priority
value
– int 1-6span
– one of 1d
, 7d
, 30d
, forever
converted_from_clip
– optional timestamp field with the time the entity was converted from clip to shortThe example data below contains all possible fields for each entity type.
{
"id": "0194fdc2fa2ffcc041d3",
"type": "episode",
"modified": "2021-02-11T11:11:11Z",
"data": {
"credits": [
{
"character": "Alex",
"name": "Felix Herngren",
"type": "actor"
}
],
"episode_number": 9,
"localizations": [
{
"language": "sv",
"synopsis": {
"brief": "Brief synopsis [...]",
"extended": "Extended synopsis [...]",
"long": "Long synopsis [...]",
"medium": "Medium synopsis [...]",
"short": "Short synopsis [...]"
},
"title": "Episode title [...]"
}
],
"original_title": "Solsidan",
"rating": "blue",
"resources": [
{
"kind": "main",
"media_type": "image/jpeg",
"ratio": "16:9",
"region": "SE",
"type": "image",
"url": "https://img.tv4.incomet.io/524acf16-caec-4fef-9f50-9d27c5f6dde1/crop16x9.jpg"
}
],
"season_id": "ff12045b73c86e4ff95f"
},
"external_ids": [
{
"source": "comet6-program",
"id": "123456"
}
],
"state": "created"
}
{
"id": "ff12045b73c86e4ff95f",
"type": "season",
"modified": "2021-02-11T11:11:11Z",
"data": {
"credits": [
{
"character": "Alex",
"name": "Felix Herngren",
"type": "actor"
}
],
"genres": [
"komedi"
],
"localizations": [
{
"language": "sv",
"synopsis": {
"brief": "Brief synopsis [...]",
"extended": "Extended synopsis [...]",
"long": "Long synopsis [...]",
"medium": "Medium synopsis [...]",
"short": "Short synopsis [...]"
},
"title": "Säsong 3"
}
],
"number_of_episodes": 10,
"original_title": "Solsidan",
"production_countries": [
"SE"
],
"production_year": "2012",
"rating": "blue",
"resources": [
{
"kind": "cover",
"media_type": "image/png",
"ratio": "2:3",
"region": "NO",
"type": "image",
"url": "https://img.tv4.incomet.io/fec967f6-3819-4d03-a971-8077d3b67d3d/crop2x3.png"
}
],
"rights": [
{
"content_owner": "tv4",
"country": "SE"
}
],
"season_number": 3,
"series_id": "f662a5eee82abdf44a2d"
},
"external_ids": [
{
"source": "comet6-program",
"id": "234567"
}
],
"state": "created"
}
{
"id": "f662a5eee82abdf44a2d",
"type": "series",
"modified": "2021-02-11T11:11:11Z",
"data": {
"category": "scripted",
"config": {
"sort_episode_by": "playable_at"
},
"credits": [
{
"character": "Alex",
"name": "Felix Herngren",
"type": "actor"
}
],
"genres": [
"komedi"
],
"imdb": "tt1593584",
"localizations": [
{
"language": "sv",
"synopsis": {
"brief": "Brief synopsis [...]",
"extended": "Extended synopsis [...]",
"long": "Long synopsis [...]",
"medium": "Medium synopsis [...]",
"short": "Short synopsis [...]"
},
"title": "Solsidan"
}
],
"nid": "solsidan",
"original_title": "Solsidan",
"production_countries": [
"SE"
],
"rating": "blue",
"resources": [
{
"kind": "trailer",
"media_type": "video/mp4",
"ratio": "16:9",
"region": "SE",
"type": "trailer",
"url": "https://trailer-cdn.a2d.tv/comet/d2790630-5bae-4da3-8b27-a82621305321.mp4"
}
],
"tags": [
{
"name": "TV-Serier",
"type": "Ad"
}
],
"visibility": "Default"
},
"external_ids": [
{
"source": "comet5-program",
"id": "34567"
},
{
"source": "comet6-program",
"id": "345678"
}
],
"state": "created"
}
{
"id": "0b75fb180daf48a79ee0",
"type": "movie",
"modified": "2021-02-11T11:11:11Z",
"data": {
"category": "movie",
"credits": [
{
"character": "Alex",
"name": "Felix Herngren",
"type": "actor"
}
],
"genres": [
"komedi"
],
"imdb": "tt7279180",
"localizations": [
{
"language": "sv",
"synopsis": {
"brief": "Brief synopsis [...]",
"extended": "Extended synopsis [...]",
"long": "Long synopsis [...]",
"medium": "Medium synopsis [...]",
"short": "Short synopsis [...]"
},
"title": "Solsidan - Filmen"
}
],
"nid": "solsidan",
"original_title": "Solsidan",
"production_countries": [
"SE"
],
"production_year": "2017",
"rating": "green",
"resources": [
{
"kind": "cover",
"media_type": "image/png",
"ratio": "2:3",
"region": "SE",
"type": "image",
"url": "https://img.tv4.incomet.io/dab79aa5-db89-47e5-a9c8-2fb7c2537538/crop2x3.png"
}
],
"tags": [
{
"name": "Small town life",
"type": "Keyword"
}
],
"visibility": "Default"
},
"external_ids": [
{
"source": "comet6-program",
"id": "456789"
}
],
"state": "created"
}
{
"id": "b10d394651850fd4a178",
"type": "video",
"modified": "2021-02-11T11:11:11Z",
"data": {
"audio": [
{
"language": "da",
"kind": "dubbed"
},
{
"language": "fi",
"kind": "dubbed"
},
{
"language": "nb",
"kind": "dubbed"
},
{
"language": "sv",
"kind": "dubbed"
}
],
"chapters": [
{
"start": 2028.72,
"end": 2622.853,
"duration": 20.23,
"localizations": [
{
"language": "sv",
"synopsis": {
"brief": "chapter-text"
},
"title": "Chapter Title"
}
],
"resources": [
{
"kind": "main",
"media_type": "image/jpeg",
"ratio": "16:9",
"type": "image",
"url": "https://tvmedia.image-service.eu-north-1-preprod.vmnd.tv/api/v2/img/aaa-bbb"
}
]
}
],
"drm_protected": true,
"duration": 456,
"live": true,
"migrated_vimond_asset_id": "987654",
"only_fetchable_by_id": false,
"parent_id": "0b75fb180daf48a79ee0",
"playback_info": {},
"planning_system_id": {
"type": "louise",
"id": "123456"
},
"program_nid": "program-nid",
"publishing": [
{
"site": "tv4play.se",
"published": true,
"publish_at": "2021-01-01T10:00:00Z",
"expire_at": "2023-01-01T10:00:00Z",
"playable_at": "2022-06-01T10:00:00Z",
"offline": {
"download_allowed": false
},
"ads_allowed": true
}
],
"start_over": false,
"title": "Solsidan del 1"
},
"external_ids": [
{
"source": "comet6-package",
"id": "123456"
},
{
"source": "vimond-asset",
"id": "1234567"
}
],
"state": "created"
}
{
"id": "0194fdc2fa2ffcc041d3",
"type": "clipvideo",
"modified": "2021-02-11T11:11:11Z",
"data": {
"drm_protected": false,
"duration": 123,
"localizations": [
{
"language": "sv",
"synopsis": {
"brief": "Brief description [...]"
},
"title": "Kökets middag: Sallad på rostad brysselkål med lagrad ost"
}
],
"migrated_vimond_asset_id": "987654",
"only_fetchable_by_id": false,
"program_nid": "program-nid",
"publishing": [
{
"site": "tv4play.se",
"published": true,
"publish_at": "2020-12-23T12:23:47Z",
"expire_at": "9999-12-31T23:59:59Z",
"playable_at": "2020-12-23T23:59:59Z",
"ads_allowed": false
}
],
"resources": [
{
"kind": "main",
"media_type": "image/jpeg",
"ratio": "16:9",
"type": "image",
"url": "https://asset-images.b17g.net/api/v2/img/5fe337aae4b0a396197dbb92-1608727596648"
}
],
"tags": [
{
"name": "köket",
"type": "keyword"
},
{
"name": "siri-barje",
"type": "editorial"
},
{
"name": "cc-julmat-bak",
"type": "editorial"
}
],
"playback_info": {}
},
"external_ids": [
{
"source": "vimond-asset",
"id": "13311817"
}
],
"state": "created"
}
{
"id": "ff12045b73c86e4ff95f",
"type": "sportvideo",
"modified": "2021-02-11T11:11:11Z",
"data": {
"arena": "Camp Nou",
"commentators": "Lauri Kottonen",
"drm_protected": true,
"duration": 7500,
"in_studio": "Petri Pasanen, Mika Väyrynen",
"live": true,
"localizations": [
{
"language": "fi",
"away_team_name": "Atlético Madrid",
"country": "Espanja",
"genre": "Jalkapallo",
"home_team_name": "Barcelona",
"league": "La Liga",
"round": "Runkosarja",
"synopsis": {
"brief": "Brief description [...]"
},
"title": "Barcelona - Atlético Madrid"
}
],
"only_fetchable_by_id": false,
"original_title": "Barcelona - Atlético Madrid",
"playback_info": {},
"planning_system_id": {
"type": "won",
"id": "12345"
},
"production_year": "2022",
"publishing": [
{
"site": "mtv.fi",
"platform": "mtv-svod",
"published": true,
"publish_at": "2023-04-23T14:10:00Z",
"playable_at": "2023-04-23T14:10:00Z",
"live_event_end": "2023-04-23T10:16:15Z",
"ads_allowed": true,
"regions": [
"EU"
],
"vimond_product_group_ids": [
"1",
"2"
]
}
],
"reporters": "Sami Hyypiä",
"resources": [
{
"kind": "main",
"media_type": "image/jpeg",
"ratio": "16:9",
"type": "image",
"url": "https://image-via.katsomo.fi/api/v2/img/644024f6e4b0f70099912cec-1682000016248?location=main"
},
{
"kind": "poster",
"media_type": "image/jpeg",
"ratio": "2:3",
"type": "image",
"url": "https://image-via.katsomo.fi/api/v2/img/644024f6e4b0f70099912cec-1682000016248?location=posterClean"
}
],
"season": "2022-2023",
"start_over": true,
"studio": false,
"tags": [
{
"name": "ottelut",
"type": "category"
},
{
"name": "la-liga",
"type": "category"
},
{
"name": "sports",
"type": "category"
}
]
},
"external_ids": [
{
"source": "vimond-fi-asset",
"id": "12345678"
},
{
"source": "won-product-code",
"id": "12345"
}
],
"state": ""
}
{
"id": "0875d64ee2d3d0d0de6b",
"type": "channel",
"modified": "2021-02-11T11:11:11Z",
"data": {
"display_name": "MTV Uutiset Live",
"drm_protected": false,
"only_fetchable_by_id": false,
"resources": [
{
"kind": "main",
"media_type": "image/jpeg",
"ratio": "16:9",
"type": "image",
"url": "https://tvmedia.image-service.eu-north-1-preprod.vmnd.tv/api/v2/img/6323360de4b01690797d071d?location=main"
}
],
"type": "virtual",
"playback_info": {}
},
"external_ids": [
{
"source": "vimond-fi-asset",
"id": "20025962"
},
{
"source": "comet6-channel",
"id": "1"
}
],
"state": "created"
}
{
"id": "f8f9b44ce85ff044c6b1",
"type": "schedule",
"modified": "2021-02-11T11:11:11Z",
"data": {
"channel_id": "0875d64ee2d3d0d0de6b",
"day": "2020-11-04",
"broadcast_ids": [
"c5b252c7429c32f3a8ae",
"b79ef856f659c18f0dce"
]
},
"external_ids": [
{
"source": "comet6-schedule",
"id": "3456789"
}
],
"state": "created"
}
{
"id": "c5b252c7429c32f3a8ae",
"type": "broadcast",
"modified": "2021-02-11T11:11:11Z",
"data": {
"playable_entity": {
"id": "0194fdc2fa2ffcc041d3",
"type": "episode"
},
"metadata": {
"season_number": 3,
"episode_number": 9,
"title": "Solsidan",
"synopsis": {
"brief": "Brief synopsis [...]",
"extended": "Extended synopsis [...]",
"long": "Long synopsis [...]",
"medium": "Medium synopsis [...]",
"short": "Short synopsis [...]"
},
"resources": [
{
"kind": "main",
"media_type": "image/jpeg",
"ratio": "16:9",
"region": "SE",
"type": "image",
"url": "https://img.tv4.incomet.io/524acf16-caec-4fef-9f50-9d27c5f6dde1/crop16x9.jpg"
}
]
},
"type": "recorded",
"status": "rerun",
"planned": {
"start": "2020-01-01T19:00:00+01:00",
"end": "2020-01-01T19:28:00+01:00"
},
"public": {
"start": "2020-01-01T19:00:00+01:00",
"end": "2020-01-01T19:30:00+01:00"
},
"rights": [
{
"type": "start-over",
"from": "2020-01-01T19:00:00+01:00",
"until": "2020-01-01T21:00:00+01:00",
"device_types": [
"ott",
"stb"
],
"fast_forward": false,
"pause": true,
"rewind": true
}
]
},
"external_ids": [
{
"source": "comet6-broadcast",
"id": "456789"
}
],
"state": "created"
}
{
"id": "0194fdc2fa2ffcc041d3",
"type": "short",
"modified": "2021-02-11T11:11:11Z",
"data": {
"converted_from_clip":"2024-11-25T00:00:00Z",
"localizations": [
{
"language": "sv",
"synopsis": {
"brief": "Brief description [...]"
},
"title": "Kökets middag: Sallad på rostad brysselkål med lagrad ost"
}
],
"only_fetchable_by_id": false,
"original_title":"Kökets middag: Sallad på rostad brysselkål med lagrad ost&",
"parent_id":"Kökets middag: Sallad på rostad brysselkål med lagrad ost&",
"priority": {
"value": 1,
"span": "1d"
},
"resources": [
{
"kind": "first-frame-landscape",
"media_type": "image/jpg",
"ratio": "16:9",
"type": "image",
"url": "https://tvmedia.image-service.eu-north-1-preprod.vmnd.tv/api/v2/img/63a19b3ae4b095eea718fa3d-1732280632389?location=firstFrameLandscape"
},
{
"kind": "main",
"media_type": "image/jpeg",
"ratio": "16:9",
"type": "image",
"url": "https://tvmedia.image-service.eu-north-1-preprod.vmnd.tv/api/v2/img/63a19b3ae4b095eea718fa3d-1732280632389?location=main"
}
],
"tags": [
{
"name": "news",
"type": "category"
},
],
},
"external_ids": [
{
"source": "vimond-asset",
"id": "13311817"
}
],
"state": "created"
}