EVENTS

Explanation here.


Event Object

{
    "video": null,
    "id": "6b94d8c5-11f8-fb93-bf3b-4018ad2b7e22",
    "title": "Committee Meeting.",
    "refId": "10079433836",
    "externalId": null,
    "remixflowId": null,
    "scheduledStart": "2018-09-27T07:00:00Z",
    "scheduledEnd": "2018-09-27T09:59:59Z",
    "eventTypeId": "b8080b0d-33e1-4a18-ad7f-207d613e9df6",
    "categoryId": "43567141-a8c3-47a6-9ed4-87d8a652a03f",
    "roomId": "7cdcfd7b-22c5-45d7-9e32-bceb8f1f1f33",
    "eventType": "COMMITTEE",
    "category": "AFET",
    "room": "JAN 2Q2",
    "state": 11,
    "stateString": "VOD_PUBLIC",
    "channelId": "11d8c354-e11e-492c-972a-1778bdf6a9e4",
    "actualLiveStart": "2018-09-27T06:25:41Z",
    "actualLiveEnd": "2018-09-27T10:07:31Z",
    "publishedStart": "2018-09-27T07:00:00Z",
    "channel": "Channel 03 / Ramp 02 / Wowza",
    "displayStart": "2018-09-27T07:00:00Z",
    "displayEnd": "2018-09-27T10:07:31Z",
    "autoStart": true,
    "autoEnd": false,
    "autoPublish": false,
    "autoStartPublications": false,
    "publishedEnd": "2018-09-27T10:07:31Z",
    "drmJson": "{\"drm_provider\":\"NONE\"}",
    "drmData": null,
    "documentUrl": "https://vis.vuworkflow.vualto.com/api/document/event/6b94d8c5-11f8-fb93-bf3b-4018ad2b7e22",
    "tagUrl": "https://vis.vuworkflow.vualto.com/api/tag/event/6b94d8c5-11f8-fb93-bf3b-4018ad2b7e22",
    "additionalStreamingOptions": "--archive_segment_length=600 --archiving=1 --archive_length=172800 --dvr_window_length=21600 --restart_on_encoder_reconnect --iss.minimum_fragment_length=8 --hls.minimum_fragment_length=8 --hds.minimum_fragment_length=8 --hls.client_manifest_version=4 --hls.no_audio_only --hls.no_multiplex",
    "taskEngineJson": "{\"parameters\":{\"content_id\":\"6b94d8c5-11f8-fb93-bf3b-4018ad2b7e22\",\"output_folder\":\"6b94d8c5-11f8-fb93-bf3b-4018ad2b7e22\",\"clips\":[{\"source\":\"http://live.origin.vualto.com/groupa/live/6b94d8c5-11f8-fb93-bf3b-4018ad2b7e22/live.isml/Manifest\",\"start\":\"2018-09-27T07:25:09.057\",\"end\":\"2018-09-27T09:59:34.863\"}],\"rest_endpoints\":[],\"encrypted\":false,\"frame_accurate\":false,\"create_mp4\":false,\"copy_ts\":true,\"create_thumbnail\":true,\"thumbnail_time\":\"\"},\"client\":\"europarl\",\"job\":{\"workflow\":\"vodcapture\"}}",
    "vuflowId": "a5d067bd-cb45-4d7b-814c-e1caa0833304",
    "vuflow": "Vuflow Production",
    "dvrLengthUrlParam": null,
    "maxBitrateUrlParam": null,
    "minBitrateUrlParam": null,
    "vodDrm": false,
    "thumbnail": null,
    "contentId": "6b94d8c5-11f8-fb93-bf3b-4018ad2b7e22",
    "instantVodStart": "2018-09-27T07:25:09Z",
    "instantVodEnd": "2018-09-27T09:59:34Z",
    "customProperties": [
        {
            "id": "c9e2c4f1-b7cc-4b44-b7c7-cebe03800745",
            "key": "Title",
            "category": "lang-bg",
            "value": ""
        },
        {
            "id": "d021babc-045e-4218-9f6f-f9858eb6ea30",
            "key": "Title",
            "category": "lang-cs",
            "value": ""
        }
    ],
    "scheduledChannelStart": "2018-09-27T06:25:00Z",
    "scheduledChannelEnd": "2018-09-27T09:59:59Z",
    "dvrLength": 21600,
    "captureVodStart": "2018-09-27T07:25:09Z",
    "captureVodEnd": "2018-09-27T09:59:34Z",
    "embededVodTimestamps": true,
    "capturingLive2Vod": false,
    "thumbnailUrl": null,
    "description": "",
    "dateModified": "2018-10-02T23:34:18Z",
    "dateCreated": "2018-09-20T14:10:26Z",
    "externalUpdateAllowed": false,
    "dateDeleted": null,
    "channelProfileId": "ee908523-df73-4ce2-a31d-36904a01002b",
    "customPropertyConfigurationId": null,
    "eventTypeColour": null,
    "remixflow": "",
    "remixDrmJson": null,
    "remixDrmData": null,
    "remixDrm": false,
    "archiverflowId": null,
    "archiverflow": "",
    "archiverCaptureId": null,
    "archiverProfileId": null,
    "archiverStart": null,
    "archiverEnd": null,
    "mp4State": 0
}

