{
  "x-generator": "NSwag v13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))",
  "openapi": "3.0.0",
  "info": {
    "title": "Stream API",
    "termsOfService": "https://bunny.net/tos",
    "contact": {
      "name": "bunny.net",
      "url": "https://docs.bunny.net",
      "email": "support@bunny.net"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://video.bunnycdn.com"
    }
  ],
  "paths": {
    "/library/{libraryId}/collections/{collectionId}": {
      "get": {
        "tags": [
          "Manage Collections"
        ],
        "summary": "Get Collection",
        "operationId": "Collection_GetCollection",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "collectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "includeThumbnails",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the requested collection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested collection was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      },
      "post": {
        "tags": [
          "Manage Collections"
        ],
        "summary": "Update Collection",
        "operationId": "Collection_UpdateCollection",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "collectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCollectionModel"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "The collection was successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested collection was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Manage Collections"
        ],
        "summary": "Delete Collection",
        "operationId": "Collection_DeleteCollection",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "collectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "The collection was successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested collection was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/collections": {
      "get": {
        "tags": [
          "Manage Collections"
        ],
        "summary": "Get Collection List",
        "operationId": "Collection_List",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 2
          },
          {
            "name": "itemsPerPage",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            },
            "x-position": 3
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "orderBy",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "date",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "includeThumbnails",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "The list of videos for the current parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginationListOfCollectionModel"
                }
              }
            }
          },
          "401": {
            "description": "The request authentication failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      },
      "post": {
        "tags": [
          "Manage Collections"
        ],
        "summary": "Create Collection",
        "operationId": "Collection_CreateCollection",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCollectionModel"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "The collection was successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionModel"
                }
              }
            }
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}": {
      "get": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Get Video",
        "operationId": "Video_GetVideo",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the requested video",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      },
      "post": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Update Video",
        "operationId": "Video_UpdateVideo",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVideoModel"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "The thumbnail was successfully set",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Delete Video",
        "operationId": "Video_DeleteVideo",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "The video was successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      },
      "put": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Upload Video",
        "operationId": "Video_UploadVideo",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "jitEnabled",
            "in": "query",
            "description": "Marks whether JIT encoding should be enabled for this video (works only when Premium Encoding is enabled), overrides library settings",
            "schema": {
              "type": "boolean"
            },
            "x-position": 3
          },
          {
            "name": "enabledResolutions",
            "in": "query",
            "description": "Comma separated list of resolutions enabled for encoding, available options: 240p, 360p, 480p, 720p, 1080p, 1440p, 2160p",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "enabledOutputCodecs",
            "in": "query",
            "description": "List of codecs that will be used to encode the file (overrides library settings). Available values: x264, vp9",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "transcribeEnabled",
            "in": "query",
            "description": "Setting this to true will enable transcription on this video. Enabling this will incur transcription charges",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "transcribeLanguages",
            "in": "query",
            "description": "Comma separated list of languages that will be used as target languages, use ISO 639-1 language codes.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 8
          },
          {
            "name": "sourceLanguage",
            "in": "query",
            "description": "Language spoken in the video, use ISO 639-1 language codes.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 9
          },
          {
            "name": "generateTitle",
            "in": "query",
            "description": "Whether video title should be generated from transcription.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 10
          },
          {
            "name": "generateDescription",
            "in": "query",
            "description": "Whether video description should be generated from transcription.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 11
          },
          {
            "name": "generateChapters",
            "in": "query",
            "description": "Whether video chapters should be generated from transcription.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 12
          },
          {
            "name": "generateMoments",
            "in": "query",
            "description": "Whether video moments should be generated from transcription.",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 13
          }
        ],
        "requestBody": {
          "description": "Video file to upload",
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary",
                "nullable": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The video was successfully uploaded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "400": {
            "description": "The requested video was already uploaded"
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/heatmap": {
      "get": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Get Video Heatmap",
        "description": "Returns the attention heatmap for a specific video, showing relative viewer interest across the timeline. May be unavailable if the feature is disabled or there isn't enough viewing data.",
        "operationId": "Video_GetVideoHeatmap",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "description": "The ID of the video library.",
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "description": "The GUID of the video.",
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "The heatmap of the requested video.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoHeatmapModel"
                }
              }
            }
          },
          "404": {
            "description": "Video not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/play": {
      "get": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Get Video play data",
        "operationId": "Video_GetVideoPlayData",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "token",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "expires",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64",
              "default": 0
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "The play data of the requested video",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoPlayDataModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/library/{libraryId}/videos/{videoId}/play/heatmap": {
      "get": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Get Video heatmap data",
        "operationId": "Video_GetVideoHeatmapData",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "token",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "expires",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64",
              "default": 0
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "The heatmap data of the requested video",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoPlayDataModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/library/{libraryId}/statistics": {
      "get": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Get Video Statistics",
        "description": "Returns time-series views and watch time, plus country-level aggregates, at the library level or for a specific video. Control the time window with dateFrom/dateTo and the granularity with hourly. Basic safeguards prevent spam and bot inflation by de-duplicating sessions and ignoring obviously invalid events.",
        "operationId": "Video_GetVideoStatistics",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "Optional start of the time range (UTC). If omitted or invalid, the last 30 days are returned.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "Optional end of the time range (UTC). If omitted with a valid start, defaults to now; otherwise the last 30 days are returned.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "hourly",
            "in": "query",
            "description": "Optional. If true, returns hourly data; otherwise daily (UTC). Default is daily.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 4
          },
          {
            "name": "videoGuid",
            "in": "query",
            "description": "Optional video GUID to filter results. When omitted, returns library-level aggregates.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "Statistics including time-series views and watch time, country breakdowns, and engagement score when available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoStatisticsModel"
                }
              }
            }
          },
          "404": {
            "description": "Video not found (when filtering by videoGuid)"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/reencode": {
      "post": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Reencode Video",
        "operationId": "Video_ReencodeVideo",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the requested video",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoModel"
                }
              }
            }
          },
          "400": {
            "description": "Original file is missing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/outputs/{outputCodecId}": {
      "put": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Add output codec to video",
        "operationId": "Video_ReencodeUsingCodec",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "outputCodecId",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EncoderOutputCodec"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the requested video",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoModel"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or validation failed, check response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/repackage": {
      "post": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Repackage Video",
        "operationId": "Video_Repackage",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "keepOriginalFiles",
            "in": "query",
            "description": "Marks whether previous file versions should be kept in storage, allows for faster repackage later on. Default is true.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the requested video",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoModel"
                }
              }
            }
          },
          "400": {
            "description": "Enterprise DRM is disabled for the library, repackaging not available"
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos": {
      "get": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "List Videos",
        "operationId": "Video_List",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            },
            "x-position": 2
          },
          {
            "name": "itemsPerPage",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            },
            "x-position": 3
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "collection",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "orderBy",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "date",
              "nullable": true
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "The list of videos for the current parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginationListOfVideoModel"
                }
              }
            }
          },
          "401": {
            "description": "The request authentication failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      },
      "post": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Create Video",
        "operationId": "Video_CreateVideo",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          }
        ],
        "requestBody": {
          "x-name": "model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVideoModel"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "The video was successfully created and returned as the response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoModel"
                }
              }
            }
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "400": {
            "description": "Request was invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/thumbnail": {
      "post": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Set Thumbnail",
        "operationId": "Video_SetThumbnail",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "thumbnailUrl",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "description": "Optional thumbnail file to upload",
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary",
                "nullable": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The thumbnail was successfully set",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/fetch": {
      "post": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Fetch Video",
        "operationId": "Video_FetchNewVideo",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "collectionId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "thumbnailTime",
            "in": "query",
            "description": "(Optional) Video time in ms to extract the main video thumbnail.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FetchVideoRequest"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "200": {
            "description": "The video was successfully fetched",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "400": {
            "description": "Failed fetching the video"
          },
          "429": {
            "description": "Too many fetch jobs queued. Please try again later.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/captions/{srclang}": {
      "post": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Add Caption",
        "operationId": "Video_AddCaption",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "srclang",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "captionModel",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaptionModelAdd"
              }
            }
          },
          "required": true,
          "x-position": 4
        },
        "responses": {
          "200": {
            "description": "The caption was successfully uploaded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "400": {
            "description": "Failed uploading the captions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaptionValidationModel"
                }
              }
            }
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Delete Caption",
        "operationId": "Video_DeleteCaption",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "srclang",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "The caption was successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "400": {
            "description": "Failed deleting the captions"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/transcribe": {
      "post": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Transcribe video",
        "operationId": "Video_TranscribeVideo",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "force",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 4
          }
        ],
        "requestBody": {
          "x-name": "transcribeSettings",
          "description": "Used to override video library transcription settings, null by default",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TranscribeSettings"
              }
            }
          },
          "x-position": 5
        },
        "responses": {
          "200": {
            "description": "The transcription was queued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request for transcription queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "401": {
            "description": "The request authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "403": {
            "description": "The request authorization failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/smart": {
      "post": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Trigger Smart actions",
        "operationId": "Video_SmartGenerate",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SmartGenerateModel"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "202": {
            "description": "The smart action was queued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "429": {
            "description": "Limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request for smart feature",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "401": {
            "description": "The request authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "403": {
            "description": "The request authorization failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/resolutions": {
      "get": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Video resolutions info",
        "operationId": "Video_GetVideoResolutions",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "The resolutions info.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModelOfVideoResolutionsInfoModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/storage": {
      "get": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Get video storage size info",
        "operationId": "Video_GetVideoStorageSize",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "The storage size information for the video.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModelOfVideoStorageSizeModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authorization failed"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "408": {
            "description": "Request timeout"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/library/{libraryId}/videos/{videoId}/resolutions/cleanup": {
      "post": {
        "tags": [
          "Manage Videos"
        ],
        "summary": "Cleanup unconfigured resolutions",
        "operationId": "Video_DeleteResolutions",
        "parameters": [
          {
            "name": "libraryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "x-position": 1
          },
          {
            "name": "videoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "resolutionsToDelete",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "deleteNonConfiguredResolutions",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 4
          },
          {
            "name": "allResolutions",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 5
          },
          {
            "name": "deleteOriginal",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 6
          },
          {
            "name": "outputs",
            "in": "query",
            "description": "Outputs to clean. Supported values: hls, mp4, all",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 7
          },
          {
            "name": "deleteMp4Files",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 8
          },
          {
            "name": "dryRun",
            "in": "query",
            "description": "If set to true, no actual file manipulation will happen, only informational data will be returned",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 9
          }
        ],
        "responses": {
          "200": {
            "description": "The resolutions were successfully deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusModel"
                }
              }
            }
          },
          "404": {
            "description": "The requested video was not found"
          },
          "401": {
            "description": "The request authentication failed"
          },
          "403": {
            "description": "The request authorization failed"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "AccessKey": []
          }
        ]
      }
    },
    "/OEmbed": {
      "get": {
        "tags": [
          "OEmbed"
        ],
        "operationId": "OEmbed_GetOEmbed",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "maxWidth",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "maxHeight",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "token",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "expires",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64",
              "default": 0
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoOEmbedModel"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "CollectionModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "videoLibraryId": {
            "type": "integer",
            "description": "The video library ID that contains the collection",
            "format": "int64"
          },
          "guid": {
            "type": "string",
            "description": "The unique ID of the collection",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name of the collection",
            "nullable": true
          },
          "videoCount": {
            "type": "integer",
            "description": "The number of videos that the collection contains",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "The total storage size of the collection",
            "format": "int64"
          },
          "previewVideoIds": {
            "type": "string",
            "description": "The IDs of videos to be used as preview icons",
            "nullable": true
          },
          "previewImageUrls": {
            "type": "array",
            "description": "The URLs of preview images of videos in the collection",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "PaginationListOfCollectionModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalItems": {
            "type": "integer",
            "description": "The total number of items that can be returned",
            "format": "int64"
          },
          "currentPage": {
            "type": "integer",
            "description": "The current page of the response",
            "format": "int64"
          },
          "itemsPerPage": {
            "type": "integer",
            "description": "The number of items returned per page",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "description": "The result items on the current result",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CollectionModel"
            }
          }
        }
      },
      "UpdateCollectionModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the collection",
            "nullable": true
          }
        }
      },
      "StatusModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Determines if the request was successful"
          },
          "message": {
            "type": "string",
            "description": "Response message description",
            "nullable": true
          },
          "statusCode": {
            "type": "integer",
            "description": "The response status code",
            "format": "int32"
          }
        }
      },
      "VideoLibraryStatus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "videoCount": {
            "type": "integer",
            "description": "The total number of videos contained by the video library",
            "format": "int64"
          },
          "liveStreamCount": {
            "type": "integer",
            "description": "The total number of live streams contained by the video library",
            "format": "int64"
          },
          "collectionCount": {
            "type": "integer",
            "description": "The total number of collections contained by the video library",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "LiveStreamModel": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "videoLibraryId",
          "guid",
          "title",
          "public",
          "status",
          "dateCreated",
          "streamKey",
          "playbackUrlHls",
          "dvrEnabled",
          "recordVod",
          "availableResolutions",
          "ingestRegion"
        ],
        "properties": {
          "videoLibraryId": {
            "type": "integer",
            "description": "The ID of the video library that the live stream belongs to",
            "format": "int64"
          },
          "guid": {
            "type": "string",
            "description": "The unique ID of the live stream",
            "format": "guid",
            "minLength": 1
          },
          "title": {
            "type": "string",
            "description": "The title of the live stream",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "description": "The description of the live stream",
            "nullable": true
          },
          "category": {
            "type": "string",
            "description": "The category of the live stream",
            "nullable": true
          },
          "collectionId": {
            "type": "string",
            "description": "The ID of the collection where the live stream belongs",
            "nullable": true
          },
          "public": {
            "type": "boolean",
            "description": "Determines if the live stream is publicly accessible"
          },
          "status": {
            "description": "The status of the live stream. See LiveStreamStatus.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/LiveStreamStatus"
              }
            ]
          },
          "dateCreated": {
            "type": "string",
            "description": "The date when the live stream was created",
            "format": "date-time",
            "minLength": 1
          },
          "scheduledStartTime": {
            "type": "string",
            "description": "The scheduled start time of the live stream (optional)",
            "format": "date-time",
            "nullable": true
          },
          "scheduledEndTime": {
            "type": "string",
            "description": "The scheduled end time of the live stream (optional)",
            "format": "date-time",
            "nullable": true
          },
          "startedAt": {
            "type": "string",
            "description": "The date and time when the live stream publishing started",
            "format": "date-time",
            "nullable": true
          },
          "endedAt": {
            "type": "string",
            "description": "The date and time when the live stream publishing ended",
            "format": "date-time",
            "nullable": true
          },
          "durationSeconds": {
            "type": "integer",
            "description": "The duration of the live stream in seconds",
            "format": "int32",
            "nullable": true
          },
          "streamKey": {
            "type": "string",
            "description": "The stream key required for publishing the live stream",
            "minLength": 1
          },
          "playbackUrlHls": {
            "type": "string",
            "description": "The HLS playback URL of the live stream",
            "minLength": 1
          },
          "dvrEnabled": {
            "type": "boolean",
            "description": "Determines if DVR is enabled for the live stream"
          },
          "dvrWindowSeconds": {
            "type": "integer",
            "description": "The DVR window size in seconds, required when DvrEnabled is true",
            "format": "int32",
            "nullable": true
          },
          "recordVod": {
            "type": "boolean",
            "description": "Determines if a VOD recording should be created for the live stream"
          },
          "availableResolutions": {
            "type": "string",
            "description": "The available output resolutions of the live stream",
            "minLength": 1
          },
          "width": {
            "type": "integer",
            "description": "The input video width in pixels",
            "format": "int32",
            "nullable": true
          },
          "height": {
            "type": "integer",
            "description": "The input video height in pixels",
            "format": "int32",
            "nullable": true
          },
          "framerate": {
            "type": "number",
            "description": "The framerate of the input stream",
            "format": "double",
            "nullable": true
          },
          "ingestRegion": {
            "type": "string",
            "description": "The primary ingest region of the live stream",
            "minLength": 1
          },
          "peakConcurrentViewers": {
            "type": "integer",
            "description": "The peak number of concurrent viewers",
            "format": "int32",
            "nullable": true
          },
          "totalViewerSeconds": {
            "type": "integer",
            "description": "The total viewer watch time in seconds",
            "format": "int64",
            "nullable": true
          },
          "thumbnailFileName": {
            "type": "string",
            "description": "The file name of the thumbnail inside of the storage",
            "nullable": true
          },
          "thumbnailUpdatedAt": {
            "type": "string",
            "description": "The date and time when the thumbnail was last updated",
            "format": "date-time",
            "nullable": true
          },
          "enableCountdown": {
            "type": "boolean",
            "description": "Determines if countdown should be shown in player before the stream start, if it was scheduled",
            "nullable": true
          },
          "rtmpOutputs": {
            "type": "array",
            "description": "A list of up to 4 RTMP outputs that the incoming stream will be forwarded to",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/RtmpOutput"
            }
          },
          "preStreamTrailerVideoId": {
            "type": "string",
            "description": "Video ID of the trailer that will be played before the live stream starts",
            "nullable": true
          }
        }
      },
      "LiveStreamStatus": {
        "type": "integer",
        "description": "0 = Unknown\n1 = Created\n2 = Scheduled\n3 = Preview\n4 = Running\n5 = Ended\n6 = VodProcessing\n7 = Error",
        "x-enumNames": [
          "Unknown",
          "Created",
          "Scheduled",
          "Preview",
          "Running",
          "Ended",
          "VodProcessing",
          "Error"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7
        ]
      },
      "RtmpOutput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "endpoint": {
            "type": "string",
            "description": "RTMP output endpoint URL",
            "format": "uri",
            "nullable": true
          },
          "streamKey": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LiveStreamPlayDataModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "liveStream": {
            "description": "Live stream data.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LiveStreamModel"
              }
            ]
          },
          "libraryName": {
            "type": "string",
            "nullable": true
          },
          "captionsPath": {
            "type": "string",
            "nullable": true
          },
          "seekPath": {
            "type": "string",
            "nullable": true
          },
          "thumbnailUrl": {
            "type": "string",
            "nullable": true
          },
          "fallbackUrl": {
            "type": "string",
            "nullable": true
          },
          "videoPlaylistUrl": {
            "type": "string",
            "nullable": true
          },
          "originalUrl": {
            "type": "string",
            "nullable": true
          },
          "previewUrl": {
            "type": "string",
            "nullable": true
          },
          "controls": {
            "type": "string",
            "nullable": true
          },
          "enableDRM": {
            "type": "boolean"
          },
          "drmVersion": {
            "type": "integer",
            "format": "int32"
          },
          "playerKeyColor": {
            "type": "string",
            "nullable": true
          },
          "vastTagUrl": {
            "type": "string",
            "nullable": true
          },
          "viAiPublisherId": {
            "type": "string",
            "nullable": true
          },
          "captionsFontSize": {
            "type": "integer",
            "format": "int32"
          },
          "captionsFontColor": {
            "type": "string",
            "nullable": true
          },
          "captionsBackground": {
            "type": "string",
            "nullable": true
          },
          "uiLanguage": {
            "type": "string",
            "nullable": true
          },
          "allowEarlyPlay": {
            "type": "boolean"
          },
          "tokenAuthEnabled": {
            "type": "boolean"
          },
          "enableMP4Fallback": {
            "type": "boolean"
          },
          "showHeatmap": {
            "type": "boolean"
          },
          "fontFamily": {
            "type": "string",
            "nullable": true
          },
          "playbackSpeeds": {
            "type": "string",
            "nullable": true
          },
          "widevineMinClientSecurityLevel": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "zoneTier": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "rememberPlayerPosition": {
            "type": "boolean"
          }
        }
      },
      "StatusModelOfListOfString": {
        "allOf": [
          {
            "$ref": "#/components/schemas/StatusModel"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "data": {
                "type": "array",
                "nullable": true,
                "items": {
                  "type": "string"
                }
              }
            }
          }
        ]
      },
      "CreateLiveStreamModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the live stream",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The description of the live stream",
            "nullable": true
          },
          "collectionId": {
            "type": "string",
            "description": "The ID of the collection where the live stream belongs",
            "nullable": true
          },
          "dvrEnabled": {
            "type": "boolean",
            "description": "Determines if DVR is enabled for the live stream"
          },
          "dvrWindowSeconds": {
            "type": "integer",
            "description": "The DVR window size in seconds, required when DvrEnabled is true, max is 12 hours",
            "format": "int32",
            "maximum": 43200.0,
            "minimum": 1.0,
            "nullable": true
          },
          "recordVod": {
            "type": "boolean",
            "description": "Determines if a VOD recording should be created for the live stream"
          },
          "scheduledStartTime": {
            "type": "string",
            "description": "The scheduled start time of the live stream (optional, UTC)",
            "format": "date-time",
            "nullable": true
          },
          "scheduledEndTime": {
            "type": "string",
            "description": "The scheduled end time of the live stream (optional, UTC)",
            "format": "date-time",
            "nullable": true
          },
          "public": {
            "type": "boolean",
            "description": "Determines if the live stream is publicly accessible, defaults to true"
          },
          "enableCountdown": {
            "type": "boolean",
            "description": "Determines if countdown should be shown in player before the stream start, if it was scheduled",
            "nullable": true
          },
          "rtmpOutputs": {
            "type": "array",
            "description": "A list of up to 4 RTMP outputs that the incoming stream will be forwarded to",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/RtmpOutput"
            }
          },
          "preStreamTrailerVideoId": {
            "type": "string",
            "description": "Video ID of the trailer that will be played before the live stream starts",
            "nullable": true
          }
        }
      },
      "UpdateLiveStreamModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the live stream",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The description of the live stream",
            "nullable": true
          },
          "collectionId": {
            "type": "string",
            "description": "The ID of the collection where the live stream belongs",
            "nullable": true
          },
          "dvrEnabled": {
            "type": "boolean",
            "description": "Determines if DVR is enabled for the live stream"
          },
          "dvrWindowSeconds": {
            "type": "integer",
            "description": "The DVR window size in seconds, required when DvrEnabled is true, max is 12 hours",
            "format": "int32",
            "maximum": 43200.0,
            "minimum": 1.0,
            "nullable": true
          },
          "recordVod": {
            "type": "boolean",
            "description": "Determines if a VOD recording should be created for the live stream"
          },
          "scheduledStartTime": {
            "type": "string",
            "description": "The scheduled start time of the live stream (optional, UTC)",
            "format": "date-time",
            "nullable": true
          },
          "scheduledEndTime": {
            "type": "string",
            "description": "The scheduled end time of the live stream (optional, UTC)",
            "format": "date-time",
            "nullable": true
          },
          "public": {
            "type": "boolean",
            "description": "Determines if the live stream is publicly accessible, defaults to true"
          },
          "enableCountdown": {
            "type": "boolean",
            "description": "Determines if countdown should be shown in player before the stream start, if it was scheduled (optional)",
            "nullable": true
          },
          "preStreamTrailerVideoId": {
            "type": "string",
            "description": "Video ID of the trailer that will be played before the live stream starts",
            "nullable": true
          },
          "rtmpOutputs": {
            "type": "array",
            "description": "A list of up to 4 RTMP outputs that the incoming stream will be forwarded to",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/RtmpOutput"
            }
          }
        }
      },
      "PaginationListOfLiveStreamModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalItems": {
            "type": "integer",
            "description": "The total number of items that can be returned",
            "format": "int64"
          },
          "currentPage": {
            "type": "integer",
            "description": "The current page of the response",
            "format": "int64"
          },
          "itemsPerPage": {
            "type": "integer",
            "description": "The number of items returned per page",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "description": "The result items on the current result",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LiveStreamModel"
            }
          }
        }
      },
      "ThumbnailListResponseModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "url": {
            "type": "string",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "LiveStreamStatusModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "readyToStart": {
            "type": "boolean",
            "description": "Determines if the stream is ready to start based on live status"
          },
          "primaryLive": {
            "type": "boolean",
            "description": "Determines if the primary ingest is live"
          },
          "backupLive": {
            "type": "boolean",
            "description": "Determines if the backup ingest is live"
          },
          "lastPingAgo": {
            "type": "integer",
            "description": "The number of seconds since the last ping, if available",
            "format": "int32",
            "nullable": true
          },
          "duration": {
            "type": "integer",
            "description": "The stream duration in seconds",
            "format": "int32",
            "nullable": true
          },
          "statusTimeUtc": {
            "type": "string",
            "description": "The UTC time when the status is read",
            "format": "date-time"
          }
        }
      },
      "VideoModel": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "videoLibraryId",
          "guid",
          "title",
          "dateUploaded",
          "views",
          "isPublic",
          "length",
          "status",
          "framerate",
          "width",
          "height",
          "outputCodecs",
          "thumbnailCount",
          "encodeProgress",
          "storageSize",
          "hasMP4Fallback",
          "averageWatchTime",
          "totalWatchTime"
        ],
        "properties": {
          "videoLibraryId": {
            "type": "integer",
            "description": "The ID of the video library that the video belongs to",
            "format": "int64"
          },
          "guid": {
            "type": "string",
            "description": "The unique ID of the video",
            "minLength": 1
          },
          "title": {
            "type": "string",
            "description": "The title of the video",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "description": "The description of the video",
            "nullable": true
          },
          "dateUploaded": {
            "type": "string",
            "description": "The date when the video was uploaded",
            "format": "date-time",
            "minLength": 1
          },
          "views": {
            "type": "integer",
            "description": "The number of views the video received",
            "format": "int64"
          },
          "isPublic": {
            "type": "boolean",
            "description": "Determines if the video is publically accessible"
          },
          "length": {
            "type": "integer",
            "description": "The duration of the video in seconds",
            "format": "int32"
          },
          "status": {
            "description": "The status of the video. See VideoModelStatus.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/VideoModelStatus"
              }
            ]
          },
          "framerate": {
            "type": "number",
            "description": "The framerate of the video",
            "format": "double"
          },
          "rotation": {
            "type": "integer",
            "description": "The rotation of the video",
            "nullable": true
          },
          "width": {
            "type": "integer",
            "description": "The width of the original video file",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "description": "The height of the original video file",
            "format": "int32"
          },
          "availableResolutions": {
            "type": "string",
            "description": "The available resolutions of the video",
            "nullable": true
          },
          "outputCodecs": {
            "type": "string",
            "description": "Encoded output codecs of the video",
            "minLength": 1
          },
          "thumbnailCount": {
            "type": "integer",
            "description": "The number of thumbnails generated for this video",
            "format": "int32"
          },
          "encodeProgress": {
            "type": "integer",
            "description": "The current encode progress of the video",
            "format": "int32"
          },
          "storageSize": {
            "type": "integer",
            "description": "The amount of storage used by this video",
            "format": "int64"
          },
          "captions": {
            "type": "array",
            "description": "The list of captions available for the video",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CaptionModel"
            }
          },
          "hasMP4Fallback": {
            "type": "boolean",
            "description": "Determines if the video has MP4 fallback files generated"
          },
          "collectionId": {
            "type": "string",
            "description": "The ID of the collection where the video belongs",
            "nullable": true
          },
          "thumbnailFileName": {
            "type": "string",
            "description": "The file name of the thumbnail inside of the storage",
            "nullable": true
          },
          "thumbnailBlurhash": {
            "type": "string",
            "description": "Thumbnail blurhash to show while the actual thumbnail is being loaded",
            "nullable": true
          },
          "averageWatchTime": {
            "type": "integer",
            "description": "The average watch time of the video in seconds",
            "format": "int64"
          },
          "totalWatchTime": {
            "type": "integer",
            "description": "The total video watch time in seconds",
            "format": "int64"
          },
          "category": {
            "type": "string",
            "description": "The automatically detected category of the video",
            "nullable": true
          },
          "chapters": {
            "type": "array",
            "description": "The list of chapters available for the video",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ChapterModel"
            }
          },
          "moments": {
            "type": "array",
            "description": "The list of moments available for the video",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MomentModel"
            }
          },
          "metaTags": {
            "type": "array",
            "description": "The list of meta tags that have been added to the video",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MetaTagModel"
            }
          },
          "transcodingMessages": {
            "type": "array",
            "description": "The list of transcoding messages that describe potential issues while the video was transcoding",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TranscodingMessageModel"
            }
          },
          "jitEncodingEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "smartGenerateStatus": {
            "description": "The status of smart generate action (if triggered)",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SmartGenerateStatus"
              }
            ]
          },
          "hasOriginal": {
            "type": "boolean",
            "description": "Determines if video has the original file available in storage",
            "nullable": true
          },
          "originalHash": {
            "type": "string",
            "description": "Original uploaded file SHA256 hash",
            "nullable": true
          },
          "hasHighQualityPreview": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "VideoModelStatus": {
        "type": "integer",
        "description": "0 = Created\n1 = Uploaded\n2 = Processing\n3 = Transcoding\n4 = Finished\n5 = Error\n6 = UploadFailed\n7 = JitSegmenting\n8 = JitPlaylistsCreated",
        "x-enumNames": [
          "Created",
          "Uploaded",
          "Processing",
          "Transcoding",
          "Finished",
          "Error",
          "UploadFailed",
          "JitSegmenting",
          "JitPlaylistsCreated"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ]
      },
      "CaptionModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "srclang": {
            "type": "string",
            "description": "The unique srclang shortcode for the caption",
            "nullable": true
          },
          "label": {
            "type": "string",
            "description": "The text description label for the caption",
            "nullable": true
          },
          "version": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ChapterModel": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "title"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the chapter",
            "minLength": 1
          },
          "start": {
            "type": "integer",
            "description": "The start time of the chapter in seconds",
            "format": "int32"
          },
          "end": {
            "type": "integer",
            "description": "The end time of the chapter in seconds",
            "format": "int32"
          }
        }
      },
      "MomentModel": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "label"
        ],
        "properties": {
          "label": {
            "type": "string",
            "description": "The text description label for the chapter",
            "minLength": 1
          },
          "timestamp": {
            "type": "integer",
            "description": "The timestamp of the moment in seconds",
            "format": "int32"
          }
        }
      },
      "MetaTagModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "property": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TranscodingMessageModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "timeStamp": {
            "type": "string",
            "format": "date-time"
          },
          "level": {
            "$ref": "#/components/schemas/Severity"
          },
          "issueCode": {
            "$ref": "#/components/schemas/IssueCodes"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Severity": {
        "type": "integer",
        "description": "0 = Undefined\n1 = Information\n2 = Warning\n3 = Error",
        "x-enumNames": [
          "Undefined",
          "Information",
          "Warning",
          "Error"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "IssueCodes": {
        "type": "integer",
        "description": "0 = Undefined\n1 = StreamLengthsDifference\n2 = TranscodingWarnings\n3 = IncompatibleResolution\n4 = InvalidFramerate\n5 = VideoExceededMaxDuration\n6 = AudioExceededMaxDuration\n7 = OriginalCorrupted\n8 = TranscriptionFailed\n9 = JitIncompatible\n10 = JitFailed\n11 = CaptionGenerationFailed",
        "x-enumNames": [
          "Undefined",
          "StreamLengthsDifference",
          "TranscodingWarnings",
          "IncompatibleResolution",
          "InvalidFramerate",
          "VideoExceededMaxDuration",
          "AudioExceededMaxDuration",
          "OriginalCorrupted",
          "TranscriptionFailed",
          "JitIncompatible",
          "JitFailed",
          "CaptionGenerationFailed"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11
        ]
      },
      "SmartGenerateStatus": {
        "type": "integer",
        "description": "0 = None\n1 = Queued\n2 = InProgress\n3 = Finished\n4 = Failed",
        "x-enumNames": [
          "None",
          "Queued",
          "InProgress",
          "Finished",
          "Failed"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4
        ]
      },
      "VideoHeatmapModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "heatmap": {
            "type": "object",
            "description": "Timeline heatmap as segment-index to intensity (0–100). Keys represent consecutive segments from the start of the video; values are normalized so 100 equals the most‑watched segment. Missing segments imply 0.",
            "nullable": true,
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "VideoPlayDataModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "video": {
            "description": "Video data.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/VideoModel"
              }
            ]
          },
          "libraryName": {
            "type": "string",
            "nullable": true
          },
          "captionsPath": {
            "type": "string",
            "nullable": true
          },
          "seekPath": {
            "type": "string",
            "nullable": true
          },
          "thumbnailUrl": {
            "type": "string",
            "nullable": true
          },
          "fallbackUrl": {
            "type": "string",
            "nullable": true
          },
          "videoPlaylistUrl": {
            "type": "string",
            "nullable": true
          },
          "originalUrl": {
            "type": "string",
            "nullable": true
          },
          "previewUrl": {
            "type": "string",
            "nullable": true
          },
          "controls": {
            "type": "string",
            "nullable": true
          },
          "enableDRM": {
            "type": "boolean"
          },
          "drmVersion": {
            "type": "integer",
            "format": "int32"
          },
          "playerKeyColor": {
            "type": "string",
            "nullable": true
          },
          "vastTagUrl": {
            "type": "string",
            "nullable": true
          },
          "viAiPublisherId": {
            "type": "string",
            "nullable": true
          },
          "captionsFontSize": {
            "type": "integer",
            "format": "int32"
          },
          "captionsFontColor": {
            "type": "string",
            "nullable": true
          },
          "captionsBackground": {
            "type": "string",
            "nullable": true
          },
          "uiLanguage": {
            "type": "string",
            "nullable": true
          },
          "allowEarlyPlay": {
            "type": "boolean"
          },
          "tokenAuthEnabled": {
            "type": "boolean"
          },
          "enableMP4Fallback": {
            "type": "boolean"
          },
          "showHeatmap": {
            "type": "boolean"
          },
          "fontFamily": {
            "type": "string",
            "nullable": true
          },
          "playbackSpeeds": {
            "type": "string",
            "nullable": true
          },
          "widevineMinClientSecurityLevel": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "zoneTier": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isPlayable": {
            "type": "boolean",
            "description": "Determines if the video is currently playable using either playlist or original source."
          },
          "isPlaylistPlayable": {
            "type": "boolean",
            "description": "Determines if the HLS playlist is currently playable."
          },
          "preferredPlaybackSource": {
            "description": "Preferred playback source for the current video state.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/VideoPlaybackSource"
              }
            ]
          },
          "rememberPlayerPosition": {
            "type": "boolean"
          },
          "customCss": {
            "type": "string",
            "nullable": true
          },
          "exposeVideoMetadata": {
            "type": "boolean"
          }
        }
      },
      "VideoPlaybackSource": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "Playlist",
          "Original"
        ],
        "enum": [
          "None",
          "Playlist",
          "Original"
        ]
      },
      "VideoStatisticsModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "viewsChart": {
            "type": "object",
            "description": "Shows the number of playback starts over time, with each data point representing the count of view starts in the corresponding UTC interval (hourly or daily). It is available at both the library level (aggregated across all videos) and the video level (for a single video). A playback start is counted once per viewer session per video and empty intervals are shown as zero.",
            "nullable": true,
            "additionalProperties": {
              "type": "integer",
              "format": "int64"
            }
          },
          "watchTimeChart": {
            "type": "object",
            "description": "Shows the cumulative time viewers spent watching over time, with each data point representing total watch time in the corresponding UTC interval (hourly or daily). It is available at both the library level (aggregated across all videos) and the video level (for a single video). Rewatches and repeated visits add to the total and empty intervals are shown as zero.",
            "nullable": true,
            "additionalProperties": {
              "type": "integer",
              "format": "int64"
            }
          },
          "countryViewCounts": {
            "type": "object",
            "description": "Shows the total number of playback starts by country for the selected time range. It is available at both the library level (aggregated across all videos) and the video level (for a single video). Each country’s value reflects unique playback starts per viewer session based on IP geolocation at playback start.",
            "nullable": true,
            "additionalProperties": {
              "type": "integer",
              "format": "int64"
            }
          },
          "countryWatchTime": {
            "type": "object",
            "description": "Shows the total watch time by country for the selected time range. It is available at both the library level (aggregated across all videos) and the video level (for a single video). Values reflect cumulative viewing time (rewatches and repeated visits add to the total) based on IP geolocation at playback start.",
            "nullable": true,
            "additionalProperties": {
              "type": "integer",
              "format": "int64"
            }
          },
          "engagementScore": {
            "type": "integer",
            "description": "Indicates how engaging a specific video is on a 0–100 scale based on viewing duration and viewing patterns; higher values reflect stronger viewer retention. Reported at the video level only and may be unavailable when there isn’t enough viewing data.",
            "format": "int32"
          }
        }
      },
      "EncoderOutputCodec": {
        "type": "integer",
        "description": "0 = x264\n1 = vp9\n2 = hevc\n3 = av1",
        "x-enumNames": [
          "x264",
          "vp9",
          "hevc",
          "av1"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "PaginationListOfVideoModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "totalItems": {
            "type": "integer",
            "description": "The total number of items that can be returned",
            "format": "int64"
          },
          "currentPage": {
            "type": "integer",
            "description": "The current page of the response",
            "format": "int64"
          },
          "itemsPerPage": {
            "type": "integer",
            "description": "The number of items returned per page",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "description": "The result items on the current result",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/VideoModel"
            }
          }
        }
      },
      "CreateVideoModel": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "title"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the video",
            "minLength": 1
          },
          "collectionId": {
            "type": "string",
            "description": "The ID of the collection where the video will be put",
            "nullable": true
          },
          "thumbnailTime": {
            "type": "integer",
            "description": "Video time in ms to extract the main video thumbnail.",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "UpdateVideoModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the video",
            "nullable": true
          },
          "collectionId": {
            "type": "string",
            "description": "The ID of the collection where the video belongs",
            "nullable": true
          },
          "chapters": {
            "type": "array",
            "description": "The list of chapters available for the video",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ChapterModel"
            }
          },
          "moments": {
            "type": "array",
            "description": "The list of moments available for the video",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MomentModel"
            }
          },
          "metaTags": {
            "type": "array",
            "description": "The meta tags added to the video",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/MetaTagModel"
            }
          }
        }
      },
      "FetchVideoRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "The URL from which the video will be fetched from.",
            "minLength": 1
          },
          "headers": {
            "type": "object",
            "description": "The headers that will be sent along with the fetch request.",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "title": {
            "type": "string",
            "description": "The title that will be set to video.",
            "nullable": true
          }
        }
      },
      "CaptionValidationModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "valid": {
            "type": "boolean",
            "description": "Denotes whether uploaded captions file was valid"
          },
          "errorList": {
            "type": "array",
            "description": "When uploaded file was invalid, will contain errors found",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "warningList": {
            "type": "array",
            "description": "When uploaded file was valid but non-breaking issues were found, will contain issues found",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CaptionModelAdd": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "srclang": {
            "type": "string",
            "description": "The unique srclang shortcode for the caption",
            "nullable": true
          },
          "label": {
            "type": "string",
            "description": "The text description label for the caption",
            "nullable": true
          },
          "captionsFile": {
            "type": "string",
            "description": "Base64 encoded captions file",
            "nullable": true
          }
        }
      },
      "TranscribeSettings": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "targetLanguages": {
            "type": "array",
            "description": "List of languages that will be used as target languages, use ISO 639-1 language codes.",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "generateTitle": {
            "type": "boolean",
            "description": "Whether video title should be automatically generated.",
            "nullable": true
          },
          "generateDescription": {
            "type": "boolean",
            "description": "Whether video description should be automatically generated.",
            "nullable": true
          },
          "generateChapters": {
            "type": "boolean",
            "description": "Whether video chapters should be automatically generated.",
            "nullable": true
          },
          "generateMoments": {
            "type": "boolean",
            "description": "Whether video moments should be automatically generated.",
            "nullable": true
          },
          "sourceLanguage": {
            "type": "string",
            "description": "Video source language, use ISO 639-1 language code.",
            "nullable": true
          }
        }
      },
      "SmartGenerateModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "generateTitle": {
            "type": "boolean",
            "description": "Whether video title should be generated.",
            "nullable": true
          },
          "generateDescription": {
            "type": "boolean",
            "description": "Whether video description should be generated.",
            "nullable": true
          },
          "generateChapters": {
            "type": "boolean",
            "description": "Whether video chapters should be generated.",
            "nullable": true
          },
          "generateMoments": {
            "type": "boolean",
            "description": "Whether video moments should be generated.",
            "nullable": true
          },
          "sourceLanguage": {
            "type": "string",
            "description": "(Optional) Video source language, use ISO 639-1 language code.",
            "nullable": true
          }
        }
      },
      "StatusModelOfVideoResolutionsInfoModel": {
        "allOf": [
          {
            "$ref": "#/components/schemas/StatusModel"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "data": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/VideoResolutionsInfoModel"
                  }
                ]
              }
            }
          }
        ]
      },
      "VideoResolutionsInfoModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "videoId": {
            "type": "string",
            "nullable": true
          },
          "videoLibraryId": {
            "type": "integer",
            "format": "int64"
          },
          "availableResolutions": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "configuredResolutions": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "playlistResolutions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ResolutionReference"
            }
          },
          "storageResolutions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ResolutionReference"
            }
          },
          "mp4Resolutions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ResolutionReference"
            }
          },
          "storageObjects": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/StorageObjectModel"
            }
          },
          "oldResolutions": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/StorageObjectModel"
            }
          },
          "hasBothOldAndNewResolutionFormat": {
            "type": "boolean"
          },
          "hasOriginal": {
            "type": "boolean"
          }
        }
      },
      "ResolutionReference": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "resolution": {
            "type": "string",
            "nullable": true
          },
          "path": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "StorageObjectModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "guid": {
            "type": "string",
            "nullable": true
          },
          "storageZoneName": {
            "type": "string",
            "nullable": true
          },
          "path": {
            "type": "string",
            "nullable": true
          },
          "objectName": {
            "type": "string",
            "nullable": true
          },
          "length": {
            "type": "integer",
            "format": "int64"
          },
          "lastChanged": {
            "type": "string",
            "format": "date-time"
          },
          "serverId": {
            "type": "integer",
            "format": "int32"
          },
          "isDirectory": {
            "type": "boolean"
          },
          "userId": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "dateCreated": {
            "type": "string",
            "format": "date-time"
          },
          "storageZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "nullable": true
          },
          "replicatedZones": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "StatusModelOfVideoStorageSizeModel": {
        "allOf": [
          {
            "$ref": "#/components/schemas/StatusModel"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "data": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/VideoStorageSizeModel"
                  }
                ]
              }
            }
          }
        ]
      },
      "VideoStorageSizeModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "encoded": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "$ref": "#/components/schemas/CodecRenditionSizeModel"
            }
          },
          "thumbnails": {
            "type": "integer",
            "format": "int64"
          },
          "previews": {
            "type": "integer",
            "format": "int64"
          },
          "originals": {
            "type": "integer",
            "format": "int64"
          },
          "mp4Fallback": {
            "type": "integer",
            "format": "int64"
          },
          "miscellaneous": {
            "type": "integer",
            "format": "int64"
          },
          "calculatedAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CodecRenditionSizeModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "codec": {
            "type": "string",
            "nullable": true
          },
          "resolution": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "VideoOEmbedModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "thumbnail_url": {
            "type": "string",
            "nullable": true
          },
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "format": "int32"
          },
          "html": {
            "type": "string",
            "nullable": true
          },
          "provider_name": {
            "type": "string",
            "nullable": true
          },
          "provider_url": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProblemDetails": {
        "type": "object",
        "additionalProperties": {
          "nullable": true
        },
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "EncoderCallbackModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "videoLibraryId": {
            "type": "integer",
            "format": "int64"
          },
          "videoGuid": {
            "type": "string",
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "type": {
            "$ref": "#/components/schemas/EncoderCallbackType"
          },
          "data": {
            "type": "string",
            "nullable": true
          },
          "isPremium": {
            "type": "boolean"
          },
          "isJit": {
            "type": "boolean"
          },
          "isRepackage": {
            "type": "boolean"
          },
          "isReEncode": {
            "type": "boolean"
          },
          "encodingJobId": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "EncoderCallbackType": {
        "type": "integer",
        "description": "0 = ThumbnailGenerated\n1 = TaskFinished\n2 = JobFinished\n3 = TranscodingFailed\n4 = VideoInformation\n5 = ThumbnailInformation\n6 = EncodeProgress\n7 = ResolutionFinished\n8 = KeyGenerated\n9 = CaptionsGenerated\n10 = TitleOrDescriptionGenerated\n11 = TranscodingMessageIncoming\n12 = PremiumSegmenting\n13 = PremiumPlaylistsCreated\n14 = CaptionGenerationFailed\n15 = ChaptersGenerated\n16 = MomentsGenerated\n17 = LiveStreamMetadataUpdate",
        "x-enumNames": [
          "ThumbnailGenerated",
          "TaskFinished",
          "JobFinished",
          "TranscodingFailed",
          "VideoInformation",
          "ThumbnailInformation",
          "EncodeProgress",
          "ResolutionFinished",
          "KeyGenerated",
          "CaptionsGenerated",
          "TitleOrDescriptionGenerated",
          "TranscodingMessageIncoming",
          "PremiumSegmenting",
          "PremiumPlaylistsCreated",
          "CaptionGenerationFailed",
          "ChaptersGenerated",
          "MomentsGenerated",
          "LiveStreamMetadataUpdate"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17
        ]
      },
      "EncoderProgressModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "videoLibraryId": {
            "type": "integer",
            "format": "int64"
          },
          "videoGuid": {
            "type": "string",
            "nullable": true
          },
          "availableResolutions": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "LiveStreamMetadataUpdateCallbackModel": {
        "allOf": [
          {
            "$ref": "#/components/schemas/LiveStreamCallbackModel"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "$ref": "#/components/schemas/EncoderCallbackType"
              },
              "metadata": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/LiveStreamMetadata"
                  }
                ]
              }
            }
          }
        ]
      },
      "LiveStreamMetadata": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "format": "int32"
          },
          "framerate": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "LiveStreamCallbackModel": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "properties": {
          "videoLibraryId": {
            "type": "integer",
            "format": "int64"
          },
          "streamId": {
            "type": "string",
            "format": "guid"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "LiveStreamThumbnailGeneratedCallbackModel": {
        "allOf": [
          {
            "$ref": "#/components/schemas/LiveStreamCallbackModel"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "$ref": "#/components/schemas/EncoderCallbackType"
              },
              "newThumbnailFileName": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "Result": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "isSuccess": {
            "type": "boolean"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "VideoStatus": {
        "type": "integer",
        "description": "0 = Created\n1 = Uploaded\n2 = Processing\n3 = Transcoding\n4 = Finished\n5 = Error\n6 = UploadFailed\n7 = JitSegmenting\n8 = JitPlaylistsCreated",
        "x-enumNames": [
          "Created",
          "Uploaded",
          "Processing",
          "Transcoding",
          "Finished",
          "Error",
          "UploadFailed",
          "JitSegmenting",
          "JitPlaylistsCreated"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ]
      },
      "AddHeatmapDataModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "currentTime": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "AddVideoViewTimeModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lid": {
            "type": "integer",
            "format": "int64"
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "v": {
            "type": "integer",
            "format": "int32"
          },
          "wt": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "AddViewDataModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "views": {
            "type": "integer",
            "format": "int32"
          },
          "watchTime": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "VideoInfoModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "video": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Video"
              }
            ]
          },
          "heatmapPrebuilt": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Video": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "videoLibraryId": {
            "type": "integer",
            "format": "int64"
          },
          "guid": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "dateUploaded": {
            "type": "string",
            "format": "date-time"
          },
          "views": {
            "type": "integer",
            "format": "int64"
          },
          "totalWatchTime": {
            "type": "integer",
            "format": "int64"
          },
          "totalWatchTimeViews": {
            "type": "integer",
            "format": "int64"
          },
          "public": {
            "type": "boolean"
          },
          "status": {
            "$ref": "#/components/schemas/VideoStatus"
          },
          "userId": {
            "type": "string",
            "nullable": true
          },
          "length": {
            "type": "integer",
            "format": "int32"
          },
          "framerate": {
            "type": "number",
            "format": "double"
          },
          "rotation": {
            "type": "integer",
            "nullable": true
          },
          "outputCodecs": {
            "type": "string",
            "nullable": true
          },
          "jitEncodingEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "encodingTier": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/EncodingTier"
              }
            ]
          },
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "format": "int32"
          },
          "thumbnailCount": {
            "type": "integer",
            "format": "int32"
          },
          "availableResolutions": {
            "type": "string",
            "nullable": true
          },
          "encodeProgress": {
            "type": "integer",
            "format": "int32"
          },
          "captions": {
            "type": "string",
            "nullable": true
          },
          "storageSize": {
            "type": "integer",
            "format": "int64"
          },
          "hasMP4Fallback": {
            "type": "boolean"
          },
          "aesKeyName": {
            "type": "string",
            "nullable": true
          },
          "collectionId": {
            "type": "string",
            "nullable": true
          },
          "totalEncodingTime": {
            "type": "integer",
            "format": "int64"
          },
          "thumbnailFileName": {
            "type": "string",
            "nullable": true
          },
          "thumbnailBlurhash": {
            "type": "string",
            "nullable": true
          },
          "thumbnailTime": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "deleting": {
            "type": "boolean"
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "chapters": {
            "type": "string",
            "nullable": true
          },
          "moments": {
            "type": "string",
            "nullable": true
          },
          "metaTags": {
            "type": "string",
            "nullable": true
          },
          "transcodingMessages": {
            "type": "string",
            "nullable": true
          },
          "vrType": {
            "$ref": "#/components/schemas/VRTypes"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "transcoderVersion": {
            "type": "string",
            "nullable": true
          },
          "hasOriginal": {
            "type": "boolean",
            "nullable": true
          },
          "encodedDrmType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/VideoDrmType"
              }
            ]
          },
          "reEncoded": {
            "type": "boolean"
          },
          "reEncodedTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reEncodeCount": {
            "type": "integer",
            "format": "int32"
          },
          "smartGenerateUsageCount": {
            "type": "integer",
            "nullable": true
          },
          "smartGenerateStatus": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SmartGenerateStatus"
              }
            ]
          },
          "originalHash": {
            "type": "string",
            "nullable": true
          },
          "hasHighQualityPreview": {
            "type": "boolean",
            "nullable": true
          },
          "hidden": {
            "type": "boolean"
          }
        }
      },
      "EncodingTier": {
        "type": "integer",
        "description": "0 = Free\n1 = Premium",
        "x-enumNames": [
          "Free",
          "Premium"
        ],
        "enum": [
          0,
          1
        ]
      },
      "VRTypes": {
        "type": "integer",
        "description": "0 = None\n1 = VR180\n2 = VR360",
        "x-enumNames": [
          "None",
          "VR180",
          "VR360"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "VideoDrmType": {
        "type": "integer",
        "description": "0 = None\n1 = Basic\n2 = EnterpriseEncoded\n3 = RepackageSuccessful\n4 = RepackageProcessing\n5 = RepackageFailed",
        "x-enumNames": [
          "None",
          "Basic",
          "EnterpriseEncoded",
          "RepackageSuccessful",
          "RepackageProcessing",
          "RepackageFailed"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ]
      },
      "SyncSessionResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "error": {
            "type": "string",
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "sessionKey": {
            "type": "string",
            "nullable": true
          },
          "rocksDbInfo": {
            "$ref": "#/components/schemas/RocksDbInfo"
          }
        }
      },
      "RocksDbInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string"
          }
        }
      },
      "SyncSessionRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "lastSequenceNumber": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "securitySchemes": {
      "AccessKey": {
        "type": "apiKey",
        "description": "AccessKey based authentication",
        "name": "AccessKey",
        "in": "header"
      }
    }
  },
  "tags": [
    {
      "name": "Manage Collections"
    },
    {
      "name": "Manage Videos"
    }
  ]
}