Assets


Assets represent additional content related to a given Event. These are typically .gifs .jpgs and .mp4s but also other system based files such as .ism (if you are using USP) for example.

As Assets are related to an Event they provide accessible URLs to the file by using the configured Vuflow on the Event. You will need to make sure storageUrlPublic is set on the configuration JSON.


Asset State

Assets can be requested, so are therefore tracked by the system. Each Asset has a state, defined below:

  • 0 = GENERATING
  • 1 = COMPLETED
  • 2 = FAILED

Asset Type

Assets are also ‘typed’ to identify purpose within the system. In general, Assets with a SYSTEM type were generated by a process within the system, whereas other types are user generated (see below).

  • 0 = SYSTEM
  • 1 = IMAGE
  • 2 = VIDEO
  • 3 = GIF

Asset Object

{
  "id": "be336dfa-2b79-41e0-b9ad-3256bba60722",
  "eventId": "c543b222-86fd-4905-b570-33f2fc6e8a82",
  "name": "Example Asset",
  "path": "path-to-content/filename.extension",
  "extension": "extension",
  "state": 1,
  "stateString": "COMPLETED",
  "type": 0,
  "typeString": "SYSTEM",
  "jobId": "9001",
  "contentId": "content-id-here",
  "dateCreated": "2020-03-18T17:42:28Z",
  "dateModified": "2020-03-18T17:42:28Z",
  "url": "http://configured-vuflow-url.com/path-to-content/filename.extension"
}

Supported Actions

POST /asset/gif/

Request a new GIF Asset for the Event.

Request Body:

{
    "clip": {
        "eventId": "c8e46941-b513-49dc-a9a6-868a9998a062",
        "start": "00:00:46",
        "end": "00:00:52"
    },
    "name": "Example GIF",
    "fps": 18,
    "height": null,
    "width": null,
    "playbackRepeats": 0,
    "reverse": false,
    "playbackSpeed": 1.0
}

Property Documentation:

Name Type Required Description
clip.eventId string Yes The Event Id
clip.start string Yes HH:mm:ss.fff from the beginning of the stream
clip.end string Yes HH:mm:ss.fff from the beginning of the stream
name string Yes The name of the Asset
fps int No The FPS of the GIF
height float No The height of the GIF
width float No The width of the GIF
playbackSpeed float No Alters the playback speed where 0.0 is a still frame and 1.0 is a normal speed
playbackRepeats int No Alters the number of times the GIF will repeat where -1 is disabled, 0 is infinite, and n is N repetitions
filename string No The filename to set. Defaults to using the Asset name if not provided
priority int No The priority to process this request at. Defaults to 5, can be set from 1 (highest) to 10 (lowest)

Response: 200 OK and JSON containing the new Asset object.


POST /asset/video/

Request a new VIDEO Asset for the Event.

Request Body:

{
    "clip": {
        "eventId": "c8e46941-b513-49dc-a9a6-868a9998a062",
        "start": "00:00:46",
        "end": "00:00:52",
        "filter": null
    },
    "name": "Example Video",
    "mezzanine": false,
    "frameAccurate": false,
    "copyTs": false,
    "priority": null,
    "filename": null
}

Property Documentation:

Name Type Required Description
clip.eventId string Yes The Event Id
clip.start string Yes ISO8601 if the stream contains timecode information, otherwise HH:mm:ss.fff
clip.end string Yes ISO8601 if the stream contains timecode information, otherwise HH:mm:ss.fff
clip.filter string No You can use the Filter to insert USP filter options. Example: “(type==”video”&&DisplayHeight==576)”
name string Yes The name of the Asset
mezzanine float No Specifies whether to include all tracks (false) or only the highest (true)
frameAccurate int No Specified whether the capturing should be frame accurate or not
copyTs bool No Specifies whether to copy the timestamps into the file or not
filename string No The filename to set. Defaults to using the Asset name if not provided
priority int No The priority to process this request at. Defaults to 5, can be set from 1 (highest) to 10 (lowest)

POST /asset/image/

Request a new IMAGE Asset for the Event.

Request Body:

{
  "eventId": "c8e46941-b513-49dc-a9a6-868a9998a062",
  "name": "JPEG from 5 seconds in",
  "time": "00:00:05",
  "priority": null,
  "filename": null
}

Property Documentation:

Name Type Required Description
eventId string Yes The Event Id
name string Yes The name of the Asset
time string Yes ISO8601 if the stream contains timecode information, otherwise HH:mm:ss.fff
filename string No The filename to set. Defaults to using the Asset name if not provided.
priority int No The priority to process this request at. Defaults to 5, can be set from 1 (highest) to 10 (lowest)

Response: 200 OK and JSON containing the new Asset object.


PUT /asset/{id}/

Rename an Asset by Id.

Query Parameters:

Name: {string} - Required. The new name for the Asset.

Response: 200 OK and JSON containing the new Asset object.


PUT /asset/sync/{event-id}

Synchronise Event Assets by Event Id. This will interrogate the storage location for both files that need to have Assets created, and Assets which relate to missing files.

The Event must have an associated VOD file as that is considered the location to synchronise to. Files that exist outside of the VOD file folder will be persisted as long as they do exist.

Response: 200 OK and JSON containing the following:

{
    "hasVodFileChanged": false,
    "createdAssetsCount": 0,
    "deletedAssetsCount": 0,
    "pathEvaluated": "content/vod/folder"
}

GET /asset/

Get many Assets.

Query Parameters:

Name Type Required Description
eventId guid No The Event Id to filter to.
contentId string No The Content Id to filter to.
jobId string No The Job Id to filter to.
name string No The Name to filter to.
states string No A comma-separated list of AssetStates to filter to.
types string No A comma-separated list of AssetTypes to filter to.
extensions string No A comma-separated list of extensions to filter to.
noCache bool No Whether or not to bypass cache. Defaults to False.

Note: extensions do not have to be filename extensions specifically, but must include them. i.e. you can filter to _sprite.jpg

Response: 200 OK and a JSON array containing multiple Asset objects.


GET /asset/{id}/

Get an Asset by Id.

Query Parameters:

Name Type Required Description
noCache bool No Whether or not to bypass cache. Defaults to False.

Response: 200 OK and JSON containing the Asset object.


DEL /asset/

Delete many Assets. SYSTEM Assets are not deleted. You must provide at least 1 optional parameter.

Query Parameters:

Name Type Required Description
eventId guid No The Event Id to filter to.
contentId string No The Content Id to filter to.
jobId string No The Job Id to filter to.
name string No The Name to filter to.
states string No A comma-separated list of AssetStates to filter to.
types string No A comma-separated list of AssetTypes to filter to.

Response: 200 OK


DEL /asset/{id}

Delete an Asset by Id. SYSTEM Assets are not deletable.

Response: 200 OK