EVENTS

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}
  
  AutoExpirePublishingpoints {bool} - Will auto restart the event if all publihsingpoint fail. Default is false.

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.

PublishingpointsMethod {PublishingpointsMethod} - Set the method to get the publihsingpoints. "ALL_AVAILABLE" will remove duplictaes and return all, in one call. "SAME_AS_STREAM_SOURCE" will return only those for this stream source.

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.

IgnorePlayoutProfiles: {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


GET /event/playoutprofiles/{id}

Gets the Live Playout Profiles associated with the Event with the specified ID. Requires the Live Playout Profile Get permission.

Query Parameters

Name Type Required
idsOnly bool No (default: false)

Responses

Scenario Code Body
idsOnly=false 200 Array of Live Playout Profile objects
idsOnly=true 200 Array of GUID strings

Example Request

/event/playoutprofiles/50e894a0-770f-4b10-843b-9a7340f84655

Example Response

[
    {
        "id": "a782bfee-5609-40da-94b6-8e92295c8da4",
        "configurationJson": "{\"manifestFile\":\"clear_profile.isml\", ...}"
        "name": "Clear Profile"
    },
    {
        "id": "053ee005-13ba-4278-b36a-c75c835cfb80",
        "configurationJson": "{\"manifestFile\":\"drm_profile.isml\", ...}"
        "name": "DRM Profile"
    }
]

POST /event/playoutprofiles/{id}

Sets the Live Playout Profiles to associate with the Event with the specified ID. If the Event is in any one of the Playout States, then a origin manifest sync operation is performed on the Event Channel’s origin server(s) to create/update/remove playout manifests for the new Live Playout Profile collection. Requires the Live Playout Profile Edit permission.

Request Body

An array of GUID strings of the Live Playout Profiles to associate with the event.

Responses

Scenario Code Body
Success 200 Array of Origin Manifest Sync Result objects

Example Request

/event/playoutprofiles/50e894a0-770f-4b10-843b-9a7340f84655

[
    "9dbabcc5-5802-4b78-af68-85e26e87bdff",
    "232912a3-8a5b-4c23-980c-73238d5b39fd"
]

Example Response

[
    {
        "profileId": "9dbabcc5-5802-4b78-af68-85e26e87bdff",
        "eventId": "50e894a0-770f-4b10-843b-9a7340f84655",
        "success": true
    },
    {
        "profileId": "232912a3-8a5b-4c23-980c-73238d5b39fd",
        "eventId": "50e894a0-770f-4b10-843b-9a7340f84655",
        "success": false,
        "errors": [
            "Example error"
        ]
    }
]