Release notes

2022r10

Extra custom attribute types in content, MAM and trailer API

Previously, the content, MAM and trailer API already supported the following custom attribute types:

  • Boolean

  • Date

  • Drop-down

  • Integer

  • Reference

  • String

  • Text

  • Web

From this version, the following types have been added:

  • Duration:
    With default format HH:MM:SS:iii

  • Decimal number:
    A period should be used as decimal and maximum two digits after the decimal will be returned.

  • Drop-down list for multiselection

They have been added to the calls that already supported custom attributes. A new version of the YAMLs can be retrieved to use these attributes.

In the GET calls, the following suffixes can be added to the call to either get only specified attributes in the response or all custom attributes of the supported types:

  • ?customAttributes=attributeName,attributeName

  • ?customAttributes=allCustomAttributes

For each custom attribute, the attribute name, value and type will be given. The new types will be included in the response as follows:

    "customAttributes": [
        {
            "attributeName": "customMultiMA",
            "value": [
                "Value1",
                "Value2"
            ],
            "type": "Drop-down list for multiselection"
        },
        {
            "attributeName": "cADecimal",
            "value": 2.64,
            "type": "Decimal number field"
        },
        {
            "attributeName": "cADuration",
            "value": "02:03:04.000",
            "type": "Duration field"
        }
    ]

In POST or PUT calls, an array of custom attributes needs to be provided with their attribute name and value. If the value is left empty by using null or "" for some types, the custom attribute is emptied. The new types should be specified as follows:

    "customAttributes": {
        "cADecimal": 1.23,
        "cADuration": "01:32:20.000",
        "customMultiMA": ["TestWOnDynamicDomain23"]
    }

2022r8

Fix for updating media segments with incorrect segment numbers in MAM API

Previously, when sending a POST or PUT /completeMediaAssets call with a segmentation profile that included incorrect segment numbers (for example, one with number 0), the BAPI service would crash.

This issue has been fixed. When sending a call like this, the segment numbers will automatically be corrected. An upgrade script will also correct any existing incorrect segment numbers.

Fix for historical components in GET /mediaAssets call of MAM API

Previously, when using the GET /mediaAssets call of the MAM API and the full parameter was added to the call, for example GET mam/v1/mediaAssets/1542929000?full=true, then historical components were also returned in the response body.

This issue has been fixed. Only active components are returned.

2022r7

Delivered date in MAM API

A Delivered date field has been added to media assets, which can be used for exploitation right dates. (RN-5064)

It has also been added as an optional attribute in the following calls of the MAM API:

  • POST and PUT /completeMediaAssets call

  • POST, PUT, GET and search (GET) /mediaAssets call

For example:

POST http://localhost:3000/mam/v1/mediaAssets

{
  "contentId": "142253527",
  "frameRate": "25fps",
  "label": "20000000",
  "mediaAssetId": "BAPI",
  "readyForAirDate": "2022-06-30",
  "deliveredDate": "2022-08-01"
}

Reactivate historical media assets with POST /mediaAssets call in MAM API

When a media asset is deleted, it becomes a historical media asset which cannot be used anymore.

Previously, when sending a POST /mediaAssets call using the MAM API and the call contained the mediaAssetId and mediaAssetSequenceId of a historical media asset and sequence, the following error response was returned:

{
    "statusCode": "422",
    "message": "Operation cannot be completed due to violations",
    "timestamp": "2021-08-31T14:31:19Z",
    "concept": "MediaAsset",
    "id": "334455",
    "errors": [
        {
            "errorCode": "MAM-00037",
            "description": "$_Media Asset sequence with id 23456 is not unique",
            "data": [
                "23456"
            ]
        }
    ]
}

This was because the ID was already taken by the historical sequence so it technically already existed.

From this version, in this scenario, the system will try to reactivate the media asset sequence based on the following conditions:

  • The sequence ID is historical;

  • The sequence contains only one media asset;

  • That media asset has the same ID as requested in the POST call

Afterwards, the media asset can be updated again.

Fix for multiple preferred media assets with POST /mediaAssets call of MAM API

Previously, when

  • creating a media asset through the POST /mediaAssets call of the MAM API with the attribute "preferred": true;

  • and then creating a second one with the attribute "preferred": true for the same product;

  • then both media assets would become preferred in WHATS'ON while that is not allowed.

This issue has been fixed. Now, only the last created media asset will be preferred and the indication is cleared from the other assets.

Fix for deleting linked segmentation profiles in POST /completeMediaAssets call of MAM API