Event Collection

Actions can also return collections of Events, which include pagination information. In this, the Results propery contains an array of Event objects.

{
  "PageSize": 10,
  "TotalCount": 10,
  "Results": []
}

Supported Actions

POST /event/

Add or Update an Event.

Request Body:

  Id: {Guid} 

  Title: {string}

  RefId: {string}

  ExternalId: {string}

  ScheduledStart: {ISO8601 string}

  ScheduledEnd: {ISO8601 string}

  PublishedStart: {ISO8601 string}

  PublishedEnd: {ISO8601 string}

  RoomId: {Guid}

  EventTypeId: {Guid}

  CategoryId: {Guid}

  ChannelId: {Guid}
  
  AutoStart: {bool}

  AutoEnd: {bool}

  AutoPublish: {bool}

  AutoStartPublications: {bool}

  Tags: {array of TagModel} - see below for the structure.

  DrmJson": {string}

  AdditionalStreamingOptions": {string}

  EventState: {EventState}

  TaskEngineJson: {string}

  VuflowId: {Guid}

  DvrLength: {int}

  MaxBitrate: {int}

  MinBitrate: {int}

  VodEnableDrm: {bool}

  Thumbnail: {string}

  InstantVodStart: {ISO8601 string}

  InstantVodEnd: {ISO8601 string}

  RemixflowId: {Guid}

  CustomPropertyConfigurationId: {Guid}

  ArchiverflowId: {Guid}

  ArchiverStart: {ISO8601 string}

  ArchiverEnd: {ISO8601 string}

  RefreshIndex: {bool}

TagModel Structure:

Id: {Guid}

Name: {string}

DrmJson Example:

{
  "drm_provider": "THIRDPARTY",
  "drm_data": [
    {
      "name": "CENC",
      "key_id": "310b4b3b4300b8cc753f8dd1cbfcd563",
      "content_id": "4d64ce611775b219987ed158db746bd8",
      "widevine_drmspecific": "",
      "widevine_laurl": "http://widevine.entitlement.theplatform.eu/wv/web/ModularDrm/getWidevineLicense",
      "key_iv": "",
      "playready_laurl": "https://green.playready.entitlement.theplatform.eu/playready/rightsmanager.asmx"
    },
    {
      "name": "FAIRPLAY",
      "key_id": "161cf00a157ada7222c44a9de01d7a92",
      "key_iv": "19b09737e5000dc36f380dd7912b8ed7",
      "laurl": "skd://fairplay.entitlement.theplatform.eu/fpls/web/FairPlay"
    }
  ]
}

PATCH /event/{id}

Patch update an event by its ID.

Content Type

application/json-patch+json

Request Body:

[
  {
    "op": "replace",
    "path": "/Title",
    "value": "My event title"
  }
]

PATCH /event/reference/{referenceid}

Patch update an event by its references ID.

Content Type

application/json-patch+json

Request Body:

[
  {
    "op": "replace",
    "path": "/DrmJson",
    "value": "{\r\n  \"drm_provider\": \"THIRDPARTY\",\r\n  \"drm_data\": [\r\n    {\r\n      \"name\": \"CENC\",\r\n      \"key_id\": \"120b4b3b4300b8cc753f8dd1cbfcd563\",\r\n      \"content_id\": \"1d64ce611775b219987ed158db746bd8\",\r\n      \"widevine_drmspecific\": \"\",\r\n      \"widevine_laurl\": \"http://widevine.entitlement.theplatform.eu/wv/web/ModularDrm/getWidevineLicense\",\r\n      \"key_iv\": \"\",\r\n      \"playready_laurl\": \"https://green.playready.entitlement.theplatform.eu/playready/rightsmanager.asmx?cfg=(kid:120b4b3b4300b8cc753f8dd1cbfcd563,contentkey:NmQ2NGNlNjExNzc1YjIxOTk4N2VkMTU4ZGI3NDZiZDg=,ckt:aesctr)\"\r\n    },\r\n    {\r\n      \"name\": \"FAIRPLAY\",\r\n      \"ask\": \"\",\r\n      \"key_id\": \"141cf00a157ada7222c44a9de01d7a92\",\r\n      \"key_iv\": \"19b09737e5000dc36f380dd7912b8ed7\",\r\n      \"laurl\": \"skd://fairplay.entitlement.theplatform.eu/fpls/web/FairPlay\"\r\n    }\r\n  ]\r\n}"
  }
]

Response: 200 OK


POST /event/stream/dvrwindowlength/{id}

Update the DVR Window Lenth for the associated live stream to the given Event Id.

Request Body:

DvrWindowLength: {int}

Response: 200 OK


PUT /event/{id}/externalupdate/{flag}

Set ExternalUpdate to a given value.

Response: 200 OK


PUT /event/forcestop/{id}

Use this method to force an event into a stopped state. This function will also force stop the encoder channel it’s running under bypassing the concurrency lock mechanism and removing any existing locks. Should be used as a last resort in case the lock synchronisation becomes out of sync. Potentially dangerous as no checks will be made to see if an event channel encoder is already running.

