{
  "openapi": "3.1.0",
  "info": {
    "title": "Videas External API",
    "version": "1.0.0",
    "description": "External API for third-party developers."
  },
  "paths": {
    "/api/external/v1/videos/": {
      "get": {
        "operationId": "assets_list_videos",
        "summary": "List videos",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 20,
              "description": "Max items to return (1-100).",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            },
            "required": false,
            "description": "Max items to return (1-100)."
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Number of items to skip.",
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            },
            "required": false,
            "description": "Number of items to skip."
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Full-text match on name and description.",
              "title": "Search"
            },
            "required": false,
            "description": "Full-text match on name and description."
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/AssetStatusFilter"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by processing status."
            },
            "required": false,
            "description": "Filter by processing status."
          },
          {
            "in": "query",
            "name": "tag",
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by tag slug.",
              "title": "Tag"
            },
            "required": false,
            "description": "Filter by tag slug."
          },
          {
            "in": "query",
            "name": "created_after",
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only items created on/after this date (YYYY-MM-DD).",
              "title": "Created After"
            },
            "required": false,
            "description": "Only items created on/after this date (YYYY-MM-DD)."
          },
          {
            "in": "query",
            "name": "created_before",
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only items created on/before this date (YYYY-MM-DD).",
              "title": "Created Before"
            },
            "required": false,
            "description": "Only items created on/before this date (YYYY-MM-DD)."
          },
          {
            "in": "query",
            "name": "ordering",
            "schema": {
              "allOf": [
                {
                  "description": "Allowed ``ordering`` values for asset/video lists.",
                  "enum": [
                    "created_at",
                    "-created_at",
                    "name",
                    "-name",
                    "duration",
                    "-duration"
                  ],
                  "title": "AssetOrdering",
                  "type": "string"
                }
              ],
              "default": "-created_at",
              "description": "Sort field; prefix with '-' for descending."
            },
            "required": false,
            "description": "Sort field; prefix with '-' for descending."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page_VideoListItemOut_"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "List the organization's videos (limit/offset paginated).",
        "tags": [
          "Videos"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/videos/{uid}/": {
      "get": {
        "operationId": "assets_get_video",
        "summary": "Get a video",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Video uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Video uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoDetailOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Retrieve a single video by uid.",
        "tags": [
          "Videos"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "assets_update_video",
        "summary": "Update a video",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Video uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Video uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoDetailOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Update editorial fields of a video (partial).",
        "tags": [
          "Videos"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoUpdateIn"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      },
      "delete": {
        "operationId": "assets_delete_video",
        "summary": "Delete a video",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Video uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Video uid"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Soft-delete a video (moves it to the trash).",
        "tags": [
          "Videos"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/videos/{uid}/player/": {
      "get": {
        "operationId": "assets_get_video_player",
        "summary": "Get video player data",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Video uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Video uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmbedOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Player metadata + a signed ``playback_token`` for a video.\n\nFeed the returned ``playback_token`` (with the ``asset_id``) into\n``POST /playback/info/`` to obtain the signed stream URLs.",
        "tags": [
          "Videos"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/assets/": {
      "get": {
        "operationId": "assets_list_assets",
        "summary": "List assets",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 20,
              "description": "Max items to return (1-100).",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            },
            "required": false,
            "description": "Max items to return (1-100)."
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Number of items to skip.",
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            },
            "required": false,
            "description": "Number of items to skip."
          },
          {
            "in": "query",
            "name": "type",
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/AssetTypeFilter"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by asset type."
            },
            "required": false,
            "description": "Filter by asset type."
          },
          {
            "in": "query",
            "name": "parent",
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Parent folder uid in the primary workspace, or 'root' for top level.",
              "title": "Parent"
            },
            "required": false,
            "description": "Parent folder uid in the primary workspace, or 'root' for top level."
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Full-text match on name and description.",
              "title": "Search"
            },
            "required": false,
            "description": "Full-text match on name and description."
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/AssetStatusFilter"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by processing status."
            },
            "required": false,
            "description": "Filter by processing status."
          },
          {
            "in": "query",
            "name": "tag",
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by tag slug.",
              "title": "Tag"
            },
            "required": false,
            "description": "Filter by tag slug."
          },
          {
            "in": "query",
            "name": "created_after",
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only items created on/after this date (YYYY-MM-DD).",
              "title": "Created After"
            },
            "required": false,
            "description": "Only items created on/after this date (YYYY-MM-DD)."
          },
          {
            "in": "query",
            "name": "created_before",
            "schema": {
              "anyOf": [
                {
                  "format": "date",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only items created on/before this date (YYYY-MM-DD).",
              "title": "Created Before"
            },
            "required": false,
            "description": "Only items created on/before this date (YYYY-MM-DD)."
          },
          {
            "in": "query",
            "name": "ordering",
            "schema": {
              "allOf": [
                {
                  "description": "Allowed ``ordering`` values for asset/video lists.",
                  "enum": [
                    "created_at",
                    "-created_at",
                    "name",
                    "-name",
                    "duration",
                    "-duration"
                  ],
                  "title": "AssetOrdering",
                  "type": "string"
                }
              ],
              "default": "-created_at",
              "description": "Sort field; prefix with '-' for descending."
            },
            "required": false,
            "description": "Sort field; prefix with '-' for descending."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page_Union_ExternalVideoListItemOut__ExternalAudioListItemOut__ExternalImageListItemOut__ExternalGenericListItemOut__"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "List the organization's assets of any type (limit/offset paginated).",
        "tags": [
          "Assets"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/assets/{uid}/": {
      "get": {
        "operationId": "assets_get_asset",
        "summary": "Get an asset",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Asset uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Asset uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ExternalVideoDetailOut"
                    },
                    {
                      "$ref": "#/components/schemas/ExternalAudioDetailOut"
                    },
                    {
                      "$ref": "#/components/schemas/ExternalImageDetailOut"
                    },
                    {
                      "$ref": "#/components/schemas/ExternalGenericDetailOut"
                    }
                  ],
                  "title": "Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Retrieve a single asset by uid (detail shape depends on its type).",
        "tags": [
          "Assets"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "assets_update_asset",
        "summary": "Update an asset",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Asset uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Asset uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ExternalVideoDetailOut"
                    },
                    {
                      "$ref": "#/components/schemas/ExternalAudioDetailOut"
                    },
                    {
                      "$ref": "#/components/schemas/ExternalImageDetailOut"
                    },
                    {
                      "$ref": "#/components/schemas/ExternalGenericDetailOut"
                    }
                  ],
                  "title": "Response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Update editorial fields of an asset (partial).",
        "tags": [
          "Assets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetUpdateIn"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      },
      "delete": {
        "operationId": "assets_delete_asset",
        "summary": "Delete an asset",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Asset uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Asset uid"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Soft-delete an asset (moves it to the trash).",
        "tags": [
          "Assets"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/assets/{uid}/player/": {
      "get": {
        "operationId": "assets_get_asset_player",
        "summary": "Get asset player data",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Asset uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Asset uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmbedOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Player metadata + a signed ``playback_token`` for an asset (any type).\n\nFeed the returned ``playback_token`` (with the ``asset_id``) into\n``POST /playback/info/`` to obtain the signed stream URLs.",
        "tags": [
          "Assets"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/upload/": {
      "post": {
        "operationId": "assets_create_upload",
        "summary": "Create Upload",
        "parameters": [
          {
            "in": "header",
            "name": "Tus-Resumable",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1.0.0"
              ]
            },
            "description": "TUS protocol version. Must be 1.0.0."
          },
          {
            "in": "header",
            "name": "Upload-Length",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "description": "Total size of the upload, in bytes."
          },
          {
            "in": "header",
            "name": "Upload-Metadata",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Base64 key-value pairs (TUS format). Required keys: filename, workspace_uid. Optional: asset_name, description, parent_folder_uid, content_type."
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetTusUploadCreatedOut"
                }
              }
            }
          },
          "400": {
            "description": "Invalid or missing TUS metadata (filename, workspace_uid, ...).",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Workspace or parent folder not found.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "412": {
            "description": "Missing or unsupported Tus-Resumable header (must be 1.0.0).",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "413": {
            "description": "Upload exceeds the maximum allowed size.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "503": {
            "description": "Storage not configured or temporarily unavailable.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "507": {
            "description": "Insufficient storage space.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "description": "Create a resumable (TUS) upload session for a new asset.\n\nHeaders: ``Tus-Resumable: 1.0.0``, ``Upload-Length`` (bytes),\n``Upload-Metadata`` (base64 key-value with at least ``filename`` and\n``workspace_uid``; optional ``asset_name``, ``description``,\n``parent_folder_uid``, ``content_type``).\n\nOnly ``create`` mode is supported in v1. Returns ``201`` with a ``Location``\nheader and ``asset_uid`` for polling ``GET /assets/{uid}/`` until ready.",
        "tags": [
          "Upload"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ],
        "x-try-it-out": false
      }
    },
    "/api/external/v1/workspaces/": {
      "get": {
        "operationId": "assets_list_workspaces",
        "summary": "List workspaces",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "default": 20,
              "description": "Max items to return (1-100).",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            },
            "required": false,
            "description": "Max items to return (1-100)."
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "default": 0,
              "description": "Number of items to skip.",
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            },
            "required": false,
            "description": "Number of items to skip."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page_WorkspaceOut_"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "List the organization's workspaces (to target uploads).",
        "tags": [
          "Workspaces"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/workspaces/{uid}/embed-settings/": {
      "get": {
        "operationId": "assets_get_embed_settings",
        "summary": "Get embed domain restriction",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Workspace uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Workspace uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmbedSettingsOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Read the workspace's embed domain-restriction settings.",
        "tags": [
          "Workspaces"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      },
      "patch": {
        "operationId": "assets_update_embed_settings",
        "summary": "Toggle domain restriction",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Workspace uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Workspace uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmbedSettingsOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Enable/disable the domain restriction for the workspace.",
        "tags": [
          "Workspaces"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmbedRestrictionUpdateIn"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/workspaces/{uid}/embed-domains/": {
      "post": {
        "operationId": "assets_add_embed_domain",
        "summary": "Add an allowed domain",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Workspace uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Workspace uid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmbedSettingsOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Add a domain to the workspace embed allow-list (idempotent).",
        "tags": [
          "Workspaces"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmbedDomainIn"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      },
      "delete": {
        "operationId": "assets_remove_embed_domain",
        "summary": "Remove an allowed domain",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Workspace uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Workspace uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmbedSettingsOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Remove a domain from the workspace embed allow-list.",
        "tags": [
          "Workspaces"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmbedDomainIn"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/workspaces/{uid}/folders/": {
      "get": {
        "operationId": "assets_list_folders",
        "summary": "List the folder tree",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Workspace uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Workspace uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/FolderOut"
                  },
                  "title": "Response",
                  "type": "array"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Return the workspace's folder tree (root folders with nested children).",
        "tags": [
          "Folders"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      },
      "post": {
        "operationId": "assets_create_folder",
        "summary": "Create a folder",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Workspace uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Workspace uid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Create a folder in the workspace, optionally under a parent folder.",
        "tags": [
          "Folders"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FolderCreateIn"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/workspaces/{uid}/folders/{folder_uid}/": {
      "patch": {
        "operationId": "assets_update_folder",
        "summary": "Update a folder",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Workspace uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Workspace uid"
          },
          {
            "in": "path",
            "name": "folder_uid",
            "schema": {
              "description": "Folder uid",
              "format": "uuid",
              "title": "Folder Uid",
              "type": "string"
            },
            "required": true,
            "description": "Folder uid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderOut"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Rename a folder and/or move it under another parent (partial update).",
        "tags": [
          "Folders"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FolderUpdateIn"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      },
      "delete": {
        "operationId": "assets_delete_folder",
        "summary": "Delete a folder",
        "parameters": [
          {
            "in": "path",
            "name": "uid",
            "schema": {
              "description": "Workspace uid",
              "format": "uuid",
              "title": "Uid",
              "type": "string"
            },
            "required": true,
            "description": "Workspace uid"
          },
          {
            "in": "path",
            "name": "folder_uid",
            "schema": {
              "description": "Folder uid",
              "format": "uuid",
              "title": "Folder Uid",
              "type": "string"
            },
            "required": true,
            "description": "Folder uid"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Soft-delete a folder and its contents (recursive).",
        "tags": [
          "Folders"
        ],
        "security": [
          {
            "ExternalAPIKeyAuth": []
          }
        ]
      }
    },
    "/api/external/v1/playback/info/": {
      "post": {
        "operationId": "assets_get_playback_info",
        "summary": "Resolve playback URLs",
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/VideoPlaybackInfoOut"
                    },
                    {
                      "$ref": "#/components/schemas/AudioPlaybackInfoOut"
                    },
                    {
                      "$ref": "#/components/schemas/ImagePlaybackInfoOut"
                    },
                    {
                      "$ref": "#/components/schemas/DocumentPlaybackInfoOut"
                    },
                    {
                      "$ref": "#/components/schemas/ThirdPartyPlaybackInfoOut"
                    }
                  ],
                  "title": "Response"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorOut"
                }
              }
            }
          }
        },
        "description": "Resolve signed, time-limited playback URLs (HLS/source/sprites) for an asset.\n\nTwo-step playback flow:\n1. Call ``GET /videos/{uid}/player/`` (or ``/assets/{uid}/player/``) with your\n   API key to obtain a signed ``playback_token``.\n2. Call this endpoint with that ``playback_token`` plus the ``asset_id`` to play.\n\nThis endpoint is **public by token** (``auth=None``): it needs no API key,\nonly the signed ``playback_token`` — so it can be called from a browser\nwithout exposing your secret ``sk_`` key. The returned stream URLs\n(``hls_url``, ``source_url``, ``preview_sprites_url``) are ``{url, expires_at}``\nobjects whose ``url`` is already signed and needs no ``Authorization`` header.",
        "tags": [
          "Playback"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FetchPlaybackInfoRequest"
              }
            }
          },
          "required": true
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AssetOrdering": {
        "description": "Allowed ``ordering`` values for asset/video lists.",
        "enum": [
          "created_at",
          "-created_at",
          "name",
          "-name",
          "duration",
          "-duration"
        ],
        "title": "AssetOrdering",
        "type": "string"
      },
      "AssetStatusFilter": {
        "description": "Allowed ``status`` filter values (mirrors ``Asset.StatusChoices``).",
        "enum": [
          "created",
          "uploading",
          "processing",
          "encoding",
          "ready",
          "error",
          "archived"
        ],
        "title": "AssetStatusFilter",
        "type": "string"
      },
      "Page_VideoListItemOut_": {
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "limit": {
            "title": "Limit",
            "type": "integer"
          },
          "offset": {
            "title": "Offset",
            "type": "integer"
          },
          "results": {
            "items": {
              "$ref": "#/components/schemas/VideoListItemOut"
            },
            "title": "Results",
            "type": "array"
          }
        },
        "required": [
          "count",
          "limit",
          "offset",
          "results"
        ],
        "title": "Page[VideoListItemOut]",
        "type": "object"
      },
      "VideoListItemOut": {
        "description": "Video list item (light).",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "type": {
            "default": "video",
            "title": "Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url"
          },
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width"
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "uid",
          "name",
          "slug",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "VideoListItemOut",
        "type": "object"
      },
      "ErrorDetailOut": {
        "description": "Debug details for error responses (only in DEBUG mode).",
        "properties": {
          "traceback": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Stack trace",
            "title": "Traceback"
          },
          "context": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "Additional context",
            "title": "Context"
          }
        },
        "title": "ErrorDetailOut",
        "type": "object"
      },
      "ErrorOut": {
        "description": "Standardized API error response.\n\nAll API errors return this format for consistency.\nThe 'details' field is only populated in DEBUG mode.",
        "example": {
          "code": "NOT_FOUND",
          "details": null,
          "error": "Resource not found"
        },
        "properties": {
          "error": {
            "description": "Human-readable error message",
            "title": "Error",
            "type": "string"
          },
          "code": {
            "description": "Machine-readable error code",
            "title": "Code",
            "type": "string"
          },
          "details": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ErrorDetailOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Debug details (DEBUG mode only)"
          }
        },
        "required": [
          "error",
          "code"
        ],
        "title": "ErrorOut",
        "type": "object"
      },
      "ResolutionOut": {
        "description": "Media resolution as a structured object.",
        "properties": {
          "width": {
            "title": "Width",
            "type": "integer"
          },
          "height": {
            "title": "Height",
            "type": "integer"
          }
        },
        "required": [
          "width",
          "height"
        ],
        "title": "ResolutionOut",
        "type": "object"
      },
      "TagOut": {
        "description": "A tag as exposed publicly (slug + display name).",
        "properties": {
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "name"
        ],
        "title": "TagOut",
        "type": "object"
      },
      "VideoDetailOut": {
        "description": "Video detail (rich).",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "type": {
            "default": "video",
            "title": "Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Excerpt"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          },
          "resolution": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ResolutionOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "quality": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quality"
          },
          "fps": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fps"
          },
          "codec": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Codec"
          },
          "has_speech": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has Speech"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Url"
          },
          "tags": {
            "items": {
              "$ref": "#/components/schemas/TagOut"
            },
            "title": "Tags",
            "type": "array"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "uid",
          "name",
          "slug",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "VideoDetailOut",
        "type": "object"
      },
      "VideoUpdateIn": {
        "description": "Editorial fields updatable on a video via PATCH (same as AssetUpdateIn).",
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Display name (1-255 chars).",
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Long-form description.",
            "title": "Description"
          },
          "excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Short summary / excerpt.",
            "title": "Excerpt"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Tag slugs to set on the asset (replaces the current list)",
            "title": "Tags"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Move to this folder (uid) in the primary workspace; null = root",
            "title": "Parent Id"
          }
        },
        "title": "VideoUpdateIn",
        "type": "object"
      },
      "AudioAssetListItemOut": {
        "description": "Audio asset list item.",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "description": "Asset name",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "const": "audio",
            "default": "audio",
            "title": "Type",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Asset description",
            "title": "Description"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Thumbnail URL (CDN)",
            "title": "Thumbnail Url"
          },
          "public_metadata": {
            "description": "Public metadata fields",
            "items": {
              "$ref": "#/components/schemas/PublicMetadataOut"
            },
            "title": "Public Metadata",
            "type": "array"
          },
          "duration": {
            "description": "Duration in seconds",
            "title": "Duration",
            "type": "number"
          }
        },
        "required": [
          "uid",
          "name",
          "duration"
        ],
        "title": "AudioAssetListItemOut",
        "type": "object"
      },
      "DimensionsOut": {
        "description": "Media dimensions.",
        "properties": {
          "width": {
            "description": "Width in pixels",
            "title": "Width",
            "type": "integer"
          },
          "height": {
            "description": "Height in pixels",
            "title": "Height",
            "type": "integer"
          }
        },
        "required": [
          "width",
          "height"
        ],
        "title": "DimensionsOut",
        "type": "object"
      },
      "DocumentAssetListItemOut": {
        "description": "Document asset list item.",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "description": "Asset name",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "const": "document",
            "default": "document",
            "title": "Type",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Asset description",
            "title": "Description"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Thumbnail URL (CDN)",
            "title": "Thumbnail Url"
          },
          "public_metadata": {
            "description": "Public metadata fields",
            "items": {
              "$ref": "#/components/schemas/PublicMetadataOut"
            },
            "title": "Public Metadata",
            "type": "array"
          },
          "page_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Number of pages",
            "title": "Page Count"
          }
        },
        "required": [
          "uid",
          "name"
        ],
        "title": "DocumentAssetListItemOut",
        "type": "object"
      },
      "EmbedAdsConfigOut": {
        "description": "VAST advertising configuration for the player.",
        "properties": {
          "vast_url": {
            "description": "VAST tag URL for ad serving",
            "title": "Vast Url",
            "type": "string"
          }
        },
        "required": [
          "vast_url"
        ],
        "title": "EmbedAdsConfigOut",
        "type": "object"
      },
      "EmbedCollectionOut": {
        "description": "Collection metadata within an embed.",
        "properties": {
          "subtype": {
            "description": "Collection subtype (playlist, album, gallery, etc.)",
            "title": "Subtype",
            "type": "string"
          },
          "total_items": {
            "description": "Total number of items",
            "title": "Total Items",
            "type": "integer"
          }
        },
        "required": [
          "subtype",
          "total_items"
        ],
        "title": "EmbedCollectionOut",
        "type": "object"
      },
      "EmbedItemOut": {
        "description": "Item within an embed - wraps an asset with optional overrides.",
        "properties": {
          "asset": {
            "description": "Asset metadata",
            "discriminator": {
              "mapping": {
                "archive": "#/components/schemas/FileAssetListItemOut",
                "audio": "#/components/schemas/AudioAssetListItemOut",
                "collection": "#/components/schemas/FileAssetListItemOut",
                "document": "#/components/schemas/DocumentAssetListItemOut",
                "file": "#/components/schemas/FileAssetListItemOut",
                "folder": "#/components/schemas/FileAssetListItemOut",
                "image": "#/components/schemas/ImageAssetListItemOut",
                "other": "#/components/schemas/FileAssetListItemOut",
                "subtitles": "#/components/schemas/FileAssetListItemOut",
                "third_party": "#/components/schemas/ThirdPartyAssetListItemOut",
                "video": "#/components/schemas/VideoAssetListItemOut"
              },
              "propertyName": "type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/VideoAssetListItemOut"
              },
              {
                "$ref": "#/components/schemas/AudioAssetListItemOut"
              },
              {
                "$ref": "#/components/schemas/ImageAssetListItemOut"
              },
              {
                "$ref": "#/components/schemas/DocumentAssetListItemOut"
              },
              {
                "$ref": "#/components/schemas/ThirdPartyAssetListItemOut"
              },
              {
                "$ref": "#/components/schemas/FileAssetListItemOut"
              }
            ],
            "title": "Asset"
          },
          "position": {
            "description": "Position in the embed (0-indexed)",
            "title": "Position",
            "type": "integer"
          },
          "custom_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Override the asset's name",
            "title": "Custom Title"
          },
          "custom_description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Override the asset's description",
            "title": "Custom Description"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Clip start time in seconds",
            "title": "Start Time"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Clip end time in seconds",
            "title": "End Time"
          }
        },
        "required": [
          "asset",
          "position"
        ],
        "title": "EmbedItemOut",
        "type": "object"
      },
      "EmbedOut": {
        "description": "Main embed response.",
        "properties": {
          "uid": {
            "description": "Embed unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "embed_type": {
            "description": "Type of embed",
            "enum": [
              "single",
              "collection"
            ],
            "title": "Embed Type",
            "type": "string"
          },
          "name": {
            "description": "Display name for the embed",
            "title": "Name",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional description",
            "title": "Description"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Thumbnail URL (CDN)",
            "title": "Thumbnail Url"
          },
          "items": {
            "description": "List of items in the embed",
            "items": {
              "$ref": "#/components/schemas/EmbedItemOut"
            },
            "title": "Items",
            "type": "array"
          },
          "collection": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EmbedCollectionOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Collection metadata (only for collections)"
          },
          "player_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EmbedPlayerConfigOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Player configuration defaults"
          },
          "player_theme": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlayerThemeDataOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Visual branding theme for the player"
          },
          "overlays": {
            "description": "Interactive overlays for the player",
            "items": {
              "$ref": "#/components/schemas/OverlayOut"
            },
            "title": "Overlays",
            "type": "array"
          },
          "ads_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EmbedAdsConfigOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "VAST advertising configuration (null if ads disabled)"
          },
          "collection_playback_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Collection playback ID for analytics (only for collections)",
            "title": "Collection Playback Id"
          },
          "playback_token": {
            "description": "Signed token for playback info requests (valid 4h)",
            "title": "Playback Token",
            "type": "string"
          }
        },
        "required": [
          "uid",
          "embed_type",
          "name",
          "items",
          "playback_token"
        ],
        "title": "EmbedOut",
        "type": "object"
      },
      "EmbedPlayerConfigOut": {
        "description": "Player configuration from backend.",
        "properties": {
          "auto_play": {
            "default": false,
            "description": "Auto-play on load",
            "title": "Auto Play",
            "type": "boolean"
          },
          "loop": {
            "default": false,
            "description": "Loop when finished",
            "title": "Loop",
            "type": "boolean"
          },
          "shuffle": {
            "default": false,
            "description": "Shuffle playback",
            "title": "Shuffle",
            "type": "boolean"
          },
          "theme": {
            "default": "dark",
            "description": "Player theme (dark, light, or colorful)",
            "title": "Theme",
            "type": "string"
          },
          "icon_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Custom icon color (CSS color value)",
            "title": "Icon Color"
          },
          "allow_source_download": {
            "default": false,
            "description": "Allow source video download",
            "title": "Allow Source Download",
            "type": "boolean"
          },
          "subtitles_default_mode": {
            "default": "specific",
            "description": "How to select default subtitle: 'specific' (use is_default track) or 'auto_detect' (match browser language)",
            "title": "Subtitles Default Mode",
            "type": "string"
          },
          "subtitles_auto_start": {
            "default": false,
            "description": "Whether subtitles auto-display on load or only when viewer clicks CC",
            "title": "Subtitles Auto Start",
            "type": "boolean"
          }
        },
        "title": "EmbedPlayerConfigOut",
        "type": "object"
      },
      "FileAssetListItemOut": {
        "description": "Generic asset list item for unsupported player types (file, archive, etc.).",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "description": "Asset name",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "description": "Asset type not directly playable",
            "enum": [
              "file",
              "archive",
              "collection",
              "folder",
              "subtitles",
              "other"
            ],
            "title": "Type",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Asset description",
            "title": "Description"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Thumbnail URL (CDN)",
            "title": "Thumbnail Url"
          },
          "public_metadata": {
            "description": "Public metadata fields",
            "items": {
              "$ref": "#/components/schemas/PublicMetadataOut"
            },
            "title": "Public Metadata",
            "type": "array"
          }
        },
        "required": [
          "uid",
          "name",
          "type"
        ],
        "title": "FileAssetListItemOut",
        "type": "object"
      },
      "ImageAssetListItemOut": {
        "description": "Image asset list item.",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "description": "Asset name",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "const": "image",
            "default": "image",
            "title": "Type",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Asset description",
            "title": "Description"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Thumbnail URL (CDN)",
            "title": "Thumbnail Url"
          },
          "public_metadata": {
            "description": "Public metadata fields",
            "items": {
              "$ref": "#/components/schemas/PublicMetadataOut"
            },
            "title": "Public Metadata",
            "type": "array"
          },
          "dimensions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DimensionsOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Image dimensions"
          }
        },
        "required": [
          "uid",
          "name"
        ],
        "title": "ImageAssetListItemOut",
        "type": "object"
      },
      "OverlayOut": {
        "description": "Overlay configuration for the player.",
        "properties": {
          "uid": {
            "description": "Overlay unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "overlay_type": {
            "description": "Type of overlay (cta, rating, recommendations, custom_html, info)",
            "title": "Overlay Type",
            "type": "string"
          },
          "payload": {
            "additionalProperties": true,
            "description": "Type-specific configuration",
            "title": "Payload",
            "type": "object"
          },
          "trigger_type": {
            "description": "When the overlay triggers (time, percent, video_start, video_end, pause)",
            "title": "Trigger Type",
            "type": "string"
          },
          "trigger_time": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Trigger time in seconds",
            "title": "Trigger Time"
          },
          "trigger_percent": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Trigger percentage (0-100)",
            "title": "Trigger Percent"
          },
          "position": {
            "description": "Position in the player",
            "title": "Position",
            "type": "string"
          },
          "is_dismissible": {
            "default": true,
            "description": "Whether the user can close the overlay",
            "title": "Is Dismissible",
            "type": "boolean"
          },
          "auto_hide_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Auto-hide after N seconds",
            "title": "Auto Hide Seconds"
          },
          "animation": {
            "default": "fade",
            "description": "Entry/exit animation",
            "title": "Animation",
            "type": "string"
          },
          "show_once": {
            "default": false,
            "description": "Only show once per session",
            "title": "Show Once",
            "type": "boolean"
          },
          "pauses_video": {
            "default": false,
            "description": "Pause video when displayed",
            "title": "Pauses Video",
            "type": "boolean"
          },
          "show_marker": {
            "default": true,
            "description": "Show a marker on the progress bar",
            "title": "Show Marker",
            "type": "boolean"
          },
          "priority": {
            "default": 0,
            "description": "Display priority (lower = higher)",
            "title": "Priority",
            "type": "integer"
          }
        },
        "required": [
          "uid",
          "overlay_type",
          "trigger_type",
          "position"
        ],
        "title": "OverlayOut",
        "type": "object"
      },
      "PlayerThemeDataOut": {
        "description": "Visual branding theme resolved for an embed.",
        "properties": {
          "base_theme": {
            "default": "dark",
            "title": "Base Theme",
            "type": "string"
          },
          "primary_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "accent_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accent Color"
          },
          "controls_bg_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Controls Bg Color"
          },
          "controls_text_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Controls Text Color"
          },
          "progress_bar_color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Progress Bar Color"
          },
          "logo_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Url"
          },
          "logo_position": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Position"
          },
          "logo_opacity": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Opacity"
          },
          "logo_click_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Click Url"
          },
          "show_title": {
            "default": true,
            "title": "Show Title",
            "type": "boolean"
          },
          "show_branding": {
            "default": true,
            "title": "Show Branding",
            "type": "boolean"
          },
          "custom_css": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Css"
          }
        },
        "title": "PlayerThemeDataOut",
        "type": "object"
      },
      "PublicMetadataOut": {
        "description": "A public metadata field with its display value.",
        "properties": {
          "label": {
            "description": "Human-readable field label",
            "title": "Label",
            "type": "string"
          },
          "value": {
            "description": "Display value",
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "label",
          "value"
        ],
        "title": "PublicMetadataOut",
        "type": "object"
      },
      "ThirdPartyAssetListItemOut": {
        "description": "Third-party asset list item (YouTube, Vimeo, Dailymotion).",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "description": "Asset name",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "const": "third_party",
            "default": "third_party",
            "title": "Type",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Asset description",
            "title": "Description"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Thumbnail URL (CDN)",
            "title": "Thumbnail Url"
          },
          "public_metadata": {
            "description": "Public metadata fields",
            "items": {
              "$ref": "#/components/schemas/PublicMetadataOut"
            },
            "title": "Public Metadata",
            "type": "array"
          },
          "duration": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Duration in seconds",
            "title": "Duration"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Provider name (youtube, vimeo, dailymotion)",
            "title": "Provider"
          },
          "provider_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Video ID on provider",
            "title": "Provider Id"
          },
          "embed_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Provider embed iframe URL",
            "title": "Embed Url"
          }
        },
        "required": [
          "uid",
          "name"
        ],
        "title": "ThirdPartyAssetListItemOut",
        "type": "object"
      },
      "VideoAssetListItemOut": {
        "description": "Video asset list item.",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "description": "Asset name",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "const": "video",
            "default": "video",
            "title": "Type",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Asset description",
            "title": "Description"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Thumbnail URL (CDN)",
            "title": "Thumbnail Url"
          },
          "public_metadata": {
            "description": "Public metadata fields",
            "items": {
              "$ref": "#/components/schemas/PublicMetadataOut"
            },
            "title": "Public Metadata",
            "type": "array"
          },
          "duration": {
            "description": "Duration in seconds",
            "title": "Duration",
            "type": "number"
          },
          "dimensions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DimensionsOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Video dimensions"
          },
          "has_audio": {
            "default": true,
            "description": "Whether video has audio track",
            "title": "Has Audio",
            "type": "boolean"
          }
        },
        "required": [
          "uid",
          "name",
          "duration"
        ],
        "title": "VideoAssetListItemOut",
        "type": "object"
      },
      "AssetTypeFilter": {
        "description": "Allowed ``type`` filter values for the assets domain.\n\nFolders are intentionally omitted — they are excluded from /assets/ and\nmanaged under /workspaces/{uid}/folders/.",
        "enum": [
          "file",
          "video",
          "image",
          "audio",
          "document",
          "archive",
          "collection",
          "subtitles",
          "third_party",
          "other"
        ],
        "title": "AssetTypeFilter",
        "type": "string"
      },
      "ExternalAudioListItemOut": {
        "description": "Audio list item.",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "type": {
            "const": "audio",
            "default": "audio",
            "title": "Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Publicly accessible, absolute thumbnail URL (e.g. https://api.videas.com/storages/files/<uid>/). No Authorization header required.",
            "title": "Thumbnail Url"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          }
        },
        "required": [
          "uid",
          "name",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "ExternalAudioListItemOut",
        "type": "object"
      },
      "ExternalGenericListItemOut": {
        "description": "List item for every other asset type (folder, document, …) — base only.",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "type": {
            "default": "other",
            "enum": [
              "file",
              "document",
              "archive",
              "collection",
              "subtitles",
              "third_party",
              "other"
            ],
            "title": "Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Publicly accessible, absolute thumbnail URL (e.g. https://api.videas.com/storages/files/<uid>/). No Authorization header required.",
            "title": "Thumbnail Url"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "uid",
          "name",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "ExternalGenericListItemOut",
        "type": "object"
      },
      "ExternalImageListItemOut": {
        "description": "Image list item.",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "type": {
            "const": "image",
            "default": "image",
            "title": "Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Publicly accessible, absolute thumbnail URL (e.g. https://api.videas.com/storages/files/<uid>/). No Authorization header required.",
            "title": "Thumbnail Url"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width"
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height"
          }
        },
        "required": [
          "uid",
          "name",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "ExternalImageListItemOut",
        "type": "object"
      },
      "ExternalVideoListItemOut": {
        "description": "Video list item.",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "type": {
            "const": "video",
            "default": "video",
            "title": "Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Publicly accessible, absolute thumbnail URL (e.g. https://api.videas.com/storages/files/<uid>/). No Authorization header required.",
            "title": "Thumbnail Url"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          },
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width"
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height"
          }
        },
        "required": [
          "uid",
          "name",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "ExternalVideoListItemOut",
        "type": "object"
      },
      "Page_Union_ExternalVideoListItemOut__ExternalAudioListItemOut__ExternalImageListItemOut__ExternalGenericListItemOut__": {
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "limit": {
            "title": "Limit",
            "type": "integer"
          },
          "offset": {
            "title": "Offset",
            "type": "integer"
          },
          "results": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/ExternalVideoListItemOut"
                },
                {
                  "$ref": "#/components/schemas/ExternalAudioListItemOut"
                },
                {
                  "$ref": "#/components/schemas/ExternalImageListItemOut"
                },
                {
                  "$ref": "#/components/schemas/ExternalGenericListItemOut"
                }
              ]
            },
            "title": "Results",
            "type": "array"
          }
        },
        "required": [
          "count",
          "limit",
          "offset",
          "results"
        ],
        "title": "Page[Union[ExternalVideoListItemOut, ExternalAudioListItemOut, ExternalImageListItemOut, ExternalGenericListItemOut]]",
        "type": "object"
      },
      "ExternalAudioDetailOut": {
        "description": "Audio detail.",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "type": {
            "const": "audio",
            "default": "audio",
            "title": "Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Excerpt"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Publicly accessible, absolute thumbnail URL (e.g. https://api.videas.com/storages/files/<uid>/). No Authorization header required.",
            "title": "Thumbnail Url"
          },
          "tags": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/TagOut"
            },
            "title": "Tags",
            "type": "array"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          }
        },
        "required": [
          "uid",
          "name",
          "slug",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "ExternalAudioDetailOut",
        "type": "object"
      },
      "ExternalGenericDetailOut": {
        "description": "Detail for every other asset type (folder, document, …) — base only.",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "type": {
            "default": "other",
            "enum": [
              "file",
              "document",
              "archive",
              "collection",
              "subtitles",
              "third_party",
              "other"
            ],
            "title": "Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Excerpt"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Publicly accessible, absolute thumbnail URL (e.g. https://api.videas.com/storages/files/<uid>/). No Authorization header required.",
            "title": "Thumbnail Url"
          },
          "tags": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/TagOut"
            },
            "title": "Tags",
            "type": "array"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "uid",
          "name",
          "slug",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "ExternalGenericDetailOut",
        "type": "object"
      },
      "ExternalImageDetailOut": {
        "description": "Image detail.",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "type": {
            "const": "image",
            "default": "image",
            "title": "Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Excerpt"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Publicly accessible, absolute thumbnail URL (e.g. https://api.videas.com/storages/files/<uid>/). No Authorization header required.",
            "title": "Thumbnail Url"
          },
          "tags": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/TagOut"
            },
            "title": "Tags",
            "type": "array"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width"
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height"
          }
        },
        "required": [
          "uid",
          "name",
          "slug",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "ExternalImageDetailOut",
        "type": "object"
      },
      "ExternalVideoDetailOut": {
        "description": "Video detail (rich media fields from metadata).",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "type": {
            "const": "video",
            "default": "video",
            "title": "Type",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Excerpt"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Publicly accessible, absolute thumbnail URL (e.g. https://api.videas.com/storages/files/<uid>/). No Authorization header required.",
            "title": "Thumbnail Url"
          },
          "tags": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/TagOut"
            },
            "title": "Tags",
            "type": "array"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          },
          "resolution": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ResolutionOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "quality": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quality"
          },
          "fps": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fps"
          },
          "codec": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Codec"
          },
          "has_speech": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has Speech"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          }
        },
        "required": [
          "uid",
          "name",
          "slug",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "ExternalVideoDetailOut",
        "type": "object"
      },
      "AssetUpdateIn": {
        "description": "Editorial (no-incidence) fields updatable via PATCH — all optional.\n\nExcludes fields with side effects (slug, is_visible/is_sensitive, source\nfile, status, thumbnail). `parent_id` moves the asset within its primary\nworkspace (`null` = root); the target must be a folder in that workspace.",
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Display name (1-255 chars).",
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Long-form description.",
            "title": "Description"
          },
          "excerpt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Short summary / excerpt.",
            "title": "Excerpt"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Tag slugs to set on the asset (replaces the current list)",
            "title": "Tags"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Move to this folder (uid) in the primary workspace; null = root",
            "title": "Parent Id"
          }
        },
        "title": "AssetUpdateIn",
        "type": "object"
      },
      "AssetTusUploadCreatedOut": {
        "description": "Response when asset TUS upload is created.\n\nSupports three upload modes:\n- create: Create a new asset (default)\n- version: Upload a new version of an existing asset\n- related: Create an asset linked to an existing asset",
        "properties": {
          "uid": {
            "description": "Unique identifier for this upload session",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "filename": {
            "description": "Original filename of the uploaded file",
            "title": "Filename",
            "type": "string"
          },
          "content_type": {
            "description": "MIME type of the file",
            "title": "Content Type",
            "type": "string"
          },
          "total_size": {
            "description": "Total file size in bytes",
            "minimum": 0,
            "title": "Total Size",
            "type": "integer"
          },
          "expires_at": {
            "description": "When this upload session expires",
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "location": {
            "description": "URL for subsequent upload operations (PATCH/HEAD)",
            "title": "Location",
            "type": "string"
          },
          "upload_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Authentication token for upload operations (deprecated)",
            "title": "Upload Token"
          },
          "workspace_uid": {
            "description": "Target workspace UUID",
            "format": "uuid",
            "title": "Workspace Uid",
            "type": "string"
          },
          "parent_folder_uid": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Parent folder UUID if specified",
            "title": "Parent Folder Uid"
          },
          "upload_mode": {
            "default": "create",
            "description": "Upload mode: 'create', 'version', or 'related'",
            "enum": [
              "create",
              "version",
              "related"
            ],
            "title": "Upload Mode",
            "type": "string"
          },
          "target_asset_uid": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Target asset UUID (for 'version' or 'related' mode)",
            "title": "Target Asset Uid"
          },
          "relationship_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Relationship type (for 'related' mode)",
            "title": "Relationship Type"
          },
          "asset_uid": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Asset UUID created upfront. Available immediately for 'create' mode, or equals target_asset_uid for 'version' mode. Allows tracking upload progress and queuing tasks before upload completes.",
            "title": "Asset Uid"
          }
        },
        "required": [
          "uid",
          "filename",
          "content_type",
          "total_size",
          "expires_at",
          "location",
          "workspace_uid"
        ],
        "title": "AssetTusUploadCreatedOut",
        "type": "object"
      },
      "Page_WorkspaceOut_": {
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "limit": {
            "title": "Limit",
            "type": "integer"
          },
          "offset": {
            "title": "Offset",
            "type": "integer"
          },
          "results": {
            "items": {
              "$ref": "#/components/schemas/WorkspaceOut"
            },
            "title": "Results",
            "type": "array"
          }
        },
        "required": [
          "count",
          "limit",
          "offset",
          "results"
        ],
        "title": "Page[WorkspaceOut]",
        "type": "object"
      },
      "WorkspaceOut": {
        "description": "A workspace of the organization (used to target uploads).",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          }
        },
        "required": [
          "uid",
          "name",
          "slug"
        ],
        "title": "WorkspaceOut",
        "type": "object"
      },
      "EmbedSettingsOut": {
        "description": "Embed domain-restriction settings for a workspace.\n\nPublic subset of the internal EmbedSettings (excludes\n``lock_preset_customization``).",
        "properties": {
          "restrict_domains": {
            "title": "Restrict Domains",
            "type": "boolean"
          },
          "allowed_domains": {
            "items": {
              "type": "string"
            },
            "title": "Allowed Domains",
            "type": "array"
          }
        },
        "required": [
          "restrict_domains",
          "allowed_domains"
        ],
        "title": "EmbedSettingsOut",
        "type": "object"
      },
      "EmbedRestrictionUpdateIn": {
        "description": "Toggle the domain restriction on/off.",
        "properties": {
          "restrict_domains": {
            "title": "Restrict Domains",
            "type": "boolean"
          }
        },
        "required": [
          "restrict_domains"
        ],
        "title": "EmbedRestrictionUpdateIn",
        "type": "object"
      },
      "EmbedDomainIn": {
        "description": "A single domain to add or remove from the allow-list.",
        "properties": {
          "domain": {
            "description": "Domain (wildcards like *.example.com allowed)",
            "maxLength": 255,
            "minLength": 1,
            "title": "Domain",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "title": "EmbedDomainIn",
        "type": "object"
      },
      "FolderOut": {
        "description": "A folder node in the workspace tree; children are nested recursively.",
        "properties": {
          "uid": {
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Parent folder uid (null = workspace root).",
            "title": "Parent Id"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "children": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/FolderOut"
            },
            "title": "Children",
            "type": "array"
          }
        },
        "required": [
          "uid",
          "name",
          "created_at",
          "updated_at"
        ],
        "title": "FolderOut",
        "type": "object"
      },
      "FolderCreateIn": {
        "description": "Create a folder in a workspace.",
        "properties": {
          "name": {
            "description": "Folder name (1-255 chars).",
            "maxLength": 255,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Parent folder uid; null = create at the workspace root.",
            "title": "Parent Id"
          }
        },
        "required": [
          "name"
        ],
        "title": "FolderCreateIn",
        "type": "object"
      },
      "FolderUpdateIn": {
        "description": "Update a folder (rename and/or move). All fields optional (partial).",
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New folder name (1-255 chars).",
            "title": "Name"
          },
          "parent_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Move the folder under this parent folder uid; null = move to the workspace root.",
            "title": "Parent Id"
          }
        },
        "title": "FolderUpdateIn",
        "type": "object"
      },
      "AudioChapterOut": {
        "description": "Audio chapter.",
        "properties": {
          "title": {
            "description": "Chapter title",
            "title": "Title",
            "type": "string"
          },
          "start_time": {
            "description": "Start time in seconds",
            "title": "Start Time",
            "type": "number"
          }
        },
        "required": [
          "title",
          "start_time"
        ],
        "title": "AudioChapterOut",
        "type": "object"
      },
      "AudioPlaybackInfoOut": {
        "description": "Audio playback info.",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "type": {
            "const": "audio",
            "default": "audio",
            "title": "Type",
            "type": "string"
          },
          "expires_at": {
            "description": "When playback info expires",
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "session_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Session ID for analytics (null for app player)",
            "title": "Session Id"
          },
          "resume_position_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Saved resume position in seconds for this viewer (null if none / already completed)",
            "title": "Resume Position Seconds"
          },
          "blocked": {
            "default": false,
            "description": "True when playback is withheld because the owner's credit wallet is empty; the player shows a neutral 'unavailable' message and no media URL is provided.",
            "title": "Blocked",
            "type": "boolean"
          },
          "source": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SignedUrlOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Audio source URL"
          },
          "waveform_url": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SignedUrlOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Waveform data URL"
          },
          "chapters": {
            "description": "Audio chapters",
            "items": {
              "$ref": "#/components/schemas/AudioChapterOut"
            },
            "title": "Chapters",
            "type": "array"
          },
          "subtitle_tracks": {
            "description": "Available subtitle tracks",
            "items": {
              "$ref": "#/components/schemas/SubtitleTrackOut"
            },
            "title": "Subtitle Tracks",
            "type": "array"
          },
          "linked_files": {
            "description": "Public linked files with download URLs",
            "items": {
              "$ref": "#/components/schemas/LinkedFileOut"
            },
            "title": "Linked Files",
            "type": "array"
          }
        },
        "required": [
          "uid",
          "expires_at"
        ],
        "title": "AudioPlaybackInfoOut",
        "type": "object"
      },
      "DocumentPlaybackInfoOut": {
        "description": "Document playback info.",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "type": {
            "const": "document",
            "default": "document",
            "title": "Type",
            "type": "string"
          },
          "expires_at": {
            "description": "When playback info expires",
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "session_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Session ID for analytics (null for app player)",
            "title": "Session Id"
          },
          "resume_position_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Saved resume position in seconds for this viewer (null if none / already completed)",
            "title": "Resume Position Seconds"
          },
          "blocked": {
            "default": false,
            "description": "True when playback is withheld because the owner's credit wallet is empty; the player shows a neutral 'unavailable' message and no media URL is provided.",
            "title": "Blocked",
            "type": "boolean"
          },
          "url": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SignedUrlOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Document URL"
          },
          "thumbnails": {
            "description": "Per-page thumbnail URLs",
            "items": {
              "type": "string"
            },
            "title": "Thumbnails",
            "type": "array"
          }
        },
        "required": [
          "uid",
          "expires_at"
        ],
        "title": "DocumentPlaybackInfoOut",
        "type": "object"
      },
      "ImagePlaybackInfoOut": {
        "description": "Image playback info with variants.",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "type": {
            "const": "image",
            "default": "image",
            "title": "Type",
            "type": "string"
          },
          "expires_at": {
            "description": "When playback info expires",
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "session_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Session ID for analytics (null for app player)",
            "title": "Session Id"
          },
          "resume_position_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Saved resume position in seconds for this viewer (null if none / already completed)",
            "title": "Resume Position Seconds"
          },
          "blocked": {
            "default": false,
            "description": "True when playback is withheld because the owner's credit wallet is empty; the player shows a neutral 'unavailable' message and no media URL is provided.",
            "title": "Blocked",
            "type": "boolean"
          },
          "variants": {
            "description": "Image variants",
            "items": {
              "$ref": "#/components/schemas/ImageVariantOut"
            },
            "title": "Variants",
            "type": "array"
          }
        },
        "required": [
          "uid",
          "expires_at"
        ],
        "title": "ImagePlaybackInfoOut",
        "type": "object"
      },
      "ImageVariantOut": {
        "description": "Image variant.",
        "properties": {
          "name": {
            "description": "Variant name (thumbnail, medium, large, original)",
            "title": "Name",
            "type": "string"
          },
          "dimensions": {
            "$ref": "#/components/schemas/DimensionsOut",
            "description": "Variant dimensions"
          },
          "url": {
            "$ref": "#/components/schemas/SignedUrlOut",
            "description": "Variant URL"
          }
        },
        "required": [
          "name",
          "dimensions",
          "url"
        ],
        "title": "ImageVariantOut",
        "type": "object"
      },
      "LinkedFileOut": {
        "description": "Linked file info for asset relationships.",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "name": {
            "description": "File name",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "description": "Asset type (document, image, etc.)",
            "title": "Type",
            "type": "string"
          },
          "file_url": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SignedUrlOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Download URL"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Thumbnail URL (CDN)",
            "title": "Thumbnail Url"
          }
        },
        "required": [
          "uid",
          "name",
          "type"
        ],
        "title": "LinkedFileOut",
        "type": "object"
      },
      "SignedUrlOut": {
        "description": "Signed URL with expiration.",
        "properties": {
          "url": {
            "description": "Presigned URL",
            "title": "Url",
            "type": "string"
          },
          "expires_at": {
            "description": "When the URL expires",
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          }
        },
        "required": [
          "url",
          "expires_at"
        ],
        "title": "SignedUrlOut",
        "type": "object"
      },
      "SubtitleTrackOut": {
        "description": "Subtitle track info for audio/video playback.",
        "properties": {
          "uid": {
            "description": "Subtitle unique identifier",
            "title": "Uid",
            "type": "string"
          },
          "label": {
            "description": "Track label (e.g. 'English')",
            "title": "Label",
            "type": "string"
          },
          "language": {
            "description": "BCP 47 language code",
            "title": "Language",
            "type": "string"
          },
          "is_default": {
            "default": false,
            "description": "Whether this is the default track",
            "title": "Is Default",
            "type": "boolean"
          },
          "src": {
            "description": "VTT subtitle file URL",
            "title": "Src",
            "type": "string"
          }
        },
        "required": [
          "uid",
          "label",
          "language",
          "src"
        ],
        "title": "SubtitleTrackOut",
        "type": "object"
      },
      "ThirdPartyPlaybackInfoOut": {
        "description": "Third-party playback info (iframe embed).",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "type": {
            "const": "third_party",
            "default": "third_party",
            "title": "Type",
            "type": "string"
          },
          "expires_at": {
            "description": "When playback info expires",
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "session_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Session ID for analytics (null for app player)",
            "title": "Session Id"
          },
          "resume_position_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Saved resume position in seconds for this viewer (null if none / already completed)",
            "title": "Resume Position Seconds"
          },
          "blocked": {
            "default": false,
            "description": "True when playback is withheld because the owner's credit wallet is empty; the player shows a neutral 'unavailable' message and no media URL is provided.",
            "title": "Blocked",
            "type": "boolean"
          },
          "embed_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Provider embed iframe URL",
            "title": "Embed Url"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Provider name (youtube, vimeo, dailymotion)",
            "title": "Provider"
          },
          "provider_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Video ID on provider",
            "title": "Provider Id"
          },
          "provider_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Canonical URL on provider",
            "title": "Provider Url"
          }
        },
        "required": [
          "uid",
          "expires_at"
        ],
        "title": "ThirdPartyPlaybackInfoOut",
        "type": "object"
      },
      "VideoChapterOut": {
        "description": "Video chapter.",
        "properties": {
          "title": {
            "description": "Chapter title",
            "title": "Title",
            "type": "string"
          },
          "start_time": {
            "description": "Start time in seconds",
            "title": "Start Time",
            "type": "number"
          },
          "thumbnail_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Chapter thumbnail URL",
            "title": "Thumbnail Url"
          }
        },
        "required": [
          "title",
          "start_time"
        ],
        "title": "VideoChapterOut",
        "type": "object"
      },
      "VideoPlaybackInfoOut": {
        "description": "Video playback info with HLS URL.",
        "properties": {
          "uid": {
            "description": "Asset unique identifier",
            "format": "uuid",
            "title": "Uid",
            "type": "string"
          },
          "type": {
            "const": "video",
            "default": "video",
            "title": "Type",
            "type": "string"
          },
          "expires_at": {
            "description": "When playback info expires",
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "session_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Session ID for analytics (null for app player)",
            "title": "Session Id"
          },
          "resume_position_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Saved resume position in seconds for this viewer (null if none / already completed)",
            "title": "Resume Position Seconds"
          },
          "blocked": {
            "default": false,
            "description": "True when playback is withheld because the owner's credit wallet is empty; the player shows a neutral 'unavailable' message and no media URL is provided.",
            "title": "Blocked",
            "type": "boolean"
          },
          "hls_url": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SignedUrlOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "HLS manifest URL"
          },
          "source_url": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SignedUrlOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Progressive source URL (legacy fallback when HLS is unavailable)"
          },
          "chapters": {
            "description": "Video chapters",
            "items": {
              "$ref": "#/components/schemas/VideoChapterOut"
            },
            "title": "Chapters",
            "type": "array"
          },
          "preview_sprites_url": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SignedUrlOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "Preview sprites URL for seek thumbnails"
          },
          "linked_files": {
            "description": "Public linked files with download URLs",
            "items": {
              "$ref": "#/components/schemas/LinkedFileOut"
            },
            "title": "Linked Files",
            "type": "array"
          }
        },
        "required": [
          "uid",
          "expires_at"
        ],
        "title": "VideoPlaybackInfoOut",
        "type": "object"
      },
      "FetchPlaybackInfoRequest": {
        "description": "Request to fetch playback info for an asset.",
        "properties": {
          "asset_id": {
            "description": "Asset UUID",
            "format": "uuid",
            "title": "Asset Id",
            "type": "string"
          },
          "playback_token": {
            "description": "Playback token from embed response",
            "maxLength": 500,
            "title": "Playback Token",
            "type": "string"
          }
        },
        "required": [
          "asset_id",
          "playback_token"
        ],
        "title": "FetchPlaybackInfoRequest",
        "type": "object"
      }
    },
    "securitySchemes": {
      "ExternalAPIKeyAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "servers": [
    {
      "url": "https://app.videas.com",
      "description": "Videas External API"
    }
  ]
}