Previously, when

  • a media asset contained segmentation profiles A and B; and

  • profile A was linked to a transmission in the past or future; and

  • a POST /completeMediaAssets call was sent with only profile B in the body,

then the service would crash. This was because, whenever a call contains an array of objects, and one of the existing objects was not part of the call, it would be deleted. In this scenario, segmentation profile A was linked to a transmission and could therefore not be deleted but the service could not handle this.

This issue has been fixed. In this scenario, when the transmission is

  • in the future, the segmentation profile will be removed since the same is possible in WHATS'ON.

  • in the past, the following error message will now be returned:

{
    "statusCode": "422",
    "message": "Operation cannot be completed due to violations",
    "timestamp": "2022-11-17T13:22:47Z",
    "concept": "MediaAsset",
    "id": "3938476000",
    "errors": [
        {
            "errorCode": "MAM-00038",
            "description": "$_Segmentation Profile can not be removed because it is linked in the past.
                           To remove it, the sequence should be removed",
            "data": []
        }
    ]
}

Fix for clearing parental ratings in PUT and POST calls of content and MAM API

Parental ratings on content and media assets are defined per regulator. This means they are represented as an array in API calls:

    "ratings": [
        {
            "regulator": "localRegulator",
            "rating": "12",
            "reason": null
        },
        {
            "regulator": "Ofcom",
            "rating": "allAges",
            "reason": null
        }
    ]

Previously, when trying to clear the ratings while updating a product or media asset by leaving the "rating": null in the PUT or POST calls of the APIs, an error message would appear saying the rating was invalid.

This issue has been fixed. When specifying null as value for the rating attributes, then the specific rating will be cleared. When sending null for the ratings array, all ratings per regulator will be deleted.

2022r4

Intention in GET /mediaAssetSequence call of MAM API

In a previous version, the intention was added to the PUT and POST call of a media asset sequence (2019r3.004).

Now it has been added to response of the GET /mediaAssetSequences/{mediaAssetSequenceId} call of the MAM API.

2022r2

Fix for random order of markers in GET media assets call of MAM API

When using the GET mediaAssets call of the MAM API to retrieve the details of a single media asset, the markers are also returned in the response.

Previously, when the media asset had multiple markers, they would be returned in the response in a random order each time the call was executed.

From this version, the markers will be returned in the order they have in WHATS'ON, meaning sorted on ascending time codes.

{
    "mediaAssetId": "3350420000",
    "mediaAssetSequenceId": "3350421000",
    "label": "0000000633",
    "mediaAssetLabel": "0000000633",
    "frameRate": "25fps",
    "status": null,
    "preferred": false,
    "intention": null,
    "kind": "ANTENNE",
    "TCIN": "00:00:01.10",
    "TCOUT": "02:00:00.00",
    "markers": [
        {
            "type": "hardBreakFromMediaAsset",
            "timeCode": "00:00:01.10",
            "endTimeCode": null,
            "remarks": null,
            "canBeUsedForBreak": true
        },
        {
            "type": "video",
            "timeCode": "00:30:01.10",
            "endTimeCode": null,
            "remarks": null,
            "canBeUsedForBreak": true
        },
        {
            "type": "video",
            "timeCode": "01:00:01.10",
            "endTimeCode": null,
            "remarks": null,
            "canBeUsedForBreak": true
        },
        {
            "type": "hardBreakFromMediaAsset",
            "timeCode": "02:00:00.00",
            "endTimeCode": null,
            "remarks": null,
            "canBeUsedForBreak": true
        }
    ],
    "sourceMediaAssetId": null,
    "contentId": "3261522527",
    ...
    ]
}

Fix for sorting on status in GET contents call in MAM API

In the MAM API, the GET /contents call can be used to search for media assets of a certain content item. It is possible to sort the results on several attributes including the product status.

Previously, when sending a GET /contents call with the &sort=status sort parameter, the system would crash for every call.

This issue has been fixed and now the list of media assets will be sorted correctly on the status.

2022r1

Ready for air date as search criterion for media assets in MAM API

In the MAM API, it is possible to search for media assets using the GET /mediaAssets call. A number of search criteria can be added to the query parameters of the call.

For example: /mediaAssets?filter=eq(status,Ready for broadcast)

From this version, it is possible to search for media assets based on the Ready for air date property. The date used in the query should always have the format YYYY-MM-DD. All existing search operators can be used with the criterion.

For example: /mediaAssets?filter=gt(readyForAirDate,2020-01-01)

This searches for media assets with a Ready for air date that is greater than 01/01/2020.