{
    "additionalProperties": false,
    "description": "Context Schema for a Roku video event (reflects the Video node: https://developer.roku.com/en-gb/docs/references/scenegraph/media-playback-nodes/video.md)",
    "properties": {
        "contentId": {
            "description": "ID of video provided in content metadata.",
            "maxLength": 255,
            "type": [
                "string",
                "null"
            ]
        },
        "contentTitle": {
            "description": "Title of video provided in content metadata.",
            "maxLength": 65535,
            "type": [
                "string",
                "null"
            ]
        },
        "contentType": {
            "description": "Category of video (e.g., movie, season, series) provided in content metadata.",
            "maxLength": 255,
            "type": [
                "string",
                "null"
            ]
        },
        "contentUrl": {
            "_format": "uri",
            "description": "URL of video provided in content metadata.",
            "maxLength": 65535,
            "type": [
                "string",
                "null"
            ]
        },
        "errorStr": {
            "description": "A diagnostic message indicating a video play error. Refer to the Roku Video documentation for the format of the string.",
            "maxLength": 65535,
            "type": [
                "string",
                "null"
            ]
        },
        "height": {
            "description": "Height of the video play window in pixels. 0 if the play window is set to the height of the entire display screen.",
            "maximum": 65535,
            "minimum": 0,
            "type": "integer"
        },
        "isResumed": {
            "description": "Indicates whether the playback was resumed after trickplay.",
            "type": [
                "boolean",
                "null"
            ]
        },
        "isUnderrun": {
            "description": "Indicates whether the stream was downloaded due to an underrun.",
            "type": [
                "boolean",
                "null"
            ]
        },
        "measuredBitrate": {
            "description": "Measured bitrate (bps) of the network when the stream was selected.",
            "maximum": 2147483647,
            "minimum": 0,
            "type": [
                "integer",
                "null"
            ]
        },
        "streamBitrate": {
            "description": "Current bitrate of the stream.",
            "maximum": 2147483647,
            "minimum": 0,
            "type": [
                "integer",
                "null"
            ]
        },
        "streamFormat": {
            "description": "Container format of video (e.g., mp4, wma, mkv) provided in content metadata.",
            "maxLength": 255,
            "type": [
                "string",
                "null"
            ]
        },
        "streamUrl": {
            "_format": "uri",
            "description": "URL of the current stream.",
            "maxLength": 65535,
            "type": [
                "string",
                "null"
            ]
        },
        "timeToStartStreaming": {
            "description": "Time in seconds from playback being started until the video actually began playing.",
            "maximum": 9007199254740991,
            "minimum": 0,
            "type": [
                "number",
                "null"
            ]
        },
        "videoFormat": {
            "description": "Video codec of the currently playing video stream (e.g., hevc, mpeg2, mpeg4_15).",
            "maxLength": 255,
            "type": [
                "string",
                "null"
            ]
        },
        "videoId": {
            "description": "ID generated when video tracking of the video node was initialized.",
            "maxLength": 255,
            "type": "string"
        },
        "width": {
            "description": "Width of the video play window in pixels. 0 if the play window is set to the width of the entire display screen.",
            "maximum": 65535,
            "minimum": 0,
            "type": "integer"
        }
    },
    "required": [
        "videoId",
        "width",
        "height"
    ],
    "self": {
        "format": "jsonschema",
        "name": "video",
        "vendor": "com.roku",
        "version": "1-0-0"
    },
    "type": "object"
}