Release notes
2022r7
Fixes for POST /fullDays call with publication record in linear schedule API
When you create transmissions on linear channels without a linear publication system, the transmissions created on that channel will also not have a publication system. When you later do define a system on the channel and choose not to update the existing transmissions, they will remain without a publication system.
Previously, when you would send a POST /fullDays call to update such a transmission with the following body, then the system would crash.
{
"channel": "Regional",
"scheduleVersion": "Active",
"date": "2022-09-08",
"transmissions": [
{
"title": "Avengers",
"transmissionId": "8378517812",
"startTime": "14:00",
"duration": "02:00:00",
"announcedTime": "14:00",
"contentId": "3261554527",
"publicationRecord": {
"translatedTitle": "string",
"episodeTitle": "string",
"episodeNumber": 0,
"seriesTitle": "string",
"translatedEpisodeTitle": "string"
}
}
]
}
This was because the call included attributes to create or update a publication record, which cannot be done without a publication system.
Similarly, whenever you would have the following in your call, the system would crash: "publicationRecord": null
This is because a publication record is a separate object which cannot be left as null.
These issues have been fixed.
From this version, the following response is shown in the first scenario:
[
{
"statusCode": "422",
"message": "Operation cannot be completed due to violations",
"timestamp": "2022-11-15T14:06:56Z",
"concept": "Transmission",
"id": "8067318812",
"errors": [
{
"errorCode": "LINEARSCHEDULE-00025",
"description": "For transmission I Used to Be Normal no program guide record can be created.
Please, provide a press publication system for the transmission ",
"data": [
"I Used to Be Normal"
]
}
]
}
]
The following response is shown for the second scenario:
[
{
"statusCode": "422",
"message": "Operation cannot be completed due to violations",
"timestamp": "2022-11-15T13:14:22Z",
"concept": "Transmission",
"id": "8067318812",
"errors": [
{
"errorCode": "LINEARSCHEDULE-00031",
"description": "Publication record should be an object",
"data": []
}
]
}
]
2022r4
Retrieve transmission events of transmission and broadcast day with linear schedule API
It was already possible to retrieve and work with transmissions in the linear schedule API.
From this version, it is also possible to retrieve transmission events using new calls.
Retrieve transmission events of a single transmission
GET /transmissions/:transmissionId:/transmissionEvents
This call retrieves all transmission events of a specific transmission. This means the transmissionId is a required parameter in the request URL. Only the ID of linear transmissions will be accepted.
In the response, an array is returned of all transmission events in the transmission, including program segments.
[
{
"reconcileKey": "8652102327",
"date": "2022-05-04",
"startTime": "01:00:00.00",
"duration": "00:30:00.00",
"timecodeIn": "00:00:00.00",
"timecodeOut": "00:30:00.00",
"frameRate": "25fps",
"title": "THE MANDALORIAN - THE MANDALORIAN 1 - 1/2",
"contentId": "3934087527",
"contentType": "episode",
"interstitialType": null,
"productCode": null,
"mediaAssetId": null,
"mediaAssetLabel": null,
"videocomponentId": null,
"mediaLabel": null,
"timeAllocationType": "programSegment",
"transmissionId": "8652099812",
"channelId": "MgX"
},
{
"reconcileKey": "8660952327",
"date": "2022-05-04",
"startTime": "01:34:01.00",
"duration": "00:00:35.00",
"timecodeIn": "00:00:02.00",
"timecodeOut": "00:00:37.00",
"frameRate": "25fps",
"title": "Coca-Cola",
"contentId": "1000661414",
"contentType": "commercialProductType",
"interstitialType": "Commercial",
"productCode": "CIM-MgX-003",
"mediaAssetId": "1504211000",
"mediaAssetLabel": "0000000048",
"videocomponentId": "1504221000",
"mediaLabel": "0000000048",
"timeAllocationType": "commercial",
"transmissionId": "8652099812",
"channelId": "MgX"
}
]
Most attributes return the external reference of the object, a time or date, but some come from drop-down lists:
| Value for attribute | Is taken from API reference in drop-down list |
|---|---|
contentType
|
PSIProductType |
interstitialType
|
PSITrailerType, WOnCommercialType, WOnMusicClipType |
timeAllocationType
|
BMTimeAllocationType |
channelId
|
Channel |
Retrieve transmission events of a broadcast day
GET /transmissionEvents?filter=eq(channel,:channelID:);eq(date,YYYY-MM-DD)
This call retrieves all transmission events of all transmissions on a certain broadcast day. The date and channel are required search parameters in the request URL. If they are not part of the call, the following response is returned:
{
"statusCode": "422",
"message": "The following query parameters are mandatory and were not specified in the request URI: 'channel, date'",
"timestamp": "2022-05-10T12:20:31Z"
}
Similarly, only linear channels can be used in the query. For others, nothing will be returned. Only the events from the active schedule of the channel will be returned.
The parameters need to be configured with the necessary operators as in the example URL above. For channel, the following can be used: eq, ne, notNull, in. For date: eq, ne, gt, ge, lt , le, notNull, between, in. (SeeSearch for media assets for more information.)
In the response, an array is returned of all transmission events on the day with the following attributes:
{
"reconcileKey": "8660952327",
"date": "2022-05-04",
"startTime": "01:30:30.00",
"duration": "00:00:35.00",
"timecodeIn": "00:00:02.00",
"timecodeOut": "00:00:37.00",
"frameRate": "25fps",
"title": "Coca-Cola",
"contentId": "1000661414",
"contentType": "commercialProductType",
"interstitialType": "Commercial",
"productCode": "CIM-MgX-003",
"mediaAssetId": "1504211000",
"mediaAssetLabel": "0000000048",
"videocomponentId": "1504221000",
"mediaLabel": "0000000048",
"timeAllocationType": "commercial",
"transmissionId": "8652099812",
"channelId": "MgX"
}
Most attributes return the external reference of the object, a time or date, but some come from drop-down lists:
| Value for attribute | Is taken from API reference in drop-down list |
|---|---|
contentType
|
PSIProductType |
interstitialType
|
PSITrailerType, WOnCommercialType, WOnMusicClipType |
timeAllocationType
|
BMTimeAllocationType |
channelId
|
Channel |
2022r3
Schedule version in linear schedule API
In a previous version, the linear schedule API always worked with the active schedule.
From this version, alternative schedule versions are also supported. This caused changes to the YAML so it is recommended to execute the call to get the newest version of the YAML.
A GET call was added to retrieve all possible schedule versions of a channel. (GET /channels/:channelId/scheduleVersions)
In the GET call to search for transmissions (GET /transmissions), the scheduleVersion attribute was added as filter and sort parameter.
The scheduleVersion attribute was added to the response body of the GET calls to search for transmissions (GET /transmissions) and search for specific transmissions (GET /transmissions/:transmission Id).
{
"title": null,
"transmissionId": "7917843812",
"channel": "MgX",
"scheduleVersion": "activeTxSchedule",
"template": null,
"startDate": "2022-05-02",
"startTime": "02:00",
"duration": "01:00:00"
...
}
In the POST call to create or update transmissions (POST /transmissions), the scheduleVersion attribute has been added.
{
"channel": "MgX",
"template": "Transmission",
"title": "Film",
"transmissionId": "ABBB",
"scheduleVersion": "Active",
"startDate": "2022-07-09",
"startTime": "14:00",
"duration": "01:30:00",
"announcedTime": "14:00"
}
-
It can only be used when creating a transmission, not updating one because it is not possible to change the schedule version of a transmission after creation. If you do enter a different value for an existing transmission, an error will be returned.
{
"statusCode": "422",
"message": "Operation cannot be completed due to violations",
"timestamp": "2022-04-11T15:29:57Z",
"concept": "Transmission",
"id": "ABBB",
"errors": [
{
"errorCode": "LINEARSCHEDULE-00027",
"description": "Schedule version can not be changed to Season template",
"data": [
"Season template"
]
}
]
}
-
When it is left out of the body, the transmission will be created on the active schedule.
-
When its value is
null, an error message is returned.
{
"statusCode": "422",
"message": "Operation cannot be completed due to violations",
"timestamp": "2022-04-11T15:21:42Z",
"concept": "Transmission",
"id": "ABBB",
"errors": [
{
"errorCode": "LINEARSCHEDULE-00029",
"description": "Schedule version can not be null",
"data": []
}
]
}
It was added to the PUT call to update a transmission (PUT /transmissions/:transmissionId:) but it is ignored because it is not possible to change the schedule version of a transmission after creation.
It was also added to the POST call to create full days (POST /fullDays). All transmissions will then be created on the chosen schedule version.
Additional fields in GET transmission calls of linear schedule API
From this version, in the response of the
-
GET call to search for a specific transmission (
GET /transmissions/:transmissionId:) -
GET call to search for transmissions (
GET /transmissions),
of the linear schedule API, additional fields have been added:
-
mediaAssetId: the external reference of the media asset linked to the transmission -
contentType: the description of the type of content, for example program, episode etc. -
exploitationRightId: the external reference of the right linked to the transmission
This caused changes to the YAML so it is recommended to execute the call to get the newest version of the YAML.
Fix for mapping of live attribute in GET call of linear schedule API
In a previous version, the live attribute in the GET call for a specific transmission (GET transmissions/:transmissionId:) mapped to the Should be live field on transmission. However, this is not the calculated value of the live state of a transmission.
This issue has been fixed in this version. The live attribute now maps to the calculated Live property of a transmission.
2021r3.000
Fix for POST /fulldaYs calls of linear schedule BAPI
In previous versions, a crash occurred when creating all transmissions for one day via the POST /fullDays call of the linear schedule BAPI. This happened when the transmissionID was not present in the call, because it did not get automatically generated.
This issue has been fixed.
2021r2.001
API version: v1.2.1
New attributes
Some new attributes have been added to the response for the GET /transmissions/:transmissionId and GET /transmissions to search for transmissions:
contractId: the external reference of the linked contractcontractNumber: the number of the linked contractrunNumber: the run number of the right used by the transmissionrunType: the run type of that the transmission uses - free rerun or runnrOfProgramSegments: the total number of program segments in the transmission across the different transmission blocks
An example of the GET call:
{
"title": null,
"transmissionId": "5655715812",
"channel": "MgX",
"template": "Tx",
"startDate": "2021-07-27",
"startTime": "16:00",
"duration": "01:00:00",
"announcedTime": "16:00",
"contentId": "3611445527",
"productCode": "Kine4",
"live": false,
"contractId": "2353219000",
"contractNumber": "21042020",
"runNumber": 1,
"runType": "run",
"nrOfProgramSegments": 2
}
Fix for empty channel or template
Previously, if you used a POST or PUT /transmission call and left the channel or template attributes empty (by specifying "template": ""), a response with status code 500 would be returned and the BAPI service (WOnRESTDefinitionService) would crash because it could not handle this request.
Now this issue has been fixed and the following response is returned when either the channel or template is empty:
{
"statusCode": "422",
"message": "Operation cannot be completed due to violations",
"timestamp": "2021-10-04T12:02:15Z",
"concept": "Transmission",
"id": "11002266",
"errors": [
{
"errorCode": "LINEARSCHEDULE-00010",
"description": "Please provide a template and channel when creating linear transmission",
"data": []
}
]
}
2021r1.001
Linear schedule API and press target lookup tables
In a previous version, EPG fields were added to the linear schedule API to be able to import competitor schedules.
To be able to create publication records with those calls, the press target is a mandatory field and important for some restrictions on the length of fields.
The logic to find the press target was: "The press target of the publication record is the press target of the channel. If there is no press target on the channel, the default press target is taken."
With the new behaviour (RN-4225), only the publication system is defined on the channel. There is no more press target on the publication system. The logic of finding the press target is determined by a lookup table.
Therefore, the logic to find the press target for the Linear schedule API was also adapted:
-
The press target should be found in the lookup table for linear press targets for the combination of the channel indicated in the call, and the publication system defined on that channel in WHATS'ON.
-
Since the press type divides the fields into different sections, the lookup rule for that channel and publication system with an empty press type is taken to cover all possible fields in the call.
-
Additionally, if there is no lookup table or there is no result from the lookup table for this combination of channel and system, the default press target on the WOnPressTarget drop-down list should be taken.
2021r1.000
EPG metadata in linear schedule API
It is possible to create and update transmissions via a REST call. It is also possible to link products to these transmissions and to create a full day of transmissions in one call.
From this version, both the calls to create and update a transmission, and the call to post a full day of transmissions, will be expanded with information that is stored on the program guide record of that transmission.
Three new fields have been created for the EPG part of the linear schedule call:
-
videoFormat -
IsRepeat -
runningYear
2020r1.002.000
POST full day of transmission in linear schedule API
A new call is created to post a full day of transmissions using the linear schedule API.
External reference cannot be cleared by BAPI
Within any POST and PUT call, if a an attribute is sent empty, WHATS'ON will clear that field. Previously, this was also possible with the external reference of a transmission.
Now, this is fixed. When no external reference is provided but the attribute is sent empty or null, we will ignore that tag and proceed as if there was no ID field (external reference) provided. This means that it should remain as is in a PUT call or return a new one in a POST call.
2019r1.000.000
API version: v1.0.0
Addition of Linear schedule API
From this version on, it is possible to manage linear transmissions using the Linear schedule API.