Response: 200 OK


PUT /event/state/{id}

Update the Event state.

Send 1 (LIVE_UNPUBLISHED) or 2 (LIVE_PUBLISHED) to start the encoder. Send 4 (STOPPED) to stop the encoder.

See Event States for more information.

Response: 200 OK


PUT /event/vuflow/protection/{contentId}

Update the Event state with protection level checks.

Usual use-case is to change between VOD_PUBLIC and VOD_PRIVATE.

Request Body:

Protection: {EventState} - the state to change to.

Response: 200 OK


GET /event/

Get Events, filtered by given parameters.

Query Parameters:

From:       {string} - ISO8601 DateTime string to include Events scheduled from the given Date.

To:         {string} - ISO8601 DateTime string to include Events scheduled until the given Date.

ModifiedFrom    {string} - ISO8601 DateTime string to include Events which have been modified since the given Date.

ModifiedTo  {string} - ISO8601 DateTime string to include Events which have been modified up to the given Date.

EventState: {string} - Comma separated string including EventStates to include.

PageSize:   {int} - Number of results to consider in a page.

PageNumber: {int} - Number of the page you are requesting.

Room:       {string} - Name of the Room to filter Events on.

EventType   {string} - Name of the EventType to filter Events on.

Tags:       {string} - Comma separated string including Tags to check for on the Events.

Order:      {QueryOrder} -ASC or DESC.

SkipEvents: {string} - Comma separated GUIDs to skip or ignore in the results.

NoCache:    {bool} - Default False. Set to True to bypass cache.

Category:   {string} - Name of the Category to filter Events on.

Channel:    {string} - Name of the Channel to filter Events on.

OrderColumn:    {string} - Name of the column to order on (see supported list below).

Search:         {string} - String to search Event properties for.

NoScheduledEnd: {bool} - Set to True to only return Events with no scheduled end.

ContainsVuflow: {bool} - Set to True to filter to Events with a Vuflow.

Supported Order Columns:

Title
State
DisplayLiveStart
DisplayLiveEnd
EventType
Category
Room
Channel
Vuflow
RefId
ExternalId

All parameters are optional.

Response: 200 OK with an Event collection.


GET /event/deleted/

Get deleted Events, filtered by given parameters.

Query Parameters:

From:       {string} - Optional.

To:         {string} - Optional.

EventState: {string} - Optional. Comma separated list of Event states.

Response: 200 OK with an Event collection.


GET /event/{id}

Get Event by Id.

Query Parameters:

In:       {string} - ISO8601 DateTime string to be the streaming In point.

Out:      {string} - ISO8601 DateTime string to be the streaming Out point.

AudioOnly:    {bool}

AutoStart:    {bool}

ProcessVideo: {bool} - Set to True to return video data.

ViewUnpublished: {bool} - Set to True to return video data which allows viewing of LIVE_UNPUBLISHED.

NoCache: {bool} - Set to True to bypass cache.

StreamSource: {StreamSource} - Specify the StreamSource for fetching from Origin.

All parameters are optional.

Response:

200 OK and JSON containing the Event object.

or

204 No Content if no Event was found.


GET /event/reference/{referenceId}

Get Event by Reference Id.

Response:

200 OK and JSON containing the Event object.

or

204 No Content if no Event was found.


GET /event/external/{externalId}

Get Event by External Id.

Response:

200 OK and JSON containing the Event object.

or

204 No Content if no Event was found.


GET /event/external/unique/{externalId}

Check if a given ExternalId is in use or not.

Response: 200 OK and the following JSON content:

{
  "IsUnique": true,
  "Value": "externalId-value-here",
  "ValueType": "External ID"
}

GET /event/reference/unique/{referenceId}

Check if a given ReferenceId is in use or not.

Response: 200 OK and the following JSON content:

{
  "IsUnique": true,
  "Value": "referenceId-value-here",
  "ValueType": "Reference ID"
}

GET /event/{id}/externalupdate/

Check if the given Event has externalupdate allowed or not.

Response: 200 OK and the following JSON content:

{ "Id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx", "ExternalUpdateAllowed": true}


GET /event/channel/{id}

Gets the currently running Event for a specific Channel Id.

Response: 200 OK and JSON containing the Event object.


GET /event/clone/{id}

Clone the given Event to create a new one.

Query Parameters:

IgnoreCustomProperties: {bool} - Optional. Defaults to false.

IgnoreChapterPoints: {bool} - Optional. Defaults to false.

IgnoreChannelProfile: {bool} - Optional. Defaults to false. 

IgnoreDocuments: {bool} - Optional. Defaults to false.

Response: 200 OK and JSON containing the Event object.


GET /event/restore/{id}

Restore the Event from a soft-deletion state.

Response: 200 OK


DEL /event/{id}

Delete an Event by Id.

Query Parameters:

HardDelete: {bool} - Optional. Defaults to false. Set to true to remove all data from the database & servers.

Response: 200 OK


POST /event/clearcache/

Clear the cache for a given Event Id.

Request Body:

EventId: {Guid} - Required. The Id of the Event to remove associated cache for.

Response: 200 OK