Pin discovery/open to a short schedule-identity snapshot without sharing mutable Jellyfin media sources, gate the authorization-incomplete lab probe behind an explicit opt-in, and add focused plugin tests to the main solution. Redact remote URLs and serialize OpenAPI ApiKey requirements correctly. Refs #357 Co-Authored-By: OpenAI Codex <codex@openai.com>
32500 lines
860 KiB
JSON
32500 lines
860 KiB
JSON
{
|
|
"openapi": "3.1.1",
|
|
"info": {
|
|
"title": "ErsatzTV | v1",
|
|
"version": "1.0.0"
|
|
},
|
|
"paths": {
|
|
"/api/v1/artists/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Artists"
|
|
],
|
|
"summary": "Get an artist by id",
|
|
"operationId": "GetArtistById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ArtistDetailResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ArtistDetailResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ArtistDetailResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/artwork/uploads": {
|
|
"post": {
|
|
"tags": [
|
|
"Artwork"
|
|
],
|
|
"summary": "Upload channel logo or watermark artwork",
|
|
"operationId": "UploadArtwork",
|
|
"requestBody": {
|
|
"content": {
|
|
"multipart/form-data": {
|
|
"schema": {
|
|
"type": "object",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"file": {
|
|
"$ref": "#/components/schemas/IFormFile"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"target": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ArtworkUploadResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ArtworkUploadResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ArtworkUploadResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/blocks/groups": {
|
|
"get": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Get all block groups",
|
|
"operationId": "GetBlockGroups",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Create a block group",
|
|
"operationId": "BlockCreateGroup",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateBlockGroupRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateBlockGroupRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateBlockGroupRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateBlockGroupRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockGroupResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockGroupResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/blocks/groups/{id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Delete a block group",
|
|
"description": "Deletes the block group. The database cascade removes every block (and its items) in the group.",
|
|
"operationId": "BlockDeleteGroup",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/blocks": {
|
|
"get": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Get all blocks",
|
|
"operationId": "BlockGetAll",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Create a block",
|
|
"description": "Creates an empty block in the given block group. The block defaults to 30 minutes.",
|
|
"operationId": "BlockCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateBlockRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateBlockRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateBlockRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateBlockRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/blocks/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Get a block by id",
|
|
"operationId": "GetBlockById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Delete a block",
|
|
"operationId": "BlockDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Replace a block and its items",
|
|
"description": "Replaces the block's name/minutes/stop-scheduling and its full item list. Item indexes are assigned from the array order. Minutes must be greater than zero, divisible by 5, and at most 24 hours. Send the ETag from the items GET as If-Match to reject a stale overwrite with 412 (issue #253); a successful response carries the new ETag.",
|
|
"operationId": "BlockReplace",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceBlockRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceBlockRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceBlockRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceBlockRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockWithItemsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockWithItemsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockWithItemsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"412": {
|
|
"description": "Precondition Failed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/blocks/{id}/items": {
|
|
"get": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Get block items",
|
|
"description": "Returns the block's items and a strong ETag of the block's version. Pass that ETag back as If-Match on the replace (PUT) to detect a concurrent edit (issue #253).",
|
|
"operationId": "BlockGetItems",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/blocks/{id}/preview": {
|
|
"post": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Preview a block playout",
|
|
"description": "Builds a preview playout from the supplied block definition without persisting any changes to the block, its items, or any playout. Returns the resulting start/finish/title/duration list.",
|
|
"operationId": "BlockPreview",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceBlockRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceBlockRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceBlockRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceBlockRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockPreviewItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockPreviewItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockPreviewItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/blocks/{id}/copy": {
|
|
"post": {
|
|
"tags": [
|
|
"Blocks"
|
|
],
|
|
"summary": "Copy a block",
|
|
"description": "Copies the block and its items into another (or the same) block group under a new name.",
|
|
"operationId": "BlockCopy",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopyBlockRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopyBlockRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopyBlockRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopyBlockRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels": {
|
|
"get": {
|
|
"tags": [
|
|
"Channel"
|
|
],
|
|
"operationId": "ChannelGetAll",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Create a channel",
|
|
"operationId": "ChannelCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelDetailResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelDetailResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelDetailResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels/state": {
|
|
"get": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Get channel runtime state",
|
|
"operationId": "ChannelGetState",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelStateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelStateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelStateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/guide": {
|
|
"get": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Get the JSON channel guide (EPG)",
|
|
"description": "Returns per-channel programme arrays for the EPG grid. When omitted, start defaults to now, and end defaults to start plus the configured XmltvDaysToBuild window.",
|
|
"operationId": "ChannelGetGuide",
|
|
"parameters": [
|
|
{
|
|
"name": "start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
{
|
|
"name": "end",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelGuideResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelGuideResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelGuideResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels/{id}/playback-source": {
|
|
"get": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Resolve the scheduled playback source for a channel",
|
|
"description": "Returns the physical media item and in-file offset selected by the channel schedule at the requested time. This read-only endpoint never starts an ErsatzTV transcoder. at defaults to now.",
|
|
"operationId": "ChannelGetPlaybackSource",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "at",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelPlaybackSourceResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelPlaybackSourceResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelPlaybackSourceResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels/music-video-credits-templates": {
|
|
"get": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Get available music video credits template names",
|
|
"operationId": "GetMusicVideoCreditsTemplates",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels/stream-selectors": {
|
|
"get": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Get available channel stream selector names",
|
|
"operationId": "GetChannelStreamSelectors",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Get a channel by id",
|
|
"operationId": "GetChannelById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelDetailResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelDetailResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelDetailResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Update a channel",
|
|
"operationId": "ChannelUpdate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChannelRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChannelRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChannelRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChannelRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelDetailResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelDetailResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelDetailResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Delete a channel",
|
|
"operationId": "ChannelDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels/from-lineup": {
|
|
"post": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Create a channel from a library lineup",
|
|
"description": "Atomically creates the channel, program schedule, a classic playout, and (for multi-item lineups) a generated system playlist. A single-item lineup produces one flood schedule item that references the target directly (movie, show, season, artist, collection, smart/multi collection, rerun collection, or playlist) and no generated playlist. A lineup with two or more items produces one generated system playlist whose entries play in the given order (each entry played in full before the next) referenced by one flood schedule item; only movies, shows, seasons, artists, collections, smart collections and multi collections are allowed there (rerun collections and playlists are single-item only). playbackOrder sets how items within each lineup entry are ordered. Template defaults are stamped at create time; advanced overrides win.",
|
|
"operationId": "CreateChannelFromLineup",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelFromLineupRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelFromLineupRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelFromLineupRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelFromLineupRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelFromLineupResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelFromLineupResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelFromLineupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels/bulk/renumber": {
|
|
"post": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Renumber channels",
|
|
"operationId": "ChannelBulkRenumber",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkRenumberChannelsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkRenumberChannelsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkRenumberChannelsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkRenumberChannelsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels/bulk/group": {
|
|
"post": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Move channels to a group",
|
|
"operationId": "ChannelBulkMoveToGroup",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkMoveChannelsToGroupRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkMoveChannelsToGroupRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkMoveChannelsToGroupRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkMoveChannelsToGroupRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels/bulk/delete": {
|
|
"post": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Delete channels",
|
|
"operationId": "ChannelBulkDelete",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkDeleteChannelsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkDeleteChannelsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkDeleteChannelsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkDeleteChannelsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channels/{id}/playout/reset": {
|
|
"post": {
|
|
"tags": [
|
|
"Channels"
|
|
],
|
|
"summary": "Reset channel playout",
|
|
"description": "When mode is omitted, classic playouts use Refresh (rebuild while maintaining collection progress) and all other playout kinds use Reset (rebuild from scratch), matching the Blazor UI. Pass mode to force a specific PlayoutBuildMode.",
|
|
"operationId": "ChannelResetPlayout",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "mode",
|
|
"in": "query",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutBuildMode"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channel-templates": {
|
|
"get": {
|
|
"tags": [
|
|
"Channel Templates"
|
|
],
|
|
"summary": "Get all channel templates",
|
|
"operationId": "GetChannelTemplates",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Channel Templates"
|
|
],
|
|
"summary": "Create a channel template",
|
|
"operationId": "CreateChannelTemplate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelTemplateRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelTemplateRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelTemplateRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateChannelTemplateRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channel-templates/default": {
|
|
"get": {
|
|
"tags": [
|
|
"Channel Templates"
|
|
],
|
|
"summary": "Get the default channel template",
|
|
"operationId": "GetDefaultChannelTemplate",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channel-templates/default/{id}": {
|
|
"put": {
|
|
"tags": [
|
|
"Channel Templates"
|
|
],
|
|
"summary": "Set the default channel template",
|
|
"operationId": "SetDefaultChannelTemplate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/channel-templates/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Channel Templates"
|
|
],
|
|
"summary": "Get a channel template by id",
|
|
"operationId": "GetChannelTemplateById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Channel Templates"
|
|
],
|
|
"summary": "Update a channel template",
|
|
"operationId": "UpdateChannelTemplate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChannelTemplateRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChannelTemplateRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChannelTemplateRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateChannelTemplateRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChannelTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Channel Templates"
|
|
],
|
|
"summary": "Delete a channel template",
|
|
"operationId": "DeleteChannelTemplate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/collections": {
|
|
"get": {
|
|
"tags": [
|
|
"Collections"
|
|
],
|
|
"summary": "Get all collections",
|
|
"operationId": "CollectionGetAll",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Collections"
|
|
],
|
|
"summary": "Create a collection",
|
|
"operationId": "CollectionCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateCollectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateCollectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateCollectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateCollectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/collections/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Collections"
|
|
],
|
|
"summary": "Get a collection by id",
|
|
"operationId": "GetCollectionById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Collections"
|
|
],
|
|
"summary": "Update a collection",
|
|
"operationId": "CollectionUpdate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateCollectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateCollectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateCollectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateCollectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Collections"
|
|
],
|
|
"summary": "Delete a collection",
|
|
"operationId": "CollectionDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/collections/{id}/items": {
|
|
"get": {
|
|
"tags": [
|
|
"Collections"
|
|
],
|
|
"summary": "Get the items in a manual collection",
|
|
"description": "Returns a manual collection's full contents (all media kinds), paged.",
|
|
"operationId": "GetCollectionItems",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "pageNum",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 100
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedLibraryBrowseItemsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedLibraryBrowseItemsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedLibraryBrowseItemsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Collections"
|
|
],
|
|
"summary": "Add items to a collection",
|
|
"operationId": "CollectionAddItems",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddItemsToCollectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddItemsToCollectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddItemsToCollectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddItemsToCollectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/collections/{id}/custom-order": {
|
|
"put": {
|
|
"tags": [
|
|
"Collections"
|
|
],
|
|
"summary": "Set a collection's custom playback order",
|
|
"description": "Replaces the custom playback order of a manual collection. CustomIndex is assigned from array position (the request body has no index field); ids that are not members of the collection are ignored. Set UseCustomPlaybackOrder on the collection for this order to take effect.",
|
|
"operationId": "CollectionUpdateCustomOrder",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateCollectionCustomOrderRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateCollectionCustomOrderRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateCollectionCustomOrderRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateCollectionCustomOrderRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"412": {
|
|
"description": "Precondition Failed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/collections/{id}/items/{mediaItemId}": {
|
|
"delete": {
|
|
"tags": [
|
|
"Collections"
|
|
],
|
|
"summary": "Remove an item from a collection",
|
|
"operationId": "CollectionRemoveItem",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "mediaItemId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/decos/groups": {
|
|
"get": {
|
|
"tags": [
|
|
"Decos"
|
|
],
|
|
"summary": "Get all deco groups",
|
|
"operationId": "GetDecoGroups",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Decos"
|
|
],
|
|
"summary": "Create a deco group",
|
|
"operationId": "DecoCreateGroup",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoGroupRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoGroupRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoGroupRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoGroupRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoGroupResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoGroupResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/decos/groups/{id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"Decos"
|
|
],
|
|
"summary": "Delete a deco group",
|
|
"description": "Deletes the deco group. The database cascade removes every deco in the group (and each deco's break content and watermark/graphics-element assignments); any playout that used a removed deco has its default deco cleared.",
|
|
"operationId": "DecoDeleteGroup",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/decos": {
|
|
"get": {
|
|
"tags": [
|
|
"Decos"
|
|
],
|
|
"summary": "Get all decos",
|
|
"description": "Returns every deco as a flat list, ordered by group name then deco name.",
|
|
"operationId": "DecoGetAll",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoListItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoListItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoListItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Decos"
|
|
],
|
|
"summary": "Create a deco",
|
|
"description": "Creates a deco in the given deco group. The deco inherits everything by default.",
|
|
"operationId": "DecoCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/decos/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Decos"
|
|
],
|
|
"summary": "Get a deco by id",
|
|
"operationId": "GetDecoById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Decos"
|
|
],
|
|
"summary": "Delete a deco",
|
|
"description": "Deletes the deco. Any playout that used it as its default deco has that default cleared.",
|
|
"operationId": "DecoDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Decos"
|
|
],
|
|
"summary": "Replace a deco",
|
|
"description": "Replaces the full state of the deco (name and all six sections). Send the entire desired state, including unchanged sections. Merge is only valid for the watermark and graphics-element modes. Break content allows at most one item per placement.",
|
|
"operationId": "DecoReplace",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceDecoRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceDecoRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceDecoRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceDecoRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/deco-templates/groups": {
|
|
"get": {
|
|
"tags": [
|
|
"DecoTemplates"
|
|
],
|
|
"summary": "Get all deco template groups",
|
|
"operationId": "GetDecoTemplateGroups",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"DecoTemplates"
|
|
],
|
|
"summary": "Create a deco template group",
|
|
"operationId": "DecoTemplateCreateGroup",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoTemplateGroupRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoTemplateGroupRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoTemplateGroupRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoTemplateGroupRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateGroupResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateGroupResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/deco-templates/groups/{id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"DecoTemplates"
|
|
],
|
|
"summary": "Delete a deco template group",
|
|
"description": "Deletes the deco template group. The database cascade removes every deco template (and its items) in the group; any playout template that used a removed deco template has that reference cleared.",
|
|
"operationId": "DecoTemplateDeleteGroup",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/deco-templates": {
|
|
"get": {
|
|
"tags": [
|
|
"DecoTemplates"
|
|
],
|
|
"summary": "Get all deco templates",
|
|
"description": "Returns every deco template as a flat list, ordered by group name then deco template name.",
|
|
"operationId": "DecoTemplateGetAll",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"DecoTemplates"
|
|
],
|
|
"summary": "Create a deco template",
|
|
"description": "Creates an empty deco template in the given deco template group.",
|
|
"operationId": "DecoTemplateCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoTemplateRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoTemplateRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoTemplateRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateDecoTemplateRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/deco-templates/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"DecoTemplates"
|
|
],
|
|
"summary": "Get a deco template by id",
|
|
"operationId": "GetDecoTemplateById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"DecoTemplates"
|
|
],
|
|
"summary": "Delete a deco template",
|
|
"operationId": "DecoTemplateDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"DecoTemplates"
|
|
],
|
|
"summary": "Replace a deco template and its items",
|
|
"description": "Replaces the deco template's name and its full item list. Each item assigns a deco to a start/end time of day; an end time of 00:00:00 means the item runs to the end of the day. Items must not overlap. Send the ETag from the items GET as If-Match to reject a stale overwrite with 412 (issue #253); a successful response carries the new ETag.",
|
|
"operationId": "DecoTemplateReplace",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceDecoTemplateRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceDecoTemplateRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceDecoTemplateRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceDecoTemplateRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateWithItemsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateWithItemsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecoTemplateWithItemsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"412": {
|
|
"description": "Precondition Failed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/deco-templates/{id}/items": {
|
|
"get": {
|
|
"tags": [
|
|
"DecoTemplates"
|
|
],
|
|
"summary": "Get deco template items",
|
|
"description": "Returns the deco template's items and a strong ETag of the deco template's version. Pass that ETag back as If-Match on the replace (PUT) to detect a concurrent edit (issue #253).",
|
|
"operationId": "DecoTemplateGetItems",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/emby": {
|
|
"get": {
|
|
"tags": [
|
|
"Emby"
|
|
],
|
|
"summary": "Get Emby connection state and discovered servers",
|
|
"operationId": "GetEmbyState",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteMediaSourceStateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteMediaSourceStateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteMediaSourceStateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/emby/connection": {
|
|
"get": {
|
|
"tags": [
|
|
"Emby"
|
|
],
|
|
"summary": "Get the Emby connection address",
|
|
"description": "Never returns the API key — only whether one is currently configured (design #202 secure connection contract). Use the PUT to (re)connect; a blank apiKey there retains the existing key.",
|
|
"operationId": "GetEmbyConnection",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Emby"
|
|
],
|
|
"summary": "Connect, reconnect, or edit the Emby connection",
|
|
"description": "A blank/omitted apiKey retains the existing key; a non-blank value sets a new one. The key is required on first connect (no existing secret).",
|
|
"operationId": "SaveEmbyConnection",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SaveRemoteConnectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SaveRemoteConnectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SaveRemoteConnectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SaveRemoteConnectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/emby/disconnect": {
|
|
"post": {
|
|
"tags": [
|
|
"Emby"
|
|
],
|
|
"summary": "Disconnect Emby",
|
|
"description": "Purges the Emby connection, discovered servers, and all synced Emby content.",
|
|
"operationId": "DisconnectEmby",
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/emby/{id}/libraries": {
|
|
"get": {
|
|
"tags": [
|
|
"Emby"
|
|
],
|
|
"summary": "Get an Emby source's libraries",
|
|
"operationId": "GetEmbyLibraries",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Emby"
|
|
],
|
|
"summary": "Replace an Emby source's library sync preferences",
|
|
"description": "The body must be the complete set of the source's libraries (design #202 §C4a) — a row absent from the request is rejected, not silently ignored. Ids are not stable across a disable, so re-fetch this response rather than the request body.",
|
|
"operationId": "ReplaceEmbyLibraryPreferences",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/emby/{id}/path-replacements": {
|
|
"get": {
|
|
"tags": [
|
|
"Emby"
|
|
],
|
|
"summary": "Get an Emby source's path replacements",
|
|
"operationId": "GetEmbyPathReplacements",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Emby"
|
|
],
|
|
"summary": "Replace an Emby source's path replacements",
|
|
"operationId": "ReplaceEmbyPathReplacements",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/emby/{id}/refresh-libraries": {
|
|
"post": {
|
|
"tags": [
|
|
"Emby"
|
|
],
|
|
"summary": "Refresh an Emby source's libraries",
|
|
"operationId": "RefreshEmbyLibraries",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/emby/{id}/scan-collections": {
|
|
"post": {
|
|
"tags": [
|
|
"Emby"
|
|
],
|
|
"summary": "Scan an Emby source's collections",
|
|
"description": "Queues a synchronization of the source's collections (fire-and-forget). Pass ?deep=true for a deep scan. Returns 409 while an Emby collections scan is already in progress.",
|
|
"operationId": "ScanEmbyCollections",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "deep",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/ffmpeg/profiles": {
|
|
"get": {
|
|
"tags": [
|
|
"FFmpeg Profiles"
|
|
],
|
|
"summary": "Get all FFmpeg profiles",
|
|
"operationId": "GetFFmpegProfiles",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"FFmpeg Profiles"
|
|
],
|
|
"summary": "Create an FFmpeg profile",
|
|
"operationId": "CreateFFmpegProfile",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateFFmpegProfileRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateFFmpegProfileRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateFFmpegProfileRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateFFmpegProfileRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/ffmpeg/hardware-acceleration-kinds": {
|
|
"get": {
|
|
"tags": [
|
|
"FFmpeg Profiles"
|
|
],
|
|
"summary": "Get supported hardware acceleration kinds",
|
|
"description": "Returns the hardware-acceleration kinds available on this host (probed from the configured FFmpeg binary). Always includes None; falls back to just None when FFmpeg is unavailable.",
|
|
"operationId": "GetSupportedHardwareAccelerationKinds",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HardwareAccelerationKind"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HardwareAccelerationKind"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HardwareAccelerationKind"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/ffmpeg/profiles/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"FFmpeg Profiles"
|
|
],
|
|
"summary": "Get an FFmpeg profile by id",
|
|
"operationId": "GetFFmpegProfileById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"FFmpeg Profiles"
|
|
],
|
|
"summary": "Update an FFmpeg profile",
|
|
"operationId": "UpdateFFmpegProfile",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFFmpegProfileRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFFmpegProfileRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFFmpegProfileRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFFmpegProfileRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegFullProfileResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"FFmpeg Profiles"
|
|
],
|
|
"summary": "Delete an FFmpeg profile",
|
|
"operationId": "DeleteFFmpegProfile",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/filler-presets": {
|
|
"get": {
|
|
"tags": [
|
|
"Filler Presets"
|
|
],
|
|
"summary": "Get all filler presets",
|
|
"description": "Optionally filter to a single filler kind via the fillerKind query parameter.",
|
|
"operationId": "GetFillerPresets",
|
|
"parameters": [
|
|
{
|
|
"name": "fillerKind",
|
|
"in": "query",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FillerKind"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FillerPresetResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FillerPresetResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FillerPresetResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Filler Presets"
|
|
],
|
|
"summary": "Create a filler preset",
|
|
"operationId": "CreateFillerPreset",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateFillerPresetRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateFillerPresetRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateFillerPresetRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateFillerPresetRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FillerPresetFullResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FillerPresetFullResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FillerPresetFullResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/filler-presets/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Filler Presets"
|
|
],
|
|
"summary": "Get a filler preset by id",
|
|
"operationId": "GetFillerPresetById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FillerPresetFullResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FillerPresetFullResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FillerPresetFullResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Filler Presets"
|
|
],
|
|
"summary": "Update a filler preset",
|
|
"operationId": "UpdateFillerPreset",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFillerPresetRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFillerPresetRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFillerPresetRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFillerPresetRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FillerPresetFullResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FillerPresetFullResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FillerPresetFullResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Filler Presets"
|
|
],
|
|
"summary": "Delete a filler preset",
|
|
"operationId": "DeleteFillerPreset",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/graphics-elements": {
|
|
"get": {
|
|
"tags": [
|
|
"Graphics Elements"
|
|
],
|
|
"summary": "Get all graphics elements",
|
|
"description": "Returns all graphics elements.",
|
|
"operationId": "GetGraphicsElements",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GraphicsElementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GraphicsElementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GraphicsElementResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/graphics-elements/refresh": {
|
|
"post": {
|
|
"tags": [
|
|
"Graphics Elements"
|
|
],
|
|
"summary": "Re-sync graphics elements from disk",
|
|
"description": "Re-syncs the on-disk graphics element definitions into the database (matching the legacy Blazor behavior) so newly added files appear.",
|
|
"operationId": "RefreshGraphicsElements",
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/health": {
|
|
"get": {
|
|
"tags": [
|
|
"Health"
|
|
],
|
|
"summary": "Get health check results",
|
|
"operationId": "GetHealthChecks",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HealthCheckResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HealthCheckResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HealthCheckResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/images/folders": {
|
|
"get": {
|
|
"tags": [
|
|
"Images"
|
|
],
|
|
"summary": "List image library folders",
|
|
"description": "Omit parentId for the top-level folders; pass a folder id to list that folder's children.",
|
|
"operationId": "GetImageFolders",
|
|
"parameters": [
|
|
{
|
|
"name": "parentId",
|
|
"in": "query",
|
|
"description": "Parent image library-folder id; omit for the top-level folders",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ImageFolderResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ImageFolderResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ImageFolderResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/images/folders/{id}/duration": {
|
|
"put": {
|
|
"tags": [
|
|
"Images"
|
|
],
|
|
"summary": "Set or clear an image folder's playout duration",
|
|
"description": "Pass a positive durationSeconds to set the per-image duration for this folder (cascades to descendant images that don't override it); pass null to clear it and inherit from an ancestor.",
|
|
"operationId": "UpdateImageFolderDuration",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateImageFolderDurationRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateImageFolderDurationRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateImageFolderDurationRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateImageFolderDurationRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateImageFolderDurationResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateImageFolderDurationResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateImageFolderDurationResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/jellyfin": {
|
|
"get": {
|
|
"tags": [
|
|
"Jellyfin"
|
|
],
|
|
"summary": "Get Jellyfin connection state and discovered servers",
|
|
"operationId": "GetJellyfinState",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteMediaSourceStateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteMediaSourceStateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteMediaSourceStateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/jellyfin/connection": {
|
|
"get": {
|
|
"tags": [
|
|
"Jellyfin"
|
|
],
|
|
"summary": "Get the Jellyfin connection address",
|
|
"description": "Never returns the API key — only whether one is currently configured (design #202 secure connection contract). Use the PUT to (re)connect; a blank apiKey there retains the existing key.",
|
|
"operationId": "GetJellyfinConnection",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Jellyfin"
|
|
],
|
|
"summary": "Connect, reconnect, or edit the Jellyfin connection",
|
|
"description": "A blank/omitted apiKey retains the existing key; a non-blank value sets a new one. The key is required on first connect (no existing secret).",
|
|
"operationId": "SaveJellyfinConnection",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SaveRemoteConnectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SaveRemoteConnectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SaveRemoteConnectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SaveRemoteConnectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteConnectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/jellyfin/disconnect": {
|
|
"post": {
|
|
"tags": [
|
|
"Jellyfin"
|
|
],
|
|
"summary": "Disconnect Jellyfin",
|
|
"description": "Purges the Jellyfin connection, discovered servers, and all synced Jellyfin content.",
|
|
"operationId": "DisconnectJellyfin",
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/jellyfin/{id}/libraries": {
|
|
"get": {
|
|
"tags": [
|
|
"Jellyfin"
|
|
],
|
|
"summary": "Get a Jellyfin source's libraries",
|
|
"operationId": "GetJellyfinLibraries",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Jellyfin"
|
|
],
|
|
"summary": "Replace a Jellyfin source's library sync preferences",
|
|
"description": "The body must be the complete set of the source's libraries (design #202 §C4a) — a row absent from the request is rejected, not silently ignored. Ids are not stable across a disable, so re-fetch this response rather than the request body.",
|
|
"operationId": "ReplaceJellyfinLibraryPreferences",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/jellyfin/{id}/path-replacements": {
|
|
"get": {
|
|
"tags": [
|
|
"Jellyfin"
|
|
],
|
|
"summary": "Get a Jellyfin source's path replacements",
|
|
"operationId": "GetJellyfinPathReplacements",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Jellyfin"
|
|
],
|
|
"summary": "Replace a Jellyfin source's path replacements",
|
|
"operationId": "ReplaceJellyfinPathReplacements",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/jellyfin/{id}/refresh-libraries": {
|
|
"post": {
|
|
"tags": [
|
|
"Jellyfin"
|
|
],
|
|
"summary": "Refresh a Jellyfin source's libraries",
|
|
"operationId": "RefreshJellyfinLibraries",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/jellyfin/{id}/scan-collections": {
|
|
"post": {
|
|
"tags": [
|
|
"Jellyfin"
|
|
],
|
|
"summary": "Scan a Jellyfin source's collections",
|
|
"description": "Queues a synchronization of the source's collections (fire-and-forget). Pass ?deep=true for a deep scan. Returns 409 while a Jellyfin collections scan is already in progress.",
|
|
"operationId": "ScanJellyfinCollections",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "deep",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/languages": {
|
|
"get": {
|
|
"tags": [
|
|
"Languages"
|
|
],
|
|
"summary": "Get all available language codes",
|
|
"operationId": "GetLanguages",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LanguageCodeResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LanguageCodeResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LanguageCodeResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/libraries/scan-status": {
|
|
"get": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Get active library scan status",
|
|
"operationId": "GetLibraryScanStatus",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryScanStatusResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryScanStatusResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryScanStatusResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/libraries/{id}/scan": {
|
|
"post": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Scan library",
|
|
"description": "Queues a scan of the whole library. Pass ?deep=true for a deep (metadata-refresh) scan.",
|
|
"operationId": "LibrariesScanLibrary",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "deep",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/libraries/{id}/scan-show": {
|
|
"post": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Scan show",
|
|
"operationId": "LibrariesScanShow",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScanShowRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScanShowRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScanShowRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScanShowRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/library/browse": {
|
|
"get": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Browse and search library items",
|
|
"operationId": "BrowseLibrary",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "libraryId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "mediaType",
|
|
"in": "query",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LibraryBrowseMediaType"
|
|
}
|
|
},
|
|
{
|
|
"name": "pageNum",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 100
|
|
}
|
|
},
|
|
{
|
|
"name": "parentId",
|
|
"in": "query",
|
|
"description": "Parent id for a drill-in listing; only used with mediaType=TelevisionSeason (that show's seasons), mediaType=Episode (that season's episodes) or mediaType=MusicVideo (that artist's music videos), ignored otherwise",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedLibraryBrowseItemsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedLibraryBrowseItemsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedLibraryBrowseItemsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/libraries/local": {
|
|
"get": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Get all local libraries",
|
|
"operationId": "GetLocalLibraries",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LocalLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LocalLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LocalLibraryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Create a local library",
|
|
"operationId": "LocalLibrariesCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateLocalLibraryRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateLocalLibraryRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateLocalLibraryRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateLocalLibraryRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalLibraryResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalLibraryResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalLibraryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/libraries/local/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Get a local library by id",
|
|
"operationId": "GetLocalLibrary",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalLibraryDetailResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalLibraryDetailResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalLibraryDetailResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Update a local library",
|
|
"description": "Replaces the library's name and full path list. MediaKind is immutable after create and is not part of this request. Paths are identified by normalized path string, not id — a renamed path is a delete-old + add-new (its id changes).",
|
|
"operationId": "LocalLibrariesUpdate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLocalLibraryRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLocalLibraryRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLocalLibraryRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLocalLibraryRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalLibraryDetailResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalLibraryDetailResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalLibraryDetailResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Delete a local library",
|
|
"operationId": "LocalLibrariesDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/libraries/local/paths/{pathId}/move": {
|
|
"post": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Move a local library path to another local library",
|
|
"description": "Moves a path (and its scanned media) from its current library to a different local library of the same media kind. Blazor's move dialog enforces same-kind/different-library only client-side; this endpoint enforces both server-side so API/MCP clients cannot bypass them.",
|
|
"operationId": "LocalLibrariesMovePath",
|
|
"parameters": [
|
|
{
|
|
"name": "pathId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MoveLocalLibraryPathRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MoveLocalLibraryPathRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MoveLocalLibraryPathRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MoveLocalLibraryPathRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/libraries/local/path-exists": {
|
|
"post": {
|
|
"tags": [
|
|
"Libraries"
|
|
],
|
|
"summary": "Check whether a filesystem path exists",
|
|
"description": "Server-side existence check for the SPA's add-path UX (a browser cannot call Directory.Exists). This is a check-then-act convenience only — Create/Update still validate new paths at save time (design #202 §C2).",
|
|
"operationId": "LocalLibrariesCheckPathExists",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalPathCheckRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalPathCheckRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalPathCheckRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalPathCheckRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalPathCheckResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalPathCheckResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LocalPathCheckResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/logs": {
|
|
"get": {
|
|
"tags": [
|
|
"Logs"
|
|
],
|
|
"summary": "Get recent log entries",
|
|
"description": "sortField is validated against an allow-list (timestamp, level); an unrecognized value falls back to timestamp. sortDirection accepts asc/desc and falls back to desc (the pre-existing default, newest first).",
|
|
"operationId": "GetLogs",
|
|
"parameters": [
|
|
{
|
|
"name": "pageNum",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 100
|
|
}
|
|
},
|
|
{
|
|
"name": "filter",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "sortField",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": "timestamp"
|
|
}
|
|
},
|
|
{
|
|
"name": "sortDirection",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": "desc"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedLogEntriesResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedLogEntriesResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedLogEntriesResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/maintenance/gc": {
|
|
"post": {
|
|
"tags": [
|
|
"Maintenance"
|
|
],
|
|
"summary": "Garbage collect",
|
|
"operationId": "MaintenanceGarbageCollection",
|
|
"parameters": [
|
|
{
|
|
"name": "force",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/maintenance/empty_trash": {
|
|
"post": {
|
|
"tags": [
|
|
"Maintenance"
|
|
],
|
|
"summary": "Empty trash",
|
|
"operationId": "MaintenanceEmptyTrash",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/maintenance/clean_artwork": {
|
|
"post": {
|
|
"tags": [
|
|
"Maintenance"
|
|
],
|
|
"summary": "Clean artwork cache",
|
|
"operationId": "MaintenanceCleanArtwork",
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-items": {
|
|
"delete": {
|
|
"tags": [
|
|
"Media Items"
|
|
],
|
|
"summary": "Delete media items from the database",
|
|
"operationId": "DeleteMediaItems",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeleteMediaItemsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeleteMediaItemsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeleteMediaItemsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeleteMediaItemsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-items/{id}/info": {
|
|
"get": {
|
|
"tags": [
|
|
"Media Items"
|
|
],
|
|
"summary": "Get technical media info for a media item",
|
|
"operationId": "GetMediaItemInfo",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaItemInfoResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaItemInfoResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MediaItemInfoResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources": {
|
|
"get": {
|
|
"tags": [
|
|
"Media Sources"
|
|
],
|
|
"summary": "Get all media sources with their libraries",
|
|
"operationId": "GetMediaSources",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MediaSourceResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MediaSourceResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MediaSourceResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/collections-scan-status": {
|
|
"get": {
|
|
"tags": [
|
|
"Media Sources"
|
|
],
|
|
"summary": "Get active external-collections scan status",
|
|
"description": "Returns the media-source families (plex/jellyfin/emby) whose external-collections scan lock is currently held. Collections locks are family-global, so an entry means every source of that family is scanning. Empty when nothing is scanning. The SPA polls this to reconcile the collections scan buttons against a live active set, matching the library-scan UX.",
|
|
"operationId": "GetCollectionsScanStatus",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CollectionsScanStatusResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CollectionsScanStatusResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CollectionsScanStatusResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/movies/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Movies"
|
|
],
|
|
"summary": "Get a movie by id",
|
|
"operationId": "GetMovieById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MovieDetailResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MovieDetailResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MovieDetailResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/multi-collections": {
|
|
"get": {
|
|
"tags": [
|
|
"Multi Collections"
|
|
],
|
|
"summary": "Get all multi collections (paged)",
|
|
"operationId": "GetMultiCollections",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "pageNum",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 100
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedMultiCollectionsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedMultiCollectionsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedMultiCollectionsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Multi Collections"
|
|
],
|
|
"summary": "Create a multi collection",
|
|
"operationId": "MultiCollectionCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateMultiCollectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateMultiCollectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateMultiCollectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateMultiCollectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MultiCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MultiCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MultiCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/multi-collections/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Multi Collections"
|
|
],
|
|
"summary": "Get a multi collection by id",
|
|
"operationId": "GetMultiCollectionById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MultiCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MultiCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MultiCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Multi Collections"
|
|
],
|
|
"summary": "Update a multi collection",
|
|
"operationId": "MultiCollectionUpdate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateMultiCollectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateMultiCollectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateMultiCollectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateMultiCollectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MultiCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MultiCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MultiCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"412": {
|
|
"description": "Precondition Failed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Multi Collections"
|
|
],
|
|
"summary": "Delete a multi collection",
|
|
"operationId": "MultiCollectionDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playlists/groups": {
|
|
"get": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Get all playlist groups",
|
|
"operationId": "GetPlaylistGroups",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Create a playlist group",
|
|
"operationId": "CreatePlaylistGroup",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlaylistGroupRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlaylistGroupRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlaylistGroupRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlaylistGroupRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistGroupResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistGroupResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playlists/groups/{id}": {
|
|
"put": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Rename a playlist group",
|
|
"operationId": "UpdatePlaylistGroup",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlaylistGroupRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlaylistGroupRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlaylistGroupRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlaylistGroupRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistGroupResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistGroupResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Delete a playlist group",
|
|
"operationId": "DeletePlaylistGroup",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playlists": {
|
|
"get": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Get playlists in a playlist group",
|
|
"description": "Returns the playlists in the given playlist group.",
|
|
"operationId": "GetPlaylists",
|
|
"parameters": [
|
|
{
|
|
"name": "playlistGroupId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Create a playlist",
|
|
"operationId": "CreatePlaylistInGroup",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlaylistRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlaylistRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlaylistRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlaylistRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playlists/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Get a playlist by id",
|
|
"operationId": "GetPlaylistById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlaylistResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Update a playlist (rename and replace its items)",
|
|
"description": "Replaces the playlist's name and its full item list. Item indexes are assigned from the array order. Send the ETag from the items GET as If-Match to reject a stale overwrite with 412 (issue #253); a successful response carries the new ETag.",
|
|
"operationId": "UpdatePlaylist",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlaylistRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlaylistRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlaylistRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlaylistRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"412": {
|
|
"description": "Precondition Failed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Delete a playlist",
|
|
"operationId": "DeletePlaylist",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playlists/{id}/items": {
|
|
"get": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Get the items in a playlist",
|
|
"description": "Returns the playlist's items and a strong ETag of the playlist's version. Pass that ETag back as If-Match on the replace (PUT) to detect a concurrent edit (issue #253).",
|
|
"operationId": "GetPlaylistItems",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Add items to a playlist",
|
|
"operationId": "AddItemsToPlaylist",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddItemsToPlaylistRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddItemsToPlaylistRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddItemsToPlaylistRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddItemsToPlaylistRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playlists/preview": {
|
|
"post": {
|
|
"tags": [
|
|
"Playlists"
|
|
],
|
|
"summary": "Preview the playout of a draft playlist",
|
|
"description": "Builds a preview playout from the posted draft playlist items (no persistence).",
|
|
"operationId": "PreviewPlaylist",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlaylistRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlaylistRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlaylistRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlaylistRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistPreviewItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistPreviewItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistPreviewItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts": {
|
|
"get": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "List playouts",
|
|
"operationId": "GetPlayouts",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "pageNum",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 100
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedPlayoutsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedPlayoutsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedPlayoutsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Create a playout",
|
|
"description": "Creates a playout of any kind (Classic, Block, Sequential, Scripted, or ExternalJson) for a channel. Classic requires ProgramScheduleId; Sequential/Scripted/ExternalJson require ScheduleFile; Block requires neither. A channel may only have one playout.",
|
|
"operationId": "PlayoutCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlayoutRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlayoutRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlayoutRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePlayoutRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/warnings/count": {
|
|
"get": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Count playouts with a failed build",
|
|
"operationId": "GetPlayoutWarningsCount",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Get a playout by id",
|
|
"operationId": "GetPlayoutById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Update playout scheduling details",
|
|
"description": "DailyRebuildTime is always applied; omit it (null) to clear the daily reset. ScheduleFile is only valid for Sequential, Scripted, and ExternalJson playouts; omit it (null) to leave it unchanged.",
|
|
"operationId": "PlayoutUpdate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlayoutDetailsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlayoutDetailsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlayoutDetailsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlayoutDetailsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Delete a playout",
|
|
"operationId": "PlayoutDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/{id}/items": {
|
|
"get": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Get upcoming items (and unscheduled gaps) for a playout",
|
|
"operationId": "GetPlayoutItems",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "showFiller",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
},
|
|
{
|
|
"name": "pageNum",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 100
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedPlayoutItemsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedPlayoutItemsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedPlayoutItemsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/{id}/deco": {
|
|
"put": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Set (or clear) a playout's default deco",
|
|
"description": "Assigns the default deco for a block playout. Send a null decoId to clear it.",
|
|
"operationId": "PlayoutUpdateDefaultDeco",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateDefaultDecoRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateDefaultDecoRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateDefaultDecoRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateDefaultDecoRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/{id}/alternate-schedules": {
|
|
"get": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Get a classic playout's alternate schedules",
|
|
"description": "Lists a Classic playout's alternate schedules in priority order (first = highest priority). The last entry is the catch-all default, and its schedule is the playout's default schedule; if no explicit catch-all exists the query synthesizes one from the playout's default schedule. Only valid for Classic playouts; other kinds return 422.",
|
|
"operationId": "GetPlayoutAlternateSchedules",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutAlternateScheduleResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutAlternateScheduleResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutAlternateScheduleResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Replace a classic playout's alternate schedules",
|
|
"description": "Replaces a Classic playout's alternate schedules. Items are ordered by priority: the first item is the highest priority and the last item is the catch-all default whose schedule becomes the playout's default schedule. Index is assigned from array order (the request body has no Index field). The list must contain at least one item, and every ProgramScheduleId must exist. Only valid for Classic playouts.",
|
|
"operationId": "PlayoutReplaceAlternateSchedules",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlayoutAlternateSchedulesRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlayoutAlternateSchedulesRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlayoutAlternateSchedulesRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlayoutAlternateSchedulesRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutAlternateScheduleResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutAlternateScheduleResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutAlternateScheduleResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"412": {
|
|
"description": "Precondition Failed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/{id}/templates": {
|
|
"get": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Get a block playout's templates",
|
|
"description": "Lists a Block playout's templates in priority order (first = highest priority). Each template optionally carries a deco template. Only valid for Block playouts; other kinds return 422.",
|
|
"operationId": "GetPlayoutTemplates",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutTemplateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutTemplateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Replace a block playout's templates",
|
|
"description": "Replaces a Block playout's templates. Items are ordered by priority (first = highest priority); Index is assigned from array order (the request body has no Index field). Every TemplateId must exist, and any supplied DecoTemplateId must exist. An empty list clears all templates. Only valid for Block playouts.",
|
|
"operationId": "PlayoutReplaceTemplates",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlayoutTemplatesRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlayoutTemplatesRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlayoutTemplatesRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePlayoutTemplatesRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutTemplateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutTemplateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutTemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"412": {
|
|
"description": "Precondition Failed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/{id}/blocks": {
|
|
"get": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Get the blocks scheduled by a block playout",
|
|
"description": "Lists the distinct blocks reachable through a Block playout's templates, ordered by group then name. A playout with no templates (including non-Block playouts) returns an empty list.",
|
|
"operationId": "GetPlayoutBlocks",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/{id}/blocks/{blockId}/history": {
|
|
"get": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Get a block's playout history",
|
|
"description": "Returns the paged scheduling history for a single block within a block playout, oldest first. Each row's Key and Details carry raw JSON; decode a row via GET /api/v1/playouts/history/{id}.",
|
|
"operationId": "GetPlayoutBlockHistory",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "blockId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "pageNum",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 100
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedPlayoutHistoryResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedPlayoutHistoryResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedPlayoutHistoryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/history/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Decode a playout history row",
|
|
"description": "Decodes a single playout history row (by its id) into its playback order, collection, and media-item details. Returns 422 if the row's stored Key/Details JSON cannot be decoded.",
|
|
"operationId": "GetPlayoutHistoryDetails",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutHistoryDetailsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutHistoryDetailsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutHistoryDetailsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/reset-all": {
|
|
"post": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Reset all playouts",
|
|
"operationId": "ResetAllPlayouts",
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResetAllPlayoutsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResetAllPlayoutsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResetAllPlayoutsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/{id}/erase-items": {
|
|
"post": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Erase a playout's items",
|
|
"description": "Deletes the built items (plus gaps and build status) for a Block, Sequential, or Scripted playout, preserving history that precedes the currently-airing item. Only valid for those kinds; other kinds return 422.",
|
|
"operationId": "ErasePlayoutItems",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/{id}/erase-items-and-history": {
|
|
"post": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Erase a playout's items and history",
|
|
"description": "Deletes all built items, history, anchors, and build status for a Classic, Block, Sequential, or Scripted playout, and reseeds it. Only valid for those kinds; other kinds return 422.",
|
|
"operationId": "ErasePlayoutItemsAndHistory",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/playouts/items/{id}/scheduling-context": {
|
|
"get": {
|
|
"tags": [
|
|
"Playouts"
|
|
],
|
|
"summary": "Decode a playout item's scheduling context",
|
|
"description": "Decodes the stored scheduling context for a single playout item (by its row id) into readable, enriched JSON. Returns 404 when the item is missing or has no scheduling context.",
|
|
"operationId": "GetPlayoutItemSchedulingContext",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutItemSchedulingContextResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutItemSchedulingContextResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutItemSchedulingContextResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/plex": {
|
|
"get": {
|
|
"tags": [
|
|
"Plex"
|
|
],
|
|
"summary": "Get Plex connection state",
|
|
"description": "Returns whether ErsatzTV is authorized with plex.tv, whether a Plex sign-in/sync lock is held, and the list of discovered Plex servers. Poll this during the pin flow: authorized && !locked = done.",
|
|
"operationId": "GetPlexState",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteMediaSourceStateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteMediaSourceStateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoteMediaSourceStateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/plex/pin-flow": {
|
|
"post": {
|
|
"tags": [
|
|
"Plex"
|
|
],
|
|
"summary": "Start the Plex sign-in pin flow",
|
|
"description": "Acquires the Plex lock and starts the OAuth pin flow, returning the plex.tv authorization URL to open in a new tab. The lock stays held for the background flow; poll GET /api/v1/media-sources/plex until authorized && !locked. Also used to fix credentials for an existing but unauthorized server.",
|
|
"operationId": "StartPlexPinFlow",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlexPinFlowResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlexPinFlowResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlexPinFlowResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/plex/sign-out": {
|
|
"post": {
|
|
"tags": [
|
|
"Plex"
|
|
],
|
|
"summary": "Sign out of Plex",
|
|
"description": "Purges all Plex servers, synced Plex content, and stored credentials. Acquires the Plex lock; the handler always releases it (even on failure).",
|
|
"operationId": "SignOutOfPlex",
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/plex/{id}/libraries": {
|
|
"get": {
|
|
"tags": [
|
|
"Plex"
|
|
],
|
|
"summary": "Get a Plex server's libraries",
|
|
"operationId": "GetPlexLibraries",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Plex"
|
|
],
|
|
"summary": "Replace a Plex server's library sync preferences",
|
|
"description": "The body is the complete set of the source's libraries with each shouldSyncItems flag. A row absent from the request is left untouched. Every id must belong to this source (no Id=0 rows). Returns the reloaded list — library ids change when sync is disabled, so re-key any client draft off the response. Enabled libraries are queued for sync (locked libraries are skipped).",
|
|
"operationId": "ReplacePlexLibraryPreferences",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceRemoteLibraryPreferencesRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/plex/{id}/path-replacements": {
|
|
"get": {
|
|
"tags": [
|
|
"Plex"
|
|
],
|
|
"summary": "Get a Plex server's path replacements",
|
|
"operationId": "GetPlexPathReplacements",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Plex"
|
|
],
|
|
"summary": "Replace a Plex server's path replacements",
|
|
"description": "Replaces the source's path replacements: an existing id updates, id<1 adds, an existing id absent from the body is deleted. Every positive id must belong to this source and every row needs a non-empty RemotePath and LocalPath (else 422, no partial mutation). Returns the reloaded list.",
|
|
"operationId": "ReplacePlexPathReplacements",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplacePathReplacementsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/plex/{id}/refresh-libraries": {
|
|
"post": {
|
|
"tags": [
|
|
"Plex"
|
|
],
|
|
"summary": "Refresh a Plex server's libraries",
|
|
"description": "Queues a synchronization of the server's libraries (fire-and-forget). Returns 409 while a Plex sign-in/sync lock is held; duplicate refreshes are accepted (the scan is idempotent).",
|
|
"operationId": "RefreshPlexLibraries",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/media-sources/plex/{id}/scan-collections": {
|
|
"post": {
|
|
"tags": [
|
|
"Plex"
|
|
],
|
|
"summary": "Scan a Plex server's collections",
|
|
"description": "Queues a synchronization of the server's collections (fire-and-forget). Pass ?deep=true for a deep scan. Returns 409 while a Plex collections scan is already in progress.",
|
|
"operationId": "ScanPlexCollections",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "deep",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/rerun-collections": {
|
|
"get": {
|
|
"tags": [
|
|
"Rerun Collections"
|
|
],
|
|
"summary": "Get all rerun collections (paged)",
|
|
"operationId": "GetRerunCollections",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "pageNum",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 100
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedRerunCollectionsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedRerunCollectionsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedRerunCollectionsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Rerun Collections"
|
|
],
|
|
"summary": "Create a rerun collection",
|
|
"operationId": "RerunCollectionCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateRerunCollectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateRerunCollectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateRerunCollectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateRerunCollectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RerunCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RerunCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RerunCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/rerun-collections/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Rerun Collections"
|
|
],
|
|
"summary": "Get a rerun collection by id",
|
|
"operationId": "GetRerunCollectionById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RerunCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RerunCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RerunCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Rerun Collections"
|
|
],
|
|
"summary": "Update a rerun collection",
|
|
"operationId": "RerunCollectionUpdate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateRerunCollectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateRerunCollectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateRerunCollectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateRerunCollectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RerunCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RerunCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RerunCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"412": {
|
|
"description": "Precondition Failed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Rerun Collections"
|
|
],
|
|
"summary": "Delete a rerun collection",
|
|
"operationId": "RerunCollectionDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/ffmpeg/resolution/by-name/{name}": {
|
|
"get": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Get a resolution by name",
|
|
"operationId": "GetResolutionByName",
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResolutionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResolutionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResolutionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/settings/resolutions": {
|
|
"get": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Get all resolutions, including custom resolutions",
|
|
"operationId": "GetResolutions",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ResolutionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ResolutionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ResolutionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Create a custom resolution",
|
|
"operationId": "CreateResolution",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateResolutionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateResolutionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateResolutionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateResolutionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResolutionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResolutionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResolutionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/settings/resolutions/{id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Delete a custom resolution",
|
|
"operationId": "DeleteResolution",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/schedules": {
|
|
"get": {
|
|
"tags": [
|
|
"Schedules"
|
|
],
|
|
"summary": "Get all schedules",
|
|
"operationId": "ScheduleGetAll",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Schedules"
|
|
],
|
|
"summary": "Create a schedule",
|
|
"operationId": "ScheduleCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateScheduleRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateScheduleRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateScheduleRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateScheduleRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/schedules/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Schedules"
|
|
],
|
|
"summary": "Get a schedule by id",
|
|
"operationId": "GetScheduleById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Schedules"
|
|
],
|
|
"summary": "Update a schedule",
|
|
"operationId": "ScheduleUpdate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateScheduleRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateScheduleRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateScheduleRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateScheduleRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProgramScheduleResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Schedules"
|
|
],
|
|
"summary": "Delete a schedule",
|
|
"operationId": "ScheduleDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/schedules/{id}/items": {
|
|
"get": {
|
|
"tags": [
|
|
"Schedules"
|
|
],
|
|
"summary": "Get schedule items",
|
|
"description": "Returns the schedule's items plus a computed, best-effort runtime estimate: each item carries a nullable durationEstimate and the envelope carries a nullable totalDurationEstimate. Estimates are derived from referenced collection/media runtimes and are null when unbounded or unknown. The response also carries a strong ETag of the schedule's version; pass that ETag back as If-Match on the replace (PUT) to detect a concurrent edit (issue #253).",
|
|
"operationId": "ScheduleGetItems",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleItemsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleItemsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleItemsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Schedules"
|
|
],
|
|
"summary": "Add a schedule item",
|
|
"operationId": "ScheduleAddItem",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleItemRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleItemRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleItemRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleItemRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleItemResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleItemResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Schedules"
|
|
],
|
|
"summary": "Replace schedule items",
|
|
"description": "Replaces the schedule's full item list; item indexes are assigned from the array order. Send the ETag from the items GET as If-Match to reject a stale overwrite with 412 (issue #253); a successful response carries the new ETag.",
|
|
"operationId": "ScheduleReplaceItems",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceScheduleItemsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceScheduleItemsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceScheduleItemsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceScheduleItemsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScheduleItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScheduleItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScheduleItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"412": {
|
|
"description": "Precondition Failed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/schedules/{id}/items/{itemId}": {
|
|
"delete": {
|
|
"tags": [
|
|
"Schedules"
|
|
],
|
|
"summary": "Delete a schedule item",
|
|
"operationId": "ScheduleDeleteItem",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "itemId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/search": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Search library items across all media kinds",
|
|
"operationId": "Search",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "pageNum",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 50
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SearchResultsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SearchResultsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SearchResultsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/search/all-items": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Search library items across all media kinds and return raw id lists",
|
|
"description": "Returns every matching item's id, grouped by media kind, with no paging. Used by the SPA's \"add all to collection/playlist\" flow to materialize ids before calling the add endpoints.",
|
|
"operationId": "SearchAllItems",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SearchResultAllItemsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SearchResultAllItemsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SearchResultAllItemsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/search/collections": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Search collections by name",
|
|
"description": "Returns matching collections as {id, name} options for scheduling editors.",
|
|
"operationId": "SearchCollections",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/search/television-shows": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Search television shows by name",
|
|
"description": "Returns matching television shows as {id, name} options for scheduling editors.",
|
|
"operationId": "SearchTelevisionShows",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/search/television-seasons": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Search television seasons by name",
|
|
"description": "Returns matching television seasons as {id, name} options for scheduling editors.",
|
|
"operationId": "SearchTelevisionSeasons",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/search/smart-collections": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Search smart collections by name",
|
|
"description": "Returns matching smart collections as {id, name} options for scheduling editors.",
|
|
"operationId": "SearchSmartCollections",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/search/artists": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Search artists by name",
|
|
"description": "Returns matching artists as {id, name} options for scheduling editors.",
|
|
"operationId": "SearchArtists",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/search/multi-collections": {
|
|
"get": {
|
|
"tags": [
|
|
"Search"
|
|
],
|
|
"summary": "Search multi collections by name",
|
|
"description": "Returns matching multi collections as {id, name} options for scheduling editors.",
|
|
"operationId": "SearchMultiCollections",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": ""
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SchedulingPickerOptionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/seasons/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Television"
|
|
],
|
|
"summary": "Get a television season by id",
|
|
"operationId": "GetSeasonById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeasonDetailResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeasonDetailResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeasonDetailResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/sessions": {
|
|
"get": {
|
|
"tags": [
|
|
"Sessions"
|
|
],
|
|
"summary": "Get sessions",
|
|
"operationId": "SessionGetSessions",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HlsSessionModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HlsSessionModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HlsSessionModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/session/{channelNumber}": {
|
|
"delete": {
|
|
"tags": [
|
|
"Sessions"
|
|
],
|
|
"summary": "Stop session",
|
|
"operationId": "SessionStopSession",
|
|
"parameters": [
|
|
{
|
|
"name": "channelNumber",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/settings/ffmpeg": {
|
|
"get": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Get global FFmpeg settings",
|
|
"operationId": "GetFfmpegSettings",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Update global FFmpeg settings",
|
|
"operationId": "UpdateFfmpegSettings",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFFmpegSettingsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFFmpegSettingsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFFmpegSettingsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFFmpegSettingsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FFmpegSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/settings/playout": {
|
|
"get": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Get global playout settings",
|
|
"operationId": "GetPlayoutSettings",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Update global playout settings",
|
|
"operationId": "UpdatePlayoutSettings",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlayoutSettingsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlayoutSettingsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlayoutSettingsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdatePlayoutSettingsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PlayoutSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/settings/xmltv": {
|
|
"get": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Get global XMLTV settings",
|
|
"operationId": "GetXmltvSettings",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/XmltvSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/XmltvSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/XmltvSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Update global XMLTV settings",
|
|
"operationId": "UpdateXmltvSettings",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateXmltvSettingsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateXmltvSettingsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateXmltvSettingsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateXmltvSettingsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/XmltvSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/XmltvSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/XmltvSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/settings/scanner": {
|
|
"get": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Get library scan cadence",
|
|
"operationId": "GetScannerSettings",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScannerSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScannerSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScannerSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Update library scan cadence",
|
|
"operationId": "UpdateScannerSettings",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateScannerSettingsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateScannerSettingsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateScannerSettingsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateScannerSettingsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScannerSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScannerSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScannerSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/settings/logging": {
|
|
"get": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Get per-area minimum log levels",
|
|
"operationId": "GetLoggingSettings",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LoggingSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LoggingSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LoggingSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Update per-area minimum log levels",
|
|
"operationId": "UpdateLoggingSettings",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLoggingSettingsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLoggingSettingsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLoggingSettingsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateLoggingSettingsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LoggingSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LoggingSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LoggingSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/settings/ui": {
|
|
"get": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Get UI preferences",
|
|
"operationId": "GetUiSettings",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UiSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UiSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UiSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Update UI preferences",
|
|
"operationId": "UpdateUiSettings",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateUiSettingsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateUiSettingsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateUiSettingsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateUiSettingsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UiSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UiSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UiSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/settings/hdhr": {
|
|
"get": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Get HDHomeRun emulation settings",
|
|
"operationId": "GetHdhrSettings",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HdhrSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HdhrSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HdhrSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"summary": "Update HDHomeRun emulation settings",
|
|
"operationId": "UpdateHdhrSettings",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateHdhrSettingsRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateHdhrSettingsRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateHdhrSettingsRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateHdhrSettingsRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HdhrSettingsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HdhrSettingsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HdhrSettingsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/shows/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Television"
|
|
],
|
|
"summary": "Get a television show by id",
|
|
"operationId": "GetShowById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ShowDetailResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ShowDetailResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ShowDetailResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/smart-collections": {
|
|
"get": {
|
|
"tags": [
|
|
"Smart Collections"
|
|
],
|
|
"summary": "Get all smart collections",
|
|
"operationId": "SmartCollectionGetAll",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Smart Collections"
|
|
],
|
|
"summary": "Create a smart collection",
|
|
"operationId": "SmartCollectionCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateSmartCollectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateSmartCollectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateSmartCollectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateSmartCollectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/smart-collections/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Smart Collections"
|
|
],
|
|
"summary": "Get a smart collection by id",
|
|
"operationId": "GetSmartCollectionById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Smart Collections"
|
|
],
|
|
"summary": "Update a smart collection",
|
|
"operationId": "SmartCollectionUpdate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateSmartCollectionRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateSmartCollectionRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateSmartCollectionRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateSmartCollectionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SmartCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Smart Collections"
|
|
],
|
|
"summary": "Delete a smart collection",
|
|
"operationId": "SmartCollectionDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/templates/groups": {
|
|
"get": {
|
|
"tags": [
|
|
"Templates"
|
|
],
|
|
"summary": "Get all template groups",
|
|
"operationId": "GetTemplateGroups",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Templates"
|
|
],
|
|
"summary": "Create a template group",
|
|
"operationId": "TemplateCreateGroup",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTemplateGroupRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTemplateGroupRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTemplateGroupRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTemplateGroupRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateGroupResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateGroupResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateGroupResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/templates/groups/{id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"Templates"
|
|
],
|
|
"summary": "Delete a template group",
|
|
"description": "Deletes the template group. The database cascade removes every template (and its items) in the group.",
|
|
"operationId": "TemplateDeleteGroup",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/templates": {
|
|
"get": {
|
|
"tags": [
|
|
"Templates"
|
|
],
|
|
"summary": "Get all templates",
|
|
"description": "Returns every template. Pass templateGroupId to filter to the templates in a single template group.",
|
|
"operationId": "TemplateGetAll",
|
|
"parameters": [
|
|
{
|
|
"name": "templateGroupId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Templates"
|
|
],
|
|
"summary": "Create a template",
|
|
"description": "Creates an empty template in the given template group.",
|
|
"operationId": "TemplateCreate",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTemplateRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTemplateRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTemplateRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTemplateRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/templates/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Templates"
|
|
],
|
|
"summary": "Get a template by id",
|
|
"operationId": "GetTemplateById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Templates"
|
|
],
|
|
"summary": "Delete a template",
|
|
"operationId": "TemplateDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Templates"
|
|
],
|
|
"summary": "Replace a template and its items",
|
|
"description": "Replaces the template's name and its full item list. Each item assigns a block to a start time of day; items must not overlap (an item's end time is its start time plus the assigned block's duration). Send the ETag from the items GET as If-Match to reject a stale overwrite with 412 (issue #253); a successful response carries the new ETag.",
|
|
"operationId": "TemplateReplace",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceTemplateRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceTemplateRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceTemplateRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReplaceTemplateRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateWithItemsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateWithItemsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateWithItemsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"412": {
|
|
"description": "Precondition Failed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/templates/{id}/items": {
|
|
"get": {
|
|
"tags": [
|
|
"Templates"
|
|
],
|
|
"summary": "Get template items",
|
|
"description": "Returns the template's items and a strong ETag of the template's version. Pass that ETag back as If-Match on the replace (PUT) to detect a concurrent edit (issue #253).",
|
|
"operationId": "TemplateGetItems",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateItemResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/templates/{id}/copy": {
|
|
"post": {
|
|
"tags": [
|
|
"Templates"
|
|
],
|
|
"summary": "Copy a template",
|
|
"description": "Copies the template and its items into another (or the same) template group under a new name.",
|
|
"operationId": "TemplateCopy",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopyTemplateRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopyTemplateRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopyTemplateRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CopyTemplateRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/trakt/lists": {
|
|
"get": {
|
|
"tags": [
|
|
"Trakt"
|
|
],
|
|
"summary": "Get paged Trakt lists",
|
|
"operationId": "GetTraktLists",
|
|
"parameters": [
|
|
{
|
|
"name": "pageNum",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 100
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedTraktListsResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedTraktListsResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PagedTraktListsResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Trakt"
|
|
],
|
|
"summary": "Add a Trakt list by URL",
|
|
"description": "Dispatches to the same background worker channel used by the classic UI's \"Add Trakt List\" dialog; the list is fetched, saved, and matched asynchronously. Poll GET /api/v1/trakt/status while busy.",
|
|
"operationId": "TraktAdd",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddTraktListRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddTraktListRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddTraktListRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddTraktListRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/trakt/lists/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Trakt"
|
|
],
|
|
"summary": "Get a Trakt list by id",
|
|
"operationId": "GetTraktListById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TraktListResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TraktListResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TraktListResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Trakt"
|
|
],
|
|
"summary": "Delete a Trakt list",
|
|
"operationId": "TraktDelete",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Trakt"
|
|
],
|
|
"summary": "Update a Trakt list's settings",
|
|
"operationId": "TraktUpdate",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateTraktListRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateTraktListRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateTraktListRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateTraktListRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TraktListResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TraktListResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TraktListResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/trakt/lists/{id}/match": {
|
|
"post": {
|
|
"tags": [
|
|
"Trakt"
|
|
],
|
|
"summary": "Match a Trakt list's items",
|
|
"operationId": "TraktMatch",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/trakt/status": {
|
|
"get": {
|
|
"tags": [
|
|
"Trakt"
|
|
],
|
|
"summary": "Get Trakt background operation status",
|
|
"description": "Wraps IEntityLocker.IsTraktLocked() — the HTTP-observable substitute for the Blazor page's live lock event. The SPA polls this while add/match/delete are in flight.",
|
|
"operationId": "GetTraktStatus",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TraktStatusResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TraktStatusResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TraktStatusResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/troubleshoot/info": {
|
|
"get": {
|
|
"tags": [
|
|
"Troubleshooting"
|
|
],
|
|
"summary": "Get troubleshooting diagnostic info",
|
|
"operationId": "GetTroubleshootingInfo",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TroubleshootingInfoResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TroubleshootingInfoResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TroubleshootingInfoResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/troubleshoot/validate-schedule": {
|
|
"post": {
|
|
"tags": [
|
|
"Troubleshooting"
|
|
],
|
|
"summary": "Validate a sequential schedule YAML document",
|
|
"description": "Validates a sequential-schedule YAML string against the full (or import) schema. Returns whether it is valid, any validation messages, and the JSON conversion of the YAML. Parse/validator errors are reported as messages (IsValid=false), never as a 500.",
|
|
"operationId": "ValidateSequentialSchedule",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidateSequentialScheduleRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidateSequentialScheduleRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidateSequentialScheduleRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidateSequentialScheduleRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidateSequentialScheduleResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidateSequentialScheduleResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidateSequentialScheduleResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/troubleshoot/playback/start": {
|
|
"post": {
|
|
"tags": [
|
|
"Troubleshooting"
|
|
],
|
|
"summary": "Start a troubleshooting playback session",
|
|
"operationId": "StartTroubleshootingPlayback",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/StartTroubleshootingPlaybackRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/StartTroubleshootingPlaybackRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/StartTroubleshootingPlaybackRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/StartTroubleshootingPlaybackRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TroubleshootingPlaybackStartedResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TroubleshootingPlaybackStartedResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TroubleshootingPlaybackStartedResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/troubleshoot/playback/archive": {
|
|
"post": {
|
|
"tags": [
|
|
"Troubleshooting"
|
|
],
|
|
"summary": "Download the last troubleshooting playback session archive",
|
|
"operationId": "DownloadTroubleshootingArchive",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/troubleshoot/playback/sample/{mediaItemId}": {
|
|
"post": {
|
|
"tags": [
|
|
"Troubleshooting"
|
|
],
|
|
"summary": "Download a media sample archive for troubleshooting",
|
|
"operationId": "DownloadTroubleshootingMediaSample",
|
|
"parameters": [
|
|
{
|
|
"name": "mediaItemId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK"
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/troubleshoot/playback/stream-selectors": {
|
|
"get": {
|
|
"tags": [
|
|
"Troubleshooting"
|
|
],
|
|
"summary": "List available channel stream selectors",
|
|
"operationId": "GetTroubleshootingStreamSelectors",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/troubleshoot/playback/subtitles/{mediaItemId}": {
|
|
"get": {
|
|
"tags": [
|
|
"Troubleshooting"
|
|
],
|
|
"summary": "List selectable subtitle streams for a media item",
|
|
"description": "Returns the subtitle streams that can be burned in for a troubleshooting playback. Each item's id is the value to pass back as the POST /api/v1/troubleshoot/playback/start request body's subtitleId field.",
|
|
"operationId": "GetTroubleshootingSubtitles",
|
|
"parameters": [
|
|
{
|
|
"name": "mediaItemId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TroubleshootingSubtitleResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TroubleshootingSubtitleResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TroubleshootingSubtitleResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/troubleshoot/playback/status": {
|
|
"get": {
|
|
"tags": [
|
|
"Troubleshooting"
|
|
],
|
|
"summary": "Get the status of the current or last troubleshooting playback session",
|
|
"description": "Reports whether a troubleshooting playback is idle, running, completed, or failed, along with the last session's ffmpeg exit code, playback speed, and a tail (last 500 lines) of its log output.",
|
|
"operationId": "GetTroubleshootingPlaybackStatus",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TroubleshootingPlaybackStatusResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TroubleshootingPlaybackStatusResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TroubleshootingPlaybackStatusResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/version": {
|
|
"get": {
|
|
"tags": [
|
|
"Version"
|
|
],
|
|
"summary": "Get version",
|
|
"operationId": "GetVersion",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CombinedVersion"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CombinedVersion"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CombinedVersion"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/watermarks": {
|
|
"get": {
|
|
"tags": [
|
|
"Watermarks"
|
|
],
|
|
"summary": "Get all watermarks",
|
|
"operationId": "GetWatermarks",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WatermarkResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WatermarkResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WatermarkResponseModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Watermarks"
|
|
],
|
|
"summary": "Create a watermark",
|
|
"operationId": "CreateWatermark",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateWatermarkRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateWatermarkRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateWatermarkRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateWatermarkRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WatermarkFullResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WatermarkFullResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WatermarkFullResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/v1/watermarks/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Watermarks"
|
|
],
|
|
"summary": "Get a watermark by id",
|
|
"operationId": "GetWatermarkById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WatermarkFullResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WatermarkFullResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WatermarkFullResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "API key missing or invalid.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Watermarks"
|
|
],
|
|
"summary": "Update a watermark",
|
|
"operationId": "UpdateWatermark",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json-patch+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateWatermarkRequest"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateWatermarkRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateWatermarkRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateWatermarkRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WatermarkFullResponseModel"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WatermarkFullResponseModel"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WatermarkFullResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Watermarks"
|
|
],
|
|
"summary": "Delete a watermark",
|
|
"operationId": "DeleteWatermark",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Unprocessable Entity",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Request validation failed (model binding or FluentValidation).",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ValidationProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"ApiKey": [ ]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"ActorResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"role",
|
|
"thumb"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"thumb": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"AddItemsToCollectionRequest": {
|
|
"required": [
|
|
"movieIds",
|
|
"showIds",
|
|
"seasonIds",
|
|
"episodeIds",
|
|
"artistIds",
|
|
"musicVideoIds",
|
|
"otherVideoIds",
|
|
"songIds",
|
|
"imageIds",
|
|
"remoteStreamIds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"movieIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"showIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"seasonIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"episodeIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"artistIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"musicVideoIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"otherVideoIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"songIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"imageIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"remoteStreamIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"AddItemsToPlaylistRequest": {
|
|
"required": [
|
|
"movieIds",
|
|
"showIds",
|
|
"seasonIds",
|
|
"episodeIds",
|
|
"artistIds",
|
|
"musicVideoIds",
|
|
"otherVideoIds",
|
|
"songIds",
|
|
"imageIds",
|
|
"remoteStreamIds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"movieIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"showIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"seasonIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"episodeIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"artistIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"musicVideoIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"otherVideoIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"songIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"imageIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"remoteStreamIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"AddTraktListRequest": {
|
|
"required": [
|
|
"url"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ArtistDetailResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"disambiguation",
|
|
"biography",
|
|
"thumbnail",
|
|
"fanArt",
|
|
"genres",
|
|
"styles",
|
|
"moods",
|
|
"languages"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"disambiguation": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"biography": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"thumbnail": {
|
|
"type": "string"
|
|
},
|
|
"fanArt": {
|
|
"type": "string"
|
|
},
|
|
"genres": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"styles": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"moods": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"languages": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ArtworkContentTypeModel": {
|
|
"required": [
|
|
"path",
|
|
"contentType"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"contentType": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"isExternalUrl": {
|
|
"type": "boolean"
|
|
},
|
|
"hasContentType": {
|
|
"type": "boolean"
|
|
},
|
|
"urlWithContentType": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ArtworkUploadResponseModel": {
|
|
"required": [
|
|
"path",
|
|
"contentType"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"contentType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"BlockGroupResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"BlockItemRequest": {
|
|
"required": [
|
|
"collectionType",
|
|
"collectionId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"mediaItemId",
|
|
"searchTitle",
|
|
"searchQuery",
|
|
"playbackOrder",
|
|
"includeInProgramGuide",
|
|
"disableWatermarks",
|
|
"watermarkIds",
|
|
"graphicsElementIds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"searchTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"searchQuery": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playbackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
},
|
|
"includeInProgramGuide": {
|
|
"type": "boolean"
|
|
},
|
|
"disableWatermarks": {
|
|
"type": "boolean"
|
|
},
|
|
"watermarkIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"graphicsElementIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"BlockItemResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"index",
|
|
"collectionType",
|
|
"collectionId",
|
|
"collectionName",
|
|
"multiCollectionId",
|
|
"multiCollectionName",
|
|
"smartCollectionId",
|
|
"smartCollectionName",
|
|
"mediaItemId",
|
|
"mediaItemName",
|
|
"searchTitle",
|
|
"searchQuery",
|
|
"playbackOrder",
|
|
"includeInProgramGuide",
|
|
"disableWatermarks",
|
|
"watermarkIds",
|
|
"graphicsElementIds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"index": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"collectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"searchTitle": {
|
|
"type": "string"
|
|
},
|
|
"searchQuery": {
|
|
"type": "string"
|
|
},
|
|
"playbackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
},
|
|
"includeInProgramGuide": {
|
|
"type": "boolean"
|
|
},
|
|
"disableWatermarks": {
|
|
"type": "boolean"
|
|
},
|
|
"watermarkIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"graphicsElementIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"BlockPreviewItemResponseModel": {
|
|
"required": [
|
|
"title",
|
|
"start",
|
|
"finish",
|
|
"duration"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"start": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
},
|
|
"finish": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
},
|
|
"duration": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"BlockResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"groupId",
|
|
"groupName",
|
|
"name",
|
|
"minutes",
|
|
"stopScheduling"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"groupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"groupName": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"minutes": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"stopScheduling": {
|
|
"$ref": "#/components/schemas/BlockStopScheduling"
|
|
}
|
|
}
|
|
},
|
|
"BlockStopScheduling": {
|
|
"enum": [
|
|
"AfterDurationEnd",
|
|
"BeforeDurationEnd"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"BlockWithItemsResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"groupId",
|
|
"groupName",
|
|
"name",
|
|
"minutes",
|
|
"stopScheduling",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"groupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"groupName": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"minutes": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"stopScheduling": {
|
|
"$ref": "#/components/schemas/BlockStopScheduling"
|
|
},
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"BulkDeleteChannelsRequest": {
|
|
"required": [
|
|
"channelIds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"channelIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"BulkMoveChannelsToGroupRequest": {
|
|
"required": [
|
|
"channelIds",
|
|
"group"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"channelIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"group": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"BulkRenumberChannelRequest": {
|
|
"required": [
|
|
"id",
|
|
"number"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"number": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"BulkRenumberChannelsRequest": {
|
|
"required": [
|
|
"channels"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"channels": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/BulkRenumberChannelRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ChannelDetailResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"number",
|
|
"name",
|
|
"group",
|
|
"categories",
|
|
"ffmpegProfileId",
|
|
"slugSeconds",
|
|
"logo",
|
|
"streamSelectorMode",
|
|
"streamSelector",
|
|
"preferredAudioLanguageCode",
|
|
"preferredAudioTitle",
|
|
"playoutSource",
|
|
"playoutMode",
|
|
"mirrorSourceChannelId",
|
|
"playoutOffset",
|
|
"streamingMode",
|
|
"watermarkId",
|
|
"fallbackFillerId",
|
|
"playoutCount",
|
|
"preferredSubtitleLanguageCode",
|
|
"subtitleMode",
|
|
"musicVideoCreditsMode",
|
|
"musicVideoCreditsTemplate",
|
|
"songVideoMode",
|
|
"transcodeMode",
|
|
"idleBehavior",
|
|
"isEnabled",
|
|
"showInEpg"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"number": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"group": {
|
|
"type": "string"
|
|
},
|
|
"categories": {
|
|
"type": "string"
|
|
},
|
|
"ffmpegProfileId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"slugSeconds": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
},
|
|
"logo": {
|
|
"$ref": "#/components/schemas/ChannelLogoResponseModel"
|
|
},
|
|
"streamSelectorMode": {
|
|
"$ref": "#/components/schemas/ChannelStreamSelectorMode"
|
|
},
|
|
"streamSelector": {
|
|
"type": "string"
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": "string"
|
|
},
|
|
"preferredAudioTitle": {
|
|
"type": "string"
|
|
},
|
|
"playoutSource": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutSource"
|
|
},
|
|
"playoutMode": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutMode"
|
|
},
|
|
"mirrorSourceChannelId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playoutOffset": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"streamingMode": {
|
|
"$ref": "#/components/schemas/StreamingMode"
|
|
},
|
|
"watermarkId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playoutCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"preferredSubtitleLanguageCode": {
|
|
"type": "string"
|
|
},
|
|
"subtitleMode": {
|
|
"$ref": "#/components/schemas/ChannelSubtitleMode"
|
|
},
|
|
"musicVideoCreditsMode": {
|
|
"$ref": "#/components/schemas/ChannelMusicVideoCreditsMode"
|
|
},
|
|
"musicVideoCreditsTemplate": {
|
|
"type": "string"
|
|
},
|
|
"songVideoMode": {
|
|
"$ref": "#/components/schemas/ChannelSongVideoMode"
|
|
},
|
|
"transcodeMode": {
|
|
"$ref": "#/components/schemas/ChannelTranscodeMode"
|
|
},
|
|
"idleBehavior": {
|
|
"$ref": "#/components/schemas/ChannelIdleBehavior"
|
|
},
|
|
"isEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"showInEpg": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"ChannelGuideChannelResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"number",
|
|
"name",
|
|
"programmes"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"number": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"programmes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelGuideProgrammeResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ChannelGuideProgrammeResponseModel": {
|
|
"required": [
|
|
"start",
|
|
"stop",
|
|
"title",
|
|
"subTitle",
|
|
"category",
|
|
"fillerKind"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"start": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"stop": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"subTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"category": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"fillerKind": {
|
|
"$ref": "#/components/schemas/FillerKind"
|
|
}
|
|
}
|
|
},
|
|
"ChannelGuideResponseModel": {
|
|
"required": [
|
|
"start",
|
|
"end",
|
|
"channels"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"start": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"end": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"channels": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelGuideChannelResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ChannelIdleBehavior": {
|
|
"enum": [
|
|
"StopOnDisconnect",
|
|
"KeepRunning"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ChannelLogoResponseModel": {
|
|
"required": [
|
|
"path",
|
|
"contentType"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"contentType": {
|
|
"type": "string"
|
|
},
|
|
"isExternalUrl": {
|
|
"type": "boolean"
|
|
},
|
|
"hasContentType": {
|
|
"type": "boolean"
|
|
},
|
|
"urlWithContentType": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ChannelMusicVideoCreditsMode": {
|
|
"enum": [
|
|
"None",
|
|
"GenerateSubtitles"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ChannelNowPlayingResponseModel": {
|
|
"required": [
|
|
"title",
|
|
"startUtc",
|
|
"finishUtc"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"startUtc": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"finishUtc": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"ChannelPlaybackItemResponseModel": {
|
|
"required": [
|
|
"playoutItemId",
|
|
"mediaItemId",
|
|
"start",
|
|
"finish",
|
|
"inPointTicks",
|
|
"currentOffsetTicks",
|
|
"outPointTicks",
|
|
"fillerKind",
|
|
"source"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"playoutItemId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"start": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"finish": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"inPointTicks": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"currentOffsetTicks": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"outPointTicks": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"fillerKind": {
|
|
"$ref": "#/components/schemas/FillerKind"
|
|
},
|
|
"source": {
|
|
"$ref": "#/components/schemas/ChannelPlaybackSourceReferenceResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"ChannelPlaybackSourceKind": {
|
|
"enum": [
|
|
"LocalFile",
|
|
"JellyfinItem",
|
|
"PlexItem",
|
|
"EmbyItem",
|
|
"RemoteUrl",
|
|
"Unsupported"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ChannelPlaybackSourceReferenceResponseModel": {
|
|
"required": [
|
|
"kind",
|
|
"itemId",
|
|
"path",
|
|
"isLive"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"kind": {
|
|
"$ref": "#/components/schemas/ChannelPlaybackSourceKind"
|
|
},
|
|
"itemId": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"path": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"isLive": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"ChannelPlaybackSourceResponseModel": {
|
|
"required": [
|
|
"channelId",
|
|
"sourceChannelId",
|
|
"resolvedAt",
|
|
"sourceAt",
|
|
"nextTransitionAt",
|
|
"active"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"channelId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"sourceChannelId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"resolvedAt": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"sourceAt": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"nextTransitionAt": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
],
|
|
"format": "date-time"
|
|
},
|
|
"active": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelPlaybackItemResponseModel"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ChannelPlayoutMode": {
|
|
"enum": [
|
|
"Continuous",
|
|
"OnDemand"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ChannelPlayoutSource": {
|
|
"enum": [
|
|
"Generated",
|
|
"Mirror"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ChannelResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"number",
|
|
"sortNumber",
|
|
"name",
|
|
"group",
|
|
"categories",
|
|
"ffmpegProfile",
|
|
"language",
|
|
"streamingMode",
|
|
"isEnabled",
|
|
"showInEpg"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"number": {
|
|
"type": "string"
|
|
},
|
|
"sortNumber": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"group": {
|
|
"type": "string"
|
|
},
|
|
"categories": {
|
|
"type": "string"
|
|
},
|
|
"ffmpegProfile": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"streamingMode": {
|
|
"type": "string"
|
|
},
|
|
"isEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"showInEpg": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"ChannelSongVideoMode": {
|
|
"enum": [
|
|
"Default",
|
|
"WithProgress"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ChannelStateResponseModel": {
|
|
"required": [
|
|
"channelId",
|
|
"channelNumber",
|
|
"onAir",
|
|
"nowPlaying"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"channelId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"channelNumber": {
|
|
"type": "string"
|
|
},
|
|
"onAir": {
|
|
"type": "boolean"
|
|
},
|
|
"nowPlaying": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelNowPlayingResponseModel"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ChannelStreamSelectorMode": {
|
|
"enum": [
|
|
"Default",
|
|
"Custom",
|
|
"Troubleshooting"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ChannelSubtitleMode": {
|
|
"enum": [
|
|
"None",
|
|
"Forced",
|
|
"Default",
|
|
"Any"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ChannelTemplateResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"description",
|
|
"isSystem",
|
|
"isDefault",
|
|
"ffmpegProfileId",
|
|
"watermarkId",
|
|
"fallbackFillerId",
|
|
"preRollFillerId",
|
|
"midRollFillerId",
|
|
"postRollFillerId",
|
|
"streamSelectorMode",
|
|
"streamSelector",
|
|
"preferredAudioLanguageCode",
|
|
"preferredAudioTitle",
|
|
"playoutSource",
|
|
"playoutMode",
|
|
"streamingMode",
|
|
"preferredSubtitleLanguageCode",
|
|
"subtitleMode",
|
|
"musicVideoCreditsMode",
|
|
"musicVideoCreditsTemplate",
|
|
"songVideoMode",
|
|
"transcodeMode",
|
|
"idleBehavior",
|
|
"shuffleScheduleItems",
|
|
"randomStartPoint",
|
|
"fixedStartTimeBehavior"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"isSystem": {
|
|
"type": "boolean"
|
|
},
|
|
"isDefault": {
|
|
"type": "boolean"
|
|
},
|
|
"ffmpegProfileId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"watermarkId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"preRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"midRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"postRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"streamSelectorMode": {
|
|
"$ref": "#/components/schemas/ChannelStreamSelectorMode"
|
|
},
|
|
"streamSelector": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playoutSource": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutSource"
|
|
},
|
|
"playoutMode": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutMode"
|
|
},
|
|
"streamingMode": {
|
|
"$ref": "#/components/schemas/StreamingMode"
|
|
},
|
|
"preferredSubtitleLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"subtitleMode": {
|
|
"$ref": "#/components/schemas/ChannelSubtitleMode"
|
|
},
|
|
"musicVideoCreditsMode": {
|
|
"$ref": "#/components/schemas/ChannelMusicVideoCreditsMode"
|
|
},
|
|
"musicVideoCreditsTemplate": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"songVideoMode": {
|
|
"$ref": "#/components/schemas/ChannelSongVideoMode"
|
|
},
|
|
"transcodeMode": {
|
|
"$ref": "#/components/schemas/ChannelTranscodeMode"
|
|
},
|
|
"idleBehavior": {
|
|
"$ref": "#/components/schemas/ChannelIdleBehavior"
|
|
},
|
|
"shuffleScheduleItems": {
|
|
"type": "boolean"
|
|
},
|
|
"randomStartPoint": {
|
|
"type": "boolean"
|
|
},
|
|
"fixedStartTimeBehavior": {
|
|
"$ref": "#/components/schemas/FixedStartTimeBehavior"
|
|
}
|
|
}
|
|
},
|
|
"ChannelTranscodeMode": {
|
|
"enum": [
|
|
"OnDemand"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ChannelWatermarkImageSource": {
|
|
"enum": [
|
|
"Custom",
|
|
"ChannelLogo",
|
|
"Resource"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ChannelWatermarkMode": {
|
|
"enum": [
|
|
"None",
|
|
"Permanent",
|
|
"Intermittent",
|
|
"OpacityExpression"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"CollectionsScanStatusResponseModel": {
|
|
"required": [
|
|
"family"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"family": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"CollectionType": {
|
|
"enum": [
|
|
"Collection",
|
|
"TelevisionShow",
|
|
"TelevisionSeason",
|
|
"Artist",
|
|
"MultiCollection",
|
|
"SmartCollection",
|
|
"Playlist",
|
|
"RerunFirstRun",
|
|
"RerunRerun",
|
|
"SearchQuery",
|
|
"Movie",
|
|
"Episode",
|
|
"MusicVideo",
|
|
"OtherVideo",
|
|
"Song",
|
|
"Image",
|
|
"RemoteStream",
|
|
"FakeCollection",
|
|
"FakePlaylistItem"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"CombinedVersion": {
|
|
"required": [
|
|
"apiVersion",
|
|
"appVersion"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"apiVersion": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"appVersion": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CopyBlockRequest": {
|
|
"required": [
|
|
"blockGroupId",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"blockGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CopyTemplateRequest": {
|
|
"required": [
|
|
"templateGroupId",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"templateGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateBlockGroupRequest": {
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateBlockRequest": {
|
|
"required": [
|
|
"blockGroupId",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"blockGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateChannelFromLineupAdvancedOptionsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"playbackOrder": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
}
|
|
]
|
|
},
|
|
"ffmpegProfileId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"watermarkId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"preRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"midRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"postRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"streamSelectorMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelStreamSelectorMode"
|
|
}
|
|
]
|
|
},
|
|
"streamSelector": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playoutSource": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelPlayoutSource"
|
|
}
|
|
]
|
|
},
|
|
"playoutMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelPlayoutMode"
|
|
}
|
|
]
|
|
},
|
|
"streamingMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/StreamingMode"
|
|
}
|
|
]
|
|
},
|
|
"preferredSubtitleLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"subtitleMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelSubtitleMode"
|
|
}
|
|
]
|
|
},
|
|
"musicVideoCreditsMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelMusicVideoCreditsMode"
|
|
}
|
|
]
|
|
},
|
|
"musicVideoCreditsTemplate": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"songVideoMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelSongVideoMode"
|
|
}
|
|
]
|
|
},
|
|
"transcodeMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelTranscodeMode"
|
|
}
|
|
]
|
|
},
|
|
"idleBehavior": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelIdleBehavior"
|
|
}
|
|
]
|
|
},
|
|
"shuffleScheduleItems": {
|
|
"type": [
|
|
"null",
|
|
"boolean"
|
|
]
|
|
},
|
|
"randomStartPoint": {
|
|
"type": [
|
|
"null",
|
|
"boolean"
|
|
]
|
|
},
|
|
"fixedStartTimeBehavior": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/FixedStartTimeBehavior"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateChannelFromLineupItemRequest": {
|
|
"required": [
|
|
"mediaType",
|
|
"collectionType",
|
|
"collectionId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"rerunCollectionId",
|
|
"mediaItemId",
|
|
"playlistId"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"mediaType": {
|
|
"$ref": "#/components/schemas/LibraryBrowseMediaType"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"rerunCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playlistId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"CreateChannelFromLineupRequest": {
|
|
"required": [
|
|
"name",
|
|
"number",
|
|
"group",
|
|
"categories",
|
|
"logo",
|
|
"isEnabled",
|
|
"showInEpg",
|
|
"templateId",
|
|
"advanced",
|
|
"lineup"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"number": {
|
|
"type": "string"
|
|
},
|
|
"group": {
|
|
"type": "string"
|
|
},
|
|
"categories": {
|
|
"type": "string"
|
|
},
|
|
"logo": {
|
|
"$ref": "#/components/schemas/ArtworkContentTypeModel"
|
|
},
|
|
"isEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"showInEpg": {
|
|
"type": "boolean"
|
|
},
|
|
"templateId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"advanced": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/CreateChannelFromLineupAdvancedOptionsRequest"
|
|
}
|
|
]
|
|
},
|
|
"lineup": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CreateChannelFromLineupItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"CreateChannelFromLineupResponseModel": {
|
|
"required": [
|
|
"channelId",
|
|
"playlistId",
|
|
"programScheduleId",
|
|
"playoutId"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"channelId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"playlistId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"programScheduleId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"playoutId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"CreateChannelRequest": {
|
|
"required": [
|
|
"name",
|
|
"number",
|
|
"group",
|
|
"categories",
|
|
"ffmpegProfileId",
|
|
"slugSeconds",
|
|
"logo",
|
|
"streamSelectorMode",
|
|
"streamSelector",
|
|
"preferredAudioLanguageCode",
|
|
"preferredAudioTitle",
|
|
"playoutSource",
|
|
"playoutMode",
|
|
"mirrorSourceChannelId",
|
|
"playoutOffset",
|
|
"streamingMode",
|
|
"watermarkId",
|
|
"fallbackFillerId",
|
|
"preferredSubtitleLanguageCode",
|
|
"subtitleMode",
|
|
"musicVideoCreditsMode",
|
|
"musicVideoCreditsTemplate",
|
|
"songVideoMode",
|
|
"transcodeMode",
|
|
"idleBehavior",
|
|
"isEnabled",
|
|
"showInEpg"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"number": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"group": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"categories": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"ffmpegProfileId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"slugSeconds": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
},
|
|
"logo": {
|
|
"$ref": "#/components/schemas/ArtworkContentTypeModel"
|
|
},
|
|
"streamSelectorMode": {
|
|
"$ref": "#/components/schemas/ChannelStreamSelectorMode"
|
|
},
|
|
"streamSelector": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playoutSource": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutSource"
|
|
},
|
|
"playoutMode": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutMode"
|
|
},
|
|
"mirrorSourceChannelId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playoutOffset": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"streamingMode": {
|
|
"$ref": "#/components/schemas/StreamingMode"
|
|
},
|
|
"watermarkId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"preferredSubtitleLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"subtitleMode": {
|
|
"$ref": "#/components/schemas/ChannelSubtitleMode"
|
|
},
|
|
"musicVideoCreditsMode": {
|
|
"$ref": "#/components/schemas/ChannelMusicVideoCreditsMode"
|
|
},
|
|
"musicVideoCreditsTemplate": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"songVideoMode": {
|
|
"$ref": "#/components/schemas/ChannelSongVideoMode"
|
|
},
|
|
"transcodeMode": {
|
|
"$ref": "#/components/schemas/ChannelTranscodeMode"
|
|
},
|
|
"idleBehavior": {
|
|
"$ref": "#/components/schemas/ChannelIdleBehavior"
|
|
},
|
|
"isEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"showInEpg": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"CreateChannelTemplateRequest": {
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"ffmpegProfileId",
|
|
"watermarkId",
|
|
"fallbackFillerId",
|
|
"preRollFillerId",
|
|
"midRollFillerId",
|
|
"postRollFillerId",
|
|
"streamSelectorMode",
|
|
"streamSelector",
|
|
"preferredAudioLanguageCode",
|
|
"preferredAudioTitle",
|
|
"playoutSource",
|
|
"playoutMode",
|
|
"streamingMode",
|
|
"preferredSubtitleLanguageCode",
|
|
"subtitleMode",
|
|
"musicVideoCreditsMode",
|
|
"musicVideoCreditsTemplate",
|
|
"songVideoMode",
|
|
"transcodeMode",
|
|
"idleBehavior",
|
|
"shuffleScheduleItems",
|
|
"randomStartPoint",
|
|
"fixedStartTimeBehavior"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"ffmpegProfileId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"watermarkId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"preRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"midRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"postRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"streamSelectorMode": {
|
|
"$ref": "#/components/schemas/ChannelStreamSelectorMode"
|
|
},
|
|
"streamSelector": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playoutSource": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutSource"
|
|
},
|
|
"playoutMode": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutMode"
|
|
},
|
|
"streamingMode": {
|
|
"$ref": "#/components/schemas/StreamingMode"
|
|
},
|
|
"preferredSubtitleLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"subtitleMode": {
|
|
"$ref": "#/components/schemas/ChannelSubtitleMode"
|
|
},
|
|
"musicVideoCreditsMode": {
|
|
"$ref": "#/components/schemas/ChannelMusicVideoCreditsMode"
|
|
},
|
|
"musicVideoCreditsTemplate": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"songVideoMode": {
|
|
"$ref": "#/components/schemas/ChannelSongVideoMode"
|
|
},
|
|
"transcodeMode": {
|
|
"$ref": "#/components/schemas/ChannelTranscodeMode"
|
|
},
|
|
"idleBehavior": {
|
|
"$ref": "#/components/schemas/ChannelIdleBehavior"
|
|
},
|
|
"shuffleScheduleItems": {
|
|
"type": "boolean"
|
|
},
|
|
"randomStartPoint": {
|
|
"type": "boolean"
|
|
},
|
|
"fixedStartTimeBehavior": {
|
|
"$ref": "#/components/schemas/FixedStartTimeBehavior"
|
|
}
|
|
}
|
|
},
|
|
"CreateCollectionRequest": {
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateDecoGroupRequest": {
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateDecoRequest": {
|
|
"required": [
|
|
"decoGroupId",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"decoGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateDecoTemplateGroupRequest": {
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateDecoTemplateRequest": {
|
|
"required": [
|
|
"decoTemplateGroupId",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"decoTemplateGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateFFmpegProfileRequest": {
|
|
"required": [
|
|
"name",
|
|
"threadCount",
|
|
"normalizeAudio",
|
|
"normalizeVideo",
|
|
"hardwareAcceleration",
|
|
"vaapiDisplay",
|
|
"vaapiDriver",
|
|
"vaapiDevice",
|
|
"qsvExtraHardwareFrames",
|
|
"resolutionId",
|
|
"scalingBehavior",
|
|
"padMode",
|
|
"videoFormat",
|
|
"videoProfile",
|
|
"videoPreset",
|
|
"allowBFrames",
|
|
"bitDepth",
|
|
"videoBitrate",
|
|
"videoBufferSize",
|
|
"tonemapAlgorithm",
|
|
"audioFormat",
|
|
"audioBitrate",
|
|
"audioBufferSize",
|
|
"normalizeLoudnessMode",
|
|
"targetLoudness",
|
|
"audioChannels",
|
|
"audioSampleRate",
|
|
"normalizeFramerate",
|
|
"normalizeColors",
|
|
"deinterlaceVideo"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"threadCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"normalizeAudio": {
|
|
"type": "boolean"
|
|
},
|
|
"normalizeVideo": {
|
|
"type": "boolean"
|
|
},
|
|
"hardwareAcceleration": {
|
|
"$ref": "#/components/schemas/HardwareAccelerationKind"
|
|
},
|
|
"vaapiDisplay": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"vaapiDriver": {
|
|
"$ref": "#/components/schemas/VaapiDriver"
|
|
},
|
|
"vaapiDevice": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"qsvExtraHardwareFrames": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"resolutionId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"scalingBehavior": {
|
|
"$ref": "#/components/schemas/ScalingBehavior"
|
|
},
|
|
"padMode": {
|
|
"$ref": "#/components/schemas/FilterMode"
|
|
},
|
|
"videoFormat": {
|
|
"$ref": "#/components/schemas/FFmpegProfileVideoFormat"
|
|
},
|
|
"videoProfile": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"videoPreset": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"allowBFrames": {
|
|
"type": "boolean"
|
|
},
|
|
"bitDepth": {
|
|
"$ref": "#/components/schemas/FFmpegProfileBitDepth"
|
|
},
|
|
"videoBitrate": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"videoBufferSize": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"tonemapAlgorithm": {
|
|
"$ref": "#/components/schemas/FFmpegProfileTonemapAlgorithm"
|
|
},
|
|
"audioFormat": {
|
|
"$ref": "#/components/schemas/FFmpegProfileAudioFormat"
|
|
},
|
|
"audioBitrate": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"audioBufferSize": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"normalizeLoudnessMode": {
|
|
"$ref": "#/components/schemas/NormalizeLoudnessMode"
|
|
},
|
|
"targetLoudness": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
},
|
|
"audioChannels": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"audioSampleRate": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"normalizeFramerate": {
|
|
"type": "boolean"
|
|
},
|
|
"normalizeColors": {
|
|
"type": "boolean"
|
|
},
|
|
"deinterlaceVideo": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"CreateFillerPresetRequest": {
|
|
"required": [
|
|
"name",
|
|
"fillerKind",
|
|
"fillerMode",
|
|
"duration",
|
|
"count",
|
|
"padToNearestMinute",
|
|
"allowWatermarks",
|
|
"collectionType",
|
|
"collectionId",
|
|
"mediaItemId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"playlistId",
|
|
"expression",
|
|
"useChaptersAsMediaItems"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"fillerKind": {
|
|
"$ref": "#/components/schemas/FillerKind"
|
|
},
|
|
"fillerMode": {
|
|
"$ref": "#/components/schemas/FillerMode"
|
|
},
|
|
"duration": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"count": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"padToNearestMinute": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"allowWatermarks": {
|
|
"type": "boolean"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playlistId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"expression": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"useChaptersAsMediaItems": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"CreateLocalLibraryRequest": {
|
|
"required": [
|
|
"name",
|
|
"mediaKind",
|
|
"paths"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"mediaKind": {
|
|
"$ref": "#/components/schemas/LibraryMediaKind"
|
|
},
|
|
"paths": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"CreateMultiCollectionRequest": {
|
|
"required": [
|
|
"name",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"items": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/MultiCollectionItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"CreatePlaylistGroupRequest": {
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreatePlaylistRequest": {
|
|
"required": [
|
|
"playlistGroupId",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"playlistGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreatePlayoutRequest": {
|
|
"required": [
|
|
"channelId",
|
|
"scheduleKind",
|
|
"programScheduleId",
|
|
"scheduleFile"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"channelId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"scheduleKind": {
|
|
"$ref": "#/components/schemas/PlayoutScheduleKind"
|
|
},
|
|
"programScheduleId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"scheduleFile": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateRerunCollectionRequest": {
|
|
"required": [
|
|
"name",
|
|
"collectionType",
|
|
"selectedId",
|
|
"firstRunPlaybackOrder",
|
|
"rerunPlaybackOrder"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"selectedId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"firstRunPlaybackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
},
|
|
"rerunPlaybackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
}
|
|
}
|
|
},
|
|
"CreateResolutionRequest": {
|
|
"required": [
|
|
"width",
|
|
"height"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"width": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"height": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"CreateScheduleRequest": {
|
|
"required": [
|
|
"name",
|
|
"keepMultiPartEpisodesTogether",
|
|
"treatCollectionsAsShows",
|
|
"shuffleScheduleItems",
|
|
"randomStartPoint",
|
|
"fixedStartTimeBehavior"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"keepMultiPartEpisodesTogether": {
|
|
"type": "boolean"
|
|
},
|
|
"treatCollectionsAsShows": {
|
|
"type": "boolean"
|
|
},
|
|
"shuffleScheduleItems": {
|
|
"type": "boolean"
|
|
},
|
|
"randomStartPoint": {
|
|
"type": "boolean"
|
|
},
|
|
"fixedStartTimeBehavior": {
|
|
"$ref": "#/components/schemas/FixedStartTimeBehavior"
|
|
}
|
|
}
|
|
},
|
|
"CreateSmartCollectionRequest": {
|
|
"required": [
|
|
"name",
|
|
"query"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"query": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateTemplateGroupRequest": {
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateTemplateRequest": {
|
|
"required": [
|
|
"templateGroupId",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"templateGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateWatermarkRequest": {
|
|
"required": [
|
|
"name",
|
|
"mode",
|
|
"imageSource",
|
|
"image",
|
|
"imageContentType",
|
|
"location",
|
|
"size",
|
|
"width",
|
|
"horizontalMargin",
|
|
"verticalMargin",
|
|
"frequencyMinutes",
|
|
"durationSeconds",
|
|
"opacity",
|
|
"opacityExpression",
|
|
"zIndex",
|
|
"placeWithinSourceContent"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/ChannelWatermarkMode"
|
|
},
|
|
"imageSource": {
|
|
"$ref": "#/components/schemas/ChannelWatermarkImageSource"
|
|
},
|
|
"image": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"imageContentType": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"location": {
|
|
"$ref": "#/components/schemas/WatermarkLocation"
|
|
},
|
|
"size": {
|
|
"$ref": "#/components/schemas/WatermarkSize"
|
|
},
|
|
"width": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"horizontalMargin": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"verticalMargin": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"frequencyMinutes": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"durationSeconds": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"opacity": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"opacityExpression": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"zIndex": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"placeWithinSourceContent": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"DayOfWeek": {
|
|
"enum": [
|
|
"Sunday",
|
|
"Monday",
|
|
"Tuesday",
|
|
"Wednesday",
|
|
"Thursday",
|
|
"Friday",
|
|
"Saturday"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"DecoBreakContentRequest": {
|
|
"required": [
|
|
"id",
|
|
"collectionType",
|
|
"collectionId",
|
|
"mediaItemId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"playlistId",
|
|
"placement"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playlistId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"placement": {
|
|
"$ref": "#/components/schemas/DecoBreakPlacement"
|
|
}
|
|
}
|
|
},
|
|
"DecoBreakContentResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"collectionType",
|
|
"collectionId",
|
|
"mediaItemId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"playlistId",
|
|
"playlistGroupId",
|
|
"selectionName",
|
|
"placement"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playlistId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playlistGroupId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"selectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"placement": {
|
|
"$ref": "#/components/schemas/DecoBreakPlacement"
|
|
}
|
|
}
|
|
},
|
|
"DecoBreakPlacement": {
|
|
"enum": [
|
|
"BlockStart",
|
|
"BlockFinish",
|
|
"BetweenBlockItems",
|
|
"ChapterMarkers"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"DecoGroupResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"decoCount"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"decoCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"DecoListItemResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"decoGroupId",
|
|
"decoGroupName",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"decoGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"decoGroupName": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"DecoMode": {
|
|
"enum": [
|
|
"Inherit",
|
|
"Disable",
|
|
"Override",
|
|
"Merge"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"DecoResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"decoGroupId",
|
|
"decoGroupName",
|
|
"name",
|
|
"watermarkMode",
|
|
"watermarkIds",
|
|
"useWatermarkDuringFiller",
|
|
"graphicsElementsMode",
|
|
"graphicsElementIds",
|
|
"useGraphicsElementsDuringFiller",
|
|
"breakContentMode",
|
|
"breakContent",
|
|
"defaultFillerMode",
|
|
"defaultFillerCollectionType",
|
|
"defaultFillerCollectionId",
|
|
"defaultFillerMediaItemId",
|
|
"defaultFillerMultiCollectionId",
|
|
"defaultFillerSmartCollectionId",
|
|
"defaultFillerSelectionName",
|
|
"defaultFillerTrimToFit",
|
|
"deadAirFallbackMode",
|
|
"deadAirFallbackCollectionType",
|
|
"deadAirFallbackCollectionId",
|
|
"deadAirFallbackMediaItemId",
|
|
"deadAirFallbackMultiCollectionId",
|
|
"deadAirFallbackSmartCollectionId",
|
|
"deadAirFallbackSelectionName"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"decoGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"decoGroupName": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"watermarkMode": {
|
|
"$ref": "#/components/schemas/DecoMode"
|
|
},
|
|
"watermarkIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"useWatermarkDuringFiller": {
|
|
"type": "boolean"
|
|
},
|
|
"graphicsElementsMode": {
|
|
"$ref": "#/components/schemas/DecoMode"
|
|
},
|
|
"graphicsElementIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"useGraphicsElementsDuringFiller": {
|
|
"type": "boolean"
|
|
},
|
|
"breakContentMode": {
|
|
"$ref": "#/components/schemas/DecoMode"
|
|
},
|
|
"breakContent": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoBreakContentResponseModel"
|
|
}
|
|
},
|
|
"defaultFillerMode": {
|
|
"$ref": "#/components/schemas/DecoMode"
|
|
},
|
|
"defaultFillerCollectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"defaultFillerCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"defaultFillerMediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"defaultFillerMultiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"defaultFillerSmartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"defaultFillerSelectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"defaultFillerTrimToFit": {
|
|
"type": "boolean"
|
|
},
|
|
"deadAirFallbackMode": {
|
|
"$ref": "#/components/schemas/DecoMode"
|
|
},
|
|
"deadAirFallbackCollectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"deadAirFallbackCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"deadAirFallbackMediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"deadAirFallbackMultiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"deadAirFallbackSmartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"deadAirFallbackSelectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"DecoTemplateGroupResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"decoTemplateCount"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"decoTemplateCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"DecoTemplateItemRequest": {
|
|
"required": [
|
|
"decoId",
|
|
"startTime",
|
|
"endTime"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"decoId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
},
|
|
"endTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"DecoTemplateItemResponseModel": {
|
|
"required": [
|
|
"decoId",
|
|
"decoName",
|
|
"startTime",
|
|
"endTime"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"decoId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"decoName": {
|
|
"type": "string"
|
|
},
|
|
"startTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
},
|
|
"endTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"DecoTemplateResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"decoTemplateGroupId",
|
|
"groupName",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"decoTemplateGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"groupName": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"DecoTemplateWithItemsResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"decoTemplateGroupId",
|
|
"groupName",
|
|
"name",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"decoTemplateGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"groupName": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"DeleteMediaItemsRequest": {
|
|
"required": [
|
|
"ids"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"ids": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"FFmpegFullProfileResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"threadCount",
|
|
"normalizeAudio",
|
|
"normalizeVideo",
|
|
"hardwareAcceleration",
|
|
"vaapiDisplay",
|
|
"vaapiDriver",
|
|
"vaapiDevice",
|
|
"qsvExtraHardwareFrames",
|
|
"resolutionId",
|
|
"resolution",
|
|
"scalingBehavior",
|
|
"padMode",
|
|
"videoFormat",
|
|
"videoProfile",
|
|
"videoPreset",
|
|
"allowBFrames",
|
|
"bitDepth",
|
|
"videoBitrate",
|
|
"videoBufferSize",
|
|
"tonemapAlgorithm",
|
|
"audioFormat",
|
|
"audioBitrate",
|
|
"audioBufferSize",
|
|
"normalizeLoudnessMode",
|
|
"targetLoudness",
|
|
"audioChannels",
|
|
"audioSampleRate",
|
|
"normalizeFramerate",
|
|
"normalizeColors",
|
|
"deinterlaceVideo"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"threadCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"normalizeAudio": {
|
|
"type": "boolean"
|
|
},
|
|
"normalizeVideo": {
|
|
"type": "boolean"
|
|
},
|
|
"hardwareAcceleration": {
|
|
"$ref": "#/components/schemas/HardwareAccelerationKind"
|
|
},
|
|
"vaapiDisplay": {
|
|
"type": "string"
|
|
},
|
|
"vaapiDriver": {
|
|
"$ref": "#/components/schemas/VaapiDriver"
|
|
},
|
|
"vaapiDevice": {
|
|
"type": "string"
|
|
},
|
|
"qsvExtraHardwareFrames": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"resolutionId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"resolution": {
|
|
"type": "string"
|
|
},
|
|
"scalingBehavior": {
|
|
"$ref": "#/components/schemas/ScalingBehavior"
|
|
},
|
|
"padMode": {
|
|
"$ref": "#/components/schemas/FilterMode"
|
|
},
|
|
"videoFormat": {
|
|
"$ref": "#/components/schemas/FFmpegProfileVideoFormat"
|
|
},
|
|
"videoProfile": {
|
|
"type": "string"
|
|
},
|
|
"videoPreset": {
|
|
"type": "string"
|
|
},
|
|
"allowBFrames": {
|
|
"type": "boolean"
|
|
},
|
|
"bitDepth": {
|
|
"$ref": "#/components/schemas/FFmpegProfileBitDepth"
|
|
},
|
|
"videoBitrate": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"videoBufferSize": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"tonemapAlgorithm": {
|
|
"$ref": "#/components/schemas/FFmpegProfileTonemapAlgorithm"
|
|
},
|
|
"audioFormat": {
|
|
"$ref": "#/components/schemas/FFmpegProfileAudioFormat"
|
|
},
|
|
"audioBitrate": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"audioBufferSize": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"normalizeLoudnessMode": {
|
|
"$ref": "#/components/schemas/NormalizeLoudnessMode"
|
|
},
|
|
"targetLoudness": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
},
|
|
"audioChannels": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"audioSampleRate": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"normalizeFramerate": {
|
|
"type": "boolean"
|
|
},
|
|
"normalizeColors": {
|
|
"type": "boolean"
|
|
},
|
|
"deinterlaceVideo": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"FFmpegProfileAudioFormat": {
|
|
"enum": [
|
|
"None",
|
|
"Aac",
|
|
"Ac3",
|
|
"AacLatm",
|
|
"Copy"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"FFmpegProfileBitDepth": {
|
|
"enum": [
|
|
"EightBit",
|
|
"TenBit"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"FFmpegProfileTonemapAlgorithm": {
|
|
"enum": [
|
|
"Linear",
|
|
"Clip",
|
|
"Gamma",
|
|
"Reinhard",
|
|
"Mobius",
|
|
"Hable"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"FFmpegProfileVideoFormat": {
|
|
"enum": [
|
|
"None",
|
|
"H264",
|
|
"Hevc",
|
|
"Mpeg2Video",
|
|
"Av1",
|
|
"Copy"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"FFmpegSettingsResponseModel": {
|
|
"required": [
|
|
"fFmpegPath",
|
|
"fFprobePath",
|
|
"defaultFFmpegProfileId",
|
|
"preferredAudioLanguageCode",
|
|
"useEmbeddedSubtitles",
|
|
"extractEmbeddedSubtitles",
|
|
"probeForInterlacedFrames",
|
|
"saveReports",
|
|
"globalWatermarkId",
|
|
"globalFallbackFillerId",
|
|
"hlsSegmenterIdleTimeout",
|
|
"workAheadSegmenterLimit",
|
|
"initialSegmentCount",
|
|
"hlsDirectOutputFormat",
|
|
"defaultMpegTsScript"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"fFmpegPath": {
|
|
"type": "string"
|
|
},
|
|
"fFprobePath": {
|
|
"type": "string"
|
|
},
|
|
"defaultFFmpegProfileId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": "string"
|
|
},
|
|
"useEmbeddedSubtitles": {
|
|
"type": "boolean"
|
|
},
|
|
"extractEmbeddedSubtitles": {
|
|
"type": "boolean"
|
|
},
|
|
"probeForInterlacedFrames": {
|
|
"type": "boolean"
|
|
},
|
|
"saveReports": {
|
|
"type": "boolean"
|
|
},
|
|
"globalWatermarkId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"globalFallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"hlsSegmenterIdleTimeout": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"workAheadSegmenterLimit": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"initialSegmentCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"hlsDirectOutputFormat": {
|
|
"$ref": "#/components/schemas/OutputFormatKind"
|
|
},
|
|
"defaultMpegTsScript": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"FillerKind": {
|
|
"enum": [
|
|
"None",
|
|
"PreRoll",
|
|
"MidRoll",
|
|
"PostRoll",
|
|
"Tail",
|
|
"Fallback",
|
|
"GuideMode",
|
|
"DecoDefault"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"FillerMode": {
|
|
"enum": [
|
|
"None",
|
|
"Duration",
|
|
"Count",
|
|
"Pad",
|
|
"RandomCount"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"FillerPresetFullResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"fillerKind",
|
|
"fillerMode",
|
|
"duration",
|
|
"count",
|
|
"padToNearestMinute",
|
|
"allowWatermarks",
|
|
"collectionType",
|
|
"collectionId",
|
|
"mediaItemId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"playlistId",
|
|
"expression",
|
|
"useChaptersAsMediaItems"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"fillerKind": {
|
|
"$ref": "#/components/schemas/FillerKind"
|
|
},
|
|
"fillerMode": {
|
|
"$ref": "#/components/schemas/FillerMode"
|
|
},
|
|
"duration": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"count": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"padToNearestMinute": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"allowWatermarks": {
|
|
"type": "boolean"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playlistId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"expression": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"useChaptersAsMediaItems": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"FillerPresetResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"fillerKind"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"fillerKind": {
|
|
"$ref": "#/components/schemas/FillerKind"
|
|
}
|
|
}
|
|
},
|
|
"FillWithGroupMode": {
|
|
"enum": [
|
|
"None",
|
|
"FillWithOrderedGroups",
|
|
"FillWithShuffledGroups"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"FilterMode": {
|
|
"enum": [
|
|
"HardwareIfPossible",
|
|
"Software"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"FixedStartTimeBehavior": {
|
|
"enum": [
|
|
"Strict",
|
|
"Flexible"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"GraphicsElementResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"GuideMode": {
|
|
"enum": [
|
|
"Normal",
|
|
"Filler"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"HardwareAccelerationKind": {
|
|
"enum": [
|
|
"None",
|
|
"Qsv",
|
|
"Nvenc",
|
|
"Vaapi",
|
|
"VideoToolbox",
|
|
"Amf",
|
|
"V4l2m2m",
|
|
"Rkmpp"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"HdhrSettingsResponseModel": {
|
|
"required": [
|
|
"tunerCount",
|
|
"uuid"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"tunerCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"uuid": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
},
|
|
"HealthCheckResponseModel": {
|
|
"required": [
|
|
"title",
|
|
"status",
|
|
"detail",
|
|
"link"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"type": "string"
|
|
},
|
|
"link": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"HlsSessionModel": {
|
|
"required": [
|
|
"channelNumber",
|
|
"state",
|
|
"transcodedUntil",
|
|
"lastAccess"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"channelNumber": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"state": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"transcodedUntil": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"lastAccess": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"IFormFile": {
|
|
"type": "string",
|
|
"format": "binary"
|
|
},
|
|
"ImageFolderResponseModel": {
|
|
"required": [
|
|
"libraryFolderId",
|
|
"name",
|
|
"fullPath",
|
|
"subfolderCount",
|
|
"imageCount",
|
|
"durationSeconds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"libraryFolderId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"fullPath": {
|
|
"type": "string"
|
|
},
|
|
"subfolderCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"imageCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"durationSeconds": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
}
|
|
}
|
|
},
|
|
"LanguageCodeResponseModel": {
|
|
"required": [
|
|
"code",
|
|
"englishName"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"englishName": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"LibraryBrowseItemResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"mediaType",
|
|
"title",
|
|
"libraryId",
|
|
"libraryName",
|
|
"artwork",
|
|
"duration",
|
|
"itemCount",
|
|
"collectionKind",
|
|
"collectionType",
|
|
"collectionId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"rerunCollectionId",
|
|
"mediaItemId",
|
|
"playlistId"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"mediaType": {
|
|
"$ref": "#/components/schemas/LibraryBrowseMediaType"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"libraryId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"libraryName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"artwork": {
|
|
"type": "string"
|
|
},
|
|
"duration": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"itemCount": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"collectionKind": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"rerunCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playlistId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"subtitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"seasonId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"LibraryBrowseMediaType": {
|
|
"enum": [
|
|
"Movie",
|
|
"TelevisionShow",
|
|
"TelevisionSeason",
|
|
"Artist",
|
|
"Collection",
|
|
"SmartCollection",
|
|
"MultiCollection",
|
|
"RerunCollection",
|
|
"Playlist",
|
|
"Episode",
|
|
"MusicVideo",
|
|
"Song",
|
|
"OtherVideo",
|
|
"Image",
|
|
"RemoteStream"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"LibraryMediaKind": {
|
|
"enum": [
|
|
"Movies",
|
|
"Shows",
|
|
"MusicVideos",
|
|
"OtherVideos",
|
|
"Songs",
|
|
"Images",
|
|
"RemoteStreams"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"LibraryScanStatusResponseModel": {
|
|
"required": [
|
|
"libraryId",
|
|
"percent"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"libraryId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"percent": {
|
|
"type": "number",
|
|
"format": "double"
|
|
}
|
|
}
|
|
},
|
|
"LocalLibraryDetailResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"mediaKind",
|
|
"isLocked",
|
|
"mediaItemCount",
|
|
"paths"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"mediaKind": {
|
|
"$ref": "#/components/schemas/LibraryMediaKind"
|
|
},
|
|
"isLocked": {
|
|
"type": "boolean"
|
|
},
|
|
"mediaItemCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"paths": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LocalLibraryPathResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"LocalLibraryPathResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"path",
|
|
"mediaItemCount"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"mediaItemCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"LocalLibraryResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"mediaKind",
|
|
"isLocked"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"mediaKind": {
|
|
"$ref": "#/components/schemas/LibraryMediaKind"
|
|
},
|
|
"isLocked": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"LocalPathCheckRequest": {
|
|
"required": [
|
|
"path"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"LocalPathCheckResponseModel": {
|
|
"required": [
|
|
"exists"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"exists": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"LogEntryResponseModel": {
|
|
"required": [
|
|
"timestamp",
|
|
"level",
|
|
"message"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"level": {
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"LogEventLevel": {
|
|
"enum": [
|
|
"Verbose",
|
|
"Debug",
|
|
"Information",
|
|
"Warning",
|
|
"Error",
|
|
"Fatal"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"LoggingSettingsResponseModel": {
|
|
"required": [
|
|
"defaultMinimumLogLevel",
|
|
"scanningMinimumLogLevel",
|
|
"schedulingMinimumLogLevel",
|
|
"searchingMinimumLogLevel",
|
|
"streamingMinimumLogLevel",
|
|
"httpMinimumLogLevel"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"defaultMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
},
|
|
"scanningMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
},
|
|
"schedulingMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
},
|
|
"searchingMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
},
|
|
"streamingMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
},
|
|
"httpMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
}
|
|
}
|
|
},
|
|
"MarathonGroupBy": {
|
|
"enum": [
|
|
"None",
|
|
"Show",
|
|
"Season",
|
|
"Artist",
|
|
"Album",
|
|
"Director"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"MediaCollectionResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"collectionType",
|
|
"useCustomPlaybackOrder"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"useCustomPlaybackOrder": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"MediaItemInfoChapterResponseModel": {
|
|
"required": [
|
|
"title",
|
|
"startTime",
|
|
"endTime"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"startTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
},
|
|
"endTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"MediaItemInfoResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"title",
|
|
"kind",
|
|
"libraryKind",
|
|
"serverName",
|
|
"libraryName",
|
|
"state",
|
|
"duration",
|
|
"sampleAspectRatio",
|
|
"displayAspectRatio",
|
|
"rFrameRate",
|
|
"videoScanKind",
|
|
"interlacedRatio",
|
|
"width",
|
|
"height",
|
|
"streams",
|
|
"chapters"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"type": "string"
|
|
},
|
|
"libraryKind": {
|
|
"type": "string"
|
|
},
|
|
"serverName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"libraryName": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"$ref": "#/components/schemas/MediaItemState"
|
|
},
|
|
"duration": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
},
|
|
"sampleAspectRatio": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"displayAspectRatio": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"rFrameRate": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"videoScanKind": {
|
|
"$ref": "#/components/schemas/VideoScanKind"
|
|
},
|
|
"interlacedRatio": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
},
|
|
"width": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"height": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"streams": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MediaItemInfoStreamResponseModel"
|
|
}
|
|
},
|
|
"chapters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MediaItemInfoChapterResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"MediaItemInfoStreamResponseModel": {
|
|
"required": [
|
|
"index",
|
|
"kind",
|
|
"title",
|
|
"codec",
|
|
"profile",
|
|
"language",
|
|
"channels",
|
|
"default",
|
|
"forced",
|
|
"attachedPic",
|
|
"pixelFormat",
|
|
"colorRange",
|
|
"colorSpace",
|
|
"colorTransfer",
|
|
"colorPrimaries",
|
|
"bitsPerRawSample",
|
|
"mimeType",
|
|
"fileName",
|
|
"isExtracted"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"index": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/components/schemas/MediaStreamKind"
|
|
},
|
|
"title": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"codec": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"profile": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"language": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"channels": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"default": {
|
|
"type": [
|
|
"null",
|
|
"boolean"
|
|
]
|
|
},
|
|
"forced": {
|
|
"type": [
|
|
"null",
|
|
"boolean"
|
|
]
|
|
},
|
|
"attachedPic": {
|
|
"type": [
|
|
"null",
|
|
"boolean"
|
|
]
|
|
},
|
|
"pixelFormat": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"colorRange": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"colorSpace": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"colorTransfer": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"colorPrimaries": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"bitsPerRawSample": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mimeType": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"fileName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"isExtracted": {
|
|
"type": [
|
|
"null",
|
|
"boolean"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"MediaItemState": {
|
|
"enum": [
|
|
"Normal",
|
|
"FileNotFound",
|
|
"Unavailable",
|
|
"RemoteOnly"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"MediaSourceKind": {
|
|
"enum": [
|
|
"Local",
|
|
"Plex",
|
|
"Jellyfin",
|
|
"Emby"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"MediaSourceLibraryResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"mediaKind",
|
|
"lastScan",
|
|
"itemCount"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"mediaKind": {
|
|
"$ref": "#/components/schemas/LibraryMediaKind"
|
|
},
|
|
"lastScan": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
],
|
|
"format": "date-time"
|
|
},
|
|
"itemCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"MediaSourceResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"kind",
|
|
"name",
|
|
"connectionAddress",
|
|
"libraries"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"kind": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"connectionAddress": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"libraries": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MediaSourceLibraryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"MediaStreamKind": {
|
|
"enum": [
|
|
"Video",
|
|
"Audio",
|
|
"Subtitle",
|
|
"Attachment",
|
|
"ExternalSubtitle"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"MoveLocalLibraryPathRequest": {
|
|
"required": [
|
|
"targetLibraryId"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"targetLibraryId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"MovieDetailResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"title",
|
|
"year",
|
|
"plot",
|
|
"genres",
|
|
"tags",
|
|
"studios",
|
|
"contentRatings",
|
|
"languages",
|
|
"actors",
|
|
"directors",
|
|
"writers",
|
|
"path",
|
|
"localPath",
|
|
"state",
|
|
"poster",
|
|
"fanArt"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"year": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"plot": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"genres": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"studios": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"contentRatings": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"languages": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"actors": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ActorResponseModel"
|
|
}
|
|
},
|
|
"directors": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"writers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"path": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"localPath": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"state": {
|
|
"$ref": "#/components/schemas/MediaItemState"
|
|
},
|
|
"poster": {
|
|
"type": "string"
|
|
},
|
|
"fanArt": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"MultiCollectionItemRequest": {
|
|
"required": [
|
|
"collectionId",
|
|
"smartCollectionId",
|
|
"scheduleAsGroup",
|
|
"playbackOrder"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"scheduleAsGroup": {
|
|
"type": "boolean"
|
|
},
|
|
"playbackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
}
|
|
}
|
|
},
|
|
"MultiCollectionItemResponseModel": {
|
|
"required": [
|
|
"collectionId",
|
|
"smartCollectionId",
|
|
"name",
|
|
"scheduleAsGroup",
|
|
"playbackOrder"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"scheduleAsGroup": {
|
|
"type": "boolean"
|
|
},
|
|
"playbackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
}
|
|
}
|
|
},
|
|
"MultiCollectionResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MultiCollectionItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"MultipleMode": {
|
|
"enum": [
|
|
"Count",
|
|
"CollectionSize",
|
|
"PlaylistItemSize",
|
|
"MultiEpisodeGroupSize"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"NamedIdResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"NormalizeLoudnessMode": {
|
|
"enum": [
|
|
"Off",
|
|
"LoudNorm"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"OutputFormatKind": {
|
|
"enum": [
|
|
"None",
|
|
"Mkv",
|
|
"MpegTs",
|
|
"Mp4",
|
|
"Hls",
|
|
"HlsMp4",
|
|
"Nut"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PagedLibraryBrowseItemsResponseModel": {
|
|
"required": [
|
|
"totalCount",
|
|
"page"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"page": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryBrowseItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"PagedLogEntriesResponseModel": {
|
|
"required": [
|
|
"totalCount",
|
|
"page"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"page": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LogEntryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"PagedMultiCollectionsResponseModel": {
|
|
"required": [
|
|
"totalCount",
|
|
"page"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"page": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MultiCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"PagedPlayoutHistoryResponseModel": {
|
|
"required": [
|
|
"totalCount",
|
|
"page"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"page": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutHistoryResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"PagedPlayoutItemsResponseModel": {
|
|
"required": [
|
|
"totalCount",
|
|
"page"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"page": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"PagedPlayoutsResponseModel": {
|
|
"required": [
|
|
"totalCount",
|
|
"page"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"page": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutListItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"PagedRerunCollectionsResponseModel": {
|
|
"required": [
|
|
"totalCount",
|
|
"page"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"page": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RerunCollectionResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"PagedTraktListsResponseModel": {
|
|
"required": [
|
|
"totalCount",
|
|
"page"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"page": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TraktListResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"PathReplacementItemRequest": {
|
|
"required": [
|
|
"id",
|
|
"remotePath",
|
|
"localPath"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"remotePath": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"localPath": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"PathReplacementResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"remotePath",
|
|
"localPath"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"remotePath": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"localPath": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"PlaybackOrder": {
|
|
"enum": [
|
|
"None",
|
|
"Chronological",
|
|
"Random",
|
|
"Shuffle",
|
|
"ShuffleInOrder",
|
|
"MultiEpisodeShuffle",
|
|
"SeasonEpisode",
|
|
"RandomRotation",
|
|
"Marathon"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PlaylistGroupResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"playlistCount",
|
|
"isSystem"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"playlistCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"isSystem": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"PlaylistItemRequest": {
|
|
"required": [
|
|
"index",
|
|
"collectionType",
|
|
"collectionId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"mediaItemId",
|
|
"playbackOrder",
|
|
"count",
|
|
"playAll",
|
|
"includeInProgramGuide"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"index": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playbackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
},
|
|
"count": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playAll": {
|
|
"type": "boolean"
|
|
},
|
|
"includeInProgramGuide": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"PlaylistItemResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"index",
|
|
"collectionType",
|
|
"collectionId",
|
|
"collectionName",
|
|
"multiCollectionId",
|
|
"multiCollectionName",
|
|
"smartCollectionId",
|
|
"smartCollectionName",
|
|
"mediaItemId",
|
|
"mediaItemName",
|
|
"playbackOrder",
|
|
"count",
|
|
"playAll",
|
|
"includeInProgramGuide"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"index": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"collectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playbackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
},
|
|
"count": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playAll": {
|
|
"type": "boolean"
|
|
},
|
|
"includeInProgramGuide": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"PlaylistPreviewItemResponseModel": {
|
|
"required": [
|
|
"title",
|
|
"start",
|
|
"finish",
|
|
"duration"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"start": {
|
|
"type": "string"
|
|
},
|
|
"finish": {
|
|
"type": "string"
|
|
},
|
|
"duration": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"PlaylistResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"playlistGroupId",
|
|
"name",
|
|
"isSystem"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"playlistGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"isSystem": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutAlternateScheduleItemRequest": {
|
|
"required": [
|
|
"id",
|
|
"programScheduleId",
|
|
"daysOfWeek",
|
|
"daysOfMonth",
|
|
"monthsOfYear",
|
|
"limitToDateRange",
|
|
"startMonth",
|
|
"startDay",
|
|
"startYear",
|
|
"endMonth",
|
|
"endDay",
|
|
"endYear"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"programScheduleId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"daysOfWeek": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/DayOfWeek"
|
|
}
|
|
},
|
|
"daysOfMonth": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"monthsOfYear": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"limitToDateRange": {
|
|
"type": "boolean"
|
|
},
|
|
"startMonth": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startDay": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startYear": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"endMonth": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"endDay": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"endYear": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutAlternateScheduleResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"index",
|
|
"programScheduleId",
|
|
"daysOfWeek",
|
|
"daysOfMonth",
|
|
"monthsOfYear",
|
|
"limitToDateRange",
|
|
"startMonth",
|
|
"startDay",
|
|
"startYear",
|
|
"endMonth",
|
|
"endDay",
|
|
"endYear"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"index": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"programScheduleId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"daysOfWeek": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DayOfWeek"
|
|
}
|
|
},
|
|
"daysOfMonth": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"monthsOfYear": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"limitToDateRange": {
|
|
"type": "boolean"
|
|
},
|
|
"startMonth": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startDay": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startYear": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"endMonth": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"endDay": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"endYear": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutBuildMode": {
|
|
"enum": [
|
|
"Continue",
|
|
"Refresh",
|
|
"Reset"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PlayoutBuildStatusResponseModel": {
|
|
"required": [
|
|
"lastBuild",
|
|
"success",
|
|
"message"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"lastBuild": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"success": {
|
|
"type": "boolean"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutHistoryDetailsResponseModel": {
|
|
"required": [
|
|
"playbackOrder",
|
|
"collectionType",
|
|
"name",
|
|
"mediaItemType",
|
|
"mediaItemTitle"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"playbackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"mediaItemType": {
|
|
"type": "string"
|
|
},
|
|
"mediaItemTitle": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutHistoryResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"when",
|
|
"finish",
|
|
"key",
|
|
"details"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"when": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"finish": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"details": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutItemResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"title",
|
|
"start",
|
|
"finish",
|
|
"duration",
|
|
"fillerKind",
|
|
"hasSchedulingContext"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"start": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"finish": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"duration": {
|
|
"type": "string"
|
|
},
|
|
"fillerKind": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/FillerKind"
|
|
}
|
|
]
|
|
},
|
|
"hasSchedulingContext": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutItemSchedulingContextResponseModel": {
|
|
"required": [
|
|
"context"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"context": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutListItemResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"channelNumber",
|
|
"channelName",
|
|
"scheduleKind",
|
|
"scheduleName",
|
|
"dailyRebuildTime",
|
|
"buildStatus",
|
|
"playoutMode",
|
|
"isLocked"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"channelNumber": {
|
|
"type": "string"
|
|
},
|
|
"channelName": {
|
|
"type": "string"
|
|
},
|
|
"scheduleKind": {
|
|
"$ref": "#/components/schemas/PlayoutScheduleKind"
|
|
},
|
|
"scheduleName": {
|
|
"type": "string"
|
|
},
|
|
"dailyRebuildTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"buildStatus": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/PlayoutBuildStatusResponseModel"
|
|
}
|
|
]
|
|
},
|
|
"playoutMode": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutMode"
|
|
},
|
|
"isLocked": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutMode": {
|
|
"enum": [
|
|
"Flood",
|
|
"One",
|
|
"Multiple",
|
|
"Duration"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PlayoutResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"scheduleKind",
|
|
"channelName",
|
|
"channelNumber",
|
|
"playoutMode",
|
|
"scheduleName",
|
|
"scheduleFile",
|
|
"dailyRebuildTime",
|
|
"buildStatus",
|
|
"decoId",
|
|
"decoName",
|
|
"isLocked"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"scheduleKind": {
|
|
"$ref": "#/components/schemas/PlayoutScheduleKind"
|
|
},
|
|
"channelName": {
|
|
"type": "string"
|
|
},
|
|
"channelNumber": {
|
|
"type": "string"
|
|
},
|
|
"playoutMode": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutMode"
|
|
},
|
|
"scheduleName": {
|
|
"type": "string"
|
|
},
|
|
"scheduleFile": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"dailyRebuildTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"buildStatus": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/PlayoutBuildStatusResponseModel"
|
|
}
|
|
]
|
|
},
|
|
"decoId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"decoName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"isLocked": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutScheduleKind": {
|
|
"enum": [
|
|
"None",
|
|
"Classic",
|
|
"Block",
|
|
"Sequential",
|
|
"Scripted",
|
|
"ExternalJson"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PlayoutSettingsResponseModel": {
|
|
"required": [
|
|
"daysToBuild",
|
|
"skipMissingItems",
|
|
"scriptedScheduleTimeoutSeconds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"daysToBuild": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"skipMissingItems": {
|
|
"type": "boolean"
|
|
},
|
|
"scriptedScheduleTimeoutSeconds": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutTemplateItemRequest": {
|
|
"required": [
|
|
"id",
|
|
"templateId",
|
|
"decoTemplateId",
|
|
"daysOfWeek",
|
|
"daysOfMonth",
|
|
"monthsOfYear",
|
|
"limitToDateRange",
|
|
"startMonth",
|
|
"startDay",
|
|
"startYear",
|
|
"endMonth",
|
|
"endDay",
|
|
"endYear"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"templateId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"decoTemplateId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"daysOfWeek": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/DayOfWeek"
|
|
}
|
|
},
|
|
"daysOfMonth": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"monthsOfYear": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"limitToDateRange": {
|
|
"type": "boolean"
|
|
},
|
|
"startMonth": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startDay": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startYear": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"endMonth": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"endDay": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"endYear": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"PlayoutTemplateResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"index",
|
|
"templateId",
|
|
"templateName",
|
|
"templateGroupName",
|
|
"decoTemplateId",
|
|
"decoTemplateName",
|
|
"decoTemplateGroupName",
|
|
"daysOfWeek",
|
|
"daysOfMonth",
|
|
"monthsOfYear",
|
|
"limitToDateRange",
|
|
"startMonth",
|
|
"startDay",
|
|
"startYear",
|
|
"endMonth",
|
|
"endDay",
|
|
"endYear"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"index": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"templateId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"templateName": {
|
|
"type": "string"
|
|
},
|
|
"templateGroupName": {
|
|
"type": "string"
|
|
},
|
|
"decoTemplateId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"decoTemplateName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"decoTemplateGroupName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"daysOfWeek": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DayOfWeek"
|
|
}
|
|
},
|
|
"daysOfMonth": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"monthsOfYear": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"limitToDateRange": {
|
|
"type": "boolean"
|
|
},
|
|
"startMonth": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startDay": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startYear": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"endMonth": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"endDay": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"endYear": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"PlexPinFlowResponseModel": {
|
|
"required": [
|
|
"authUrl"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"authUrl": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ProblemDetails": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"title": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"status": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"detail": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"instance": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ProgramScheduleResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"keepMultiPartEpisodesTogether",
|
|
"treatCollectionsAsShows",
|
|
"shuffleScheduleItems",
|
|
"randomStartPoint",
|
|
"fixedStartTimeBehavior"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"keepMultiPartEpisodesTogether": {
|
|
"type": "boolean"
|
|
},
|
|
"treatCollectionsAsShows": {
|
|
"type": "boolean"
|
|
},
|
|
"shuffleScheduleItems": {
|
|
"type": "boolean"
|
|
},
|
|
"randomStartPoint": {
|
|
"type": "boolean"
|
|
},
|
|
"fixedStartTimeBehavior": {
|
|
"$ref": "#/components/schemas/FixedStartTimeBehavior"
|
|
}
|
|
}
|
|
},
|
|
"RemoteConnectionResponseModel": {
|
|
"required": [
|
|
"address",
|
|
"hasApiKey"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"address": {
|
|
"type": "string"
|
|
},
|
|
"hasApiKey": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"RemoteLibraryPreferenceRequest": {
|
|
"required": [
|
|
"id",
|
|
"shouldSyncItems"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"shouldSyncItems": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"RemoteLibraryResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"mediaKind",
|
|
"shouldSyncItems"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"mediaKind": {
|
|
"$ref": "#/components/schemas/LibraryMediaKind"
|
|
},
|
|
"shouldSyncItems": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"RemoteMediaSourceItemResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"address"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"address": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"RemoteMediaSourceStateResponseModel": {
|
|
"required": [
|
|
"isAuthorized",
|
|
"isLocked",
|
|
"servers"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"isAuthorized": {
|
|
"type": "boolean"
|
|
},
|
|
"isLocked": {
|
|
"type": "boolean"
|
|
},
|
|
"servers": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteMediaSourceItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ReplaceBlockRequest": {
|
|
"required": [
|
|
"name",
|
|
"minutes",
|
|
"stopScheduling",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"minutes": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"stopScheduling": {
|
|
"$ref": "#/components/schemas/BlockStopScheduling"
|
|
},
|
|
"items": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/BlockItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ReplaceDecoRequest": {
|
|
"required": [
|
|
"name",
|
|
"watermarkMode",
|
|
"watermarkIds",
|
|
"useWatermarkDuringFiller",
|
|
"graphicsElementsMode",
|
|
"graphicsElementIds",
|
|
"useGraphicsElementsDuringFiller",
|
|
"breakContentMode",
|
|
"breakContent",
|
|
"defaultFillerMode",
|
|
"defaultFillerCollectionType",
|
|
"defaultFillerCollectionId",
|
|
"defaultFillerMediaItemId",
|
|
"defaultFillerMultiCollectionId",
|
|
"defaultFillerSmartCollectionId",
|
|
"defaultFillerTrimToFit",
|
|
"deadAirFallbackMode",
|
|
"deadAirFallbackCollectionType",
|
|
"deadAirFallbackCollectionId",
|
|
"deadAirFallbackMediaItemId",
|
|
"deadAirFallbackMultiCollectionId",
|
|
"deadAirFallbackSmartCollectionId"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"watermarkMode": {
|
|
"$ref": "#/components/schemas/DecoMode"
|
|
},
|
|
"watermarkIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"useWatermarkDuringFiller": {
|
|
"type": "boolean"
|
|
},
|
|
"graphicsElementsMode": {
|
|
"$ref": "#/components/schemas/DecoMode"
|
|
},
|
|
"graphicsElementIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"useGraphicsElementsDuringFiller": {
|
|
"type": "boolean"
|
|
},
|
|
"breakContentMode": {
|
|
"$ref": "#/components/schemas/DecoMode"
|
|
},
|
|
"breakContent": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoBreakContentRequest"
|
|
}
|
|
},
|
|
"defaultFillerMode": {
|
|
"$ref": "#/components/schemas/DecoMode"
|
|
},
|
|
"defaultFillerCollectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"defaultFillerCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"defaultFillerMediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"defaultFillerMultiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"defaultFillerSmartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"defaultFillerTrimToFit": {
|
|
"type": "boolean"
|
|
},
|
|
"deadAirFallbackMode": {
|
|
"$ref": "#/components/schemas/DecoMode"
|
|
},
|
|
"deadAirFallbackCollectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"deadAirFallbackCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"deadAirFallbackMediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"deadAirFallbackMultiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"deadAirFallbackSmartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"ReplaceDecoTemplateRequest": {
|
|
"required": [
|
|
"name",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"items": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/DecoTemplateItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ReplacePathReplacementsRequest": {
|
|
"required": [
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/PathReplacementItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ReplacePlaylistRequest": {
|
|
"required": [
|
|
"name",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"items": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlaylistItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ReplacePlayoutAlternateSchedulesRequest": {
|
|
"required": [
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutAlternateScheduleItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ReplacePlayoutTemplatesRequest": {
|
|
"required": [
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/PlayoutTemplateItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ReplaceRemoteLibraryPreferencesRequest": {
|
|
"required": [
|
|
"libraries"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"libraries": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/RemoteLibraryPreferenceRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ReplaceScheduleItemsRequest": {
|
|
"required": [
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScheduleItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ReplaceTemplateRequest": {
|
|
"required": [
|
|
"name",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"items": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"RerunCollectionResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"collectionType",
|
|
"selectedId",
|
|
"selectedName",
|
|
"firstRunPlaybackOrder",
|
|
"rerunPlaybackOrder"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"selectedId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"selectedName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"firstRunPlaybackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
},
|
|
"rerunPlaybackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
}
|
|
}
|
|
},
|
|
"ResetAllPlayoutsResponseModel": {
|
|
"required": [
|
|
"queuedPlayoutIds",
|
|
"skippedLocked",
|
|
"skippedUnsupported"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"queuedPlayoutIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"skippedLocked": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"skippedUnsupported": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ResolutionResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"width",
|
|
"height",
|
|
"isCustom"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"width": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"height": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"isCustom": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"SaveRemoteConnectionRequest": {
|
|
"required": [
|
|
"address",
|
|
"apiKey"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"address": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"apiKey": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ScalingBehavior": {
|
|
"enum": [
|
|
"ScaleAndPad",
|
|
"Stretch",
|
|
"Crop"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ScannerSettingsResponseModel": {
|
|
"required": [
|
|
"libraryRefreshInterval"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"libraryRefreshInterval": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"ScanShowRequest": {
|
|
"required": [
|
|
"showId"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"showId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"deepScan": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
},
|
|
"ScheduleItemRequest": {
|
|
"required": [
|
|
"id",
|
|
"startType",
|
|
"startTime",
|
|
"fixedStartTimeBehavior",
|
|
"playoutMode",
|
|
"collectionType",
|
|
"collectionId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"rerunCollectionId",
|
|
"mediaItemId",
|
|
"playlistId",
|
|
"searchTitle",
|
|
"searchQuery",
|
|
"playbackOrder",
|
|
"marathonGroupBy",
|
|
"marathonShuffleGroups",
|
|
"marathonShuffleItems",
|
|
"marathonBatchSize",
|
|
"fillWithGroupMode",
|
|
"multipleMode",
|
|
"multipleCount",
|
|
"playoutDuration",
|
|
"tailMode",
|
|
"discardToFillAttempts",
|
|
"customTitle",
|
|
"guideMode",
|
|
"preRollFillerId",
|
|
"midRollFillerId",
|
|
"postRollFillerId",
|
|
"tailFillerId",
|
|
"fallbackFillerId",
|
|
"watermarkIds",
|
|
"graphicsElementIds",
|
|
"preferredAudioLanguageCode",
|
|
"preferredAudioTitle",
|
|
"preferredSubtitleLanguageCode",
|
|
"subtitleMode"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"startType": {
|
|
"$ref": "#/components/schemas/StartType"
|
|
},
|
|
"startTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"fixedStartTimeBehavior": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/FixedStartTimeBehavior"
|
|
}
|
|
]
|
|
},
|
|
"playoutMode": {
|
|
"$ref": "#/components/schemas/PlayoutMode"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"rerunCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playlistId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"searchTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"searchQuery": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playbackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
},
|
|
"marathonGroupBy": {
|
|
"$ref": "#/components/schemas/MarathonGroupBy"
|
|
},
|
|
"marathonShuffleGroups": {
|
|
"type": "boolean"
|
|
},
|
|
"marathonShuffleItems": {
|
|
"type": "boolean"
|
|
},
|
|
"marathonBatchSize": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fillWithGroupMode": {
|
|
"$ref": "#/components/schemas/FillWithGroupMode"
|
|
},
|
|
"multipleMode": {
|
|
"$ref": "#/components/schemas/MultipleMode"
|
|
},
|
|
"multipleCount": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playoutDuration": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"tailMode": {
|
|
"$ref": "#/components/schemas/TailMode"
|
|
},
|
|
"discardToFillAttempts": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"customTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"guideMode": {
|
|
"$ref": "#/components/schemas/GuideMode"
|
|
},
|
|
"preRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"midRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"postRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"tailFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"watermarkIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"graphicsElementIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredSubtitleLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"subtitleMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelSubtitleMode"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ScheduleItemResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"index",
|
|
"startType",
|
|
"startTime",
|
|
"fixedStartTimeBehavior",
|
|
"playoutMode",
|
|
"collectionType",
|
|
"collectionId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"rerunCollectionId",
|
|
"mediaItemId",
|
|
"playlistId",
|
|
"searchTitle",
|
|
"searchQuery",
|
|
"playbackOrder",
|
|
"marathonGroupBy",
|
|
"marathonShuffleGroups",
|
|
"marathonShuffleItems",
|
|
"marathonBatchSize",
|
|
"fillWithGroupMode",
|
|
"multipleMode",
|
|
"multipleCount",
|
|
"playoutDuration",
|
|
"tailMode",
|
|
"discardToFillAttempts",
|
|
"customTitle",
|
|
"guideMode",
|
|
"preRollFillerId",
|
|
"midRollFillerId",
|
|
"postRollFillerId",
|
|
"tailFillerId",
|
|
"fallbackFillerId",
|
|
"watermarkIds",
|
|
"graphicsElementIds",
|
|
"preferredAudioLanguageCode",
|
|
"preferredAudioTitle",
|
|
"preferredSubtitleLanguageCode",
|
|
"subtitleMode",
|
|
"collectionName",
|
|
"multiCollectionName",
|
|
"smartCollectionName",
|
|
"rerunCollectionName",
|
|
"playlistName",
|
|
"playlistGroupId",
|
|
"mediaItemName",
|
|
"preRollFillerName",
|
|
"midRollFillerName",
|
|
"postRollFillerName",
|
|
"tailFillerName",
|
|
"fallbackFillerName",
|
|
"watermarks",
|
|
"graphicsElements",
|
|
"name",
|
|
"durationEstimate"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"index": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startType": {
|
|
"$ref": "#/components/schemas/StartType"
|
|
},
|
|
"startTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"fixedStartTimeBehavior": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/FixedStartTimeBehavior"
|
|
}
|
|
]
|
|
},
|
|
"playoutMode": {
|
|
"$ref": "#/components/schemas/PlayoutMode"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"rerunCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playlistId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"searchTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"searchQuery": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playbackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
},
|
|
"marathonGroupBy": {
|
|
"$ref": "#/components/schemas/MarathonGroupBy"
|
|
},
|
|
"marathonShuffleGroups": {
|
|
"type": "boolean"
|
|
},
|
|
"marathonShuffleItems": {
|
|
"type": "boolean"
|
|
},
|
|
"marathonBatchSize": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fillWithGroupMode": {
|
|
"$ref": "#/components/schemas/FillWithGroupMode"
|
|
},
|
|
"multipleMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/MultipleMode"
|
|
}
|
|
]
|
|
},
|
|
"multipleCount": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playoutDuration": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"tailMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/TailMode"
|
|
}
|
|
]
|
|
},
|
|
"discardToFillAttempts": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"customTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"guideMode": {
|
|
"$ref": "#/components/schemas/GuideMode"
|
|
},
|
|
"preRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"midRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"postRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"tailFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"watermarkIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"graphicsElementIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredSubtitleLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"subtitleMode": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChannelSubtitleMode"
|
|
}
|
|
]
|
|
},
|
|
"collectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"multiCollectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"smartCollectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"rerunCollectionName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playlistName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playlistGroupId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preRollFillerName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"midRollFillerName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"postRollFillerName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"tailFillerName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"fallbackFillerName": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"watermarks": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/NamedIdResponseModel"
|
|
}
|
|
},
|
|
"graphicsElements": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/NamedIdResponseModel"
|
|
}
|
|
},
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"durationEstimate": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ScheduleItemsResponseModel": {
|
|
"required": [
|
|
"items",
|
|
"totalDurationEstimate"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScheduleItemResponseModel"
|
|
}
|
|
},
|
|
"totalDurationEstimate": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"SchedulingPickerOptionResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SearchResultAllItemsResponseModel": {
|
|
"required": [
|
|
"movieIds",
|
|
"showIds",
|
|
"seasonIds",
|
|
"episodeIds",
|
|
"artistIds",
|
|
"musicVideoIds",
|
|
"otherVideoIds",
|
|
"songIds",
|
|
"imageIds",
|
|
"remoteStreamIds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"movieIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"showIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"seasonIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"episodeIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"artistIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"musicVideoIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"otherVideoIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"songIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"imageIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"remoteStreamIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"SearchResultGroupResponseModel": {
|
|
"required": [
|
|
"totalCount",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"totalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LibraryBrowseItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"SearchResultsResponseModel": {
|
|
"required": [
|
|
"movies",
|
|
"shows",
|
|
"seasons",
|
|
"artists",
|
|
"episodes",
|
|
"musicVideos",
|
|
"songs",
|
|
"otherVideos",
|
|
"images",
|
|
"remoteStreams"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"movies": {
|
|
"$ref": "#/components/schemas/SearchResultGroupResponseModel"
|
|
},
|
|
"shows": {
|
|
"$ref": "#/components/schemas/SearchResultGroupResponseModel"
|
|
},
|
|
"seasons": {
|
|
"$ref": "#/components/schemas/SearchResultGroupResponseModel"
|
|
},
|
|
"artists": {
|
|
"$ref": "#/components/schemas/SearchResultGroupResponseModel"
|
|
},
|
|
"episodes": {
|
|
"$ref": "#/components/schemas/SearchResultGroupResponseModel"
|
|
},
|
|
"musicVideos": {
|
|
"$ref": "#/components/schemas/SearchResultGroupResponseModel"
|
|
},
|
|
"songs": {
|
|
"$ref": "#/components/schemas/SearchResultGroupResponseModel"
|
|
},
|
|
"otherVideos": {
|
|
"$ref": "#/components/schemas/SearchResultGroupResponseModel"
|
|
},
|
|
"images": {
|
|
"$ref": "#/components/schemas/SearchResultGroupResponseModel"
|
|
},
|
|
"remoteStreams": {
|
|
"$ref": "#/components/schemas/SearchResultGroupResponseModel"
|
|
}
|
|
}
|
|
},
|
|
"SeasonDetailResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"showId",
|
|
"title",
|
|
"year",
|
|
"name",
|
|
"poster",
|
|
"fanArt"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"showId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"year": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"poster": {
|
|
"type": "string"
|
|
},
|
|
"fanArt": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ShowDetailResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"libraryId",
|
|
"mediaSourceKind",
|
|
"title",
|
|
"year",
|
|
"plot",
|
|
"poster",
|
|
"fanArt",
|
|
"genres",
|
|
"tags",
|
|
"studios",
|
|
"networks",
|
|
"contentRatings",
|
|
"languages",
|
|
"actors"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"libraryId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"mediaSourceKind": {
|
|
"$ref": "#/components/schemas/MediaSourceKind"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"year": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"plot": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"poster": {
|
|
"type": "string"
|
|
},
|
|
"fanArt": {
|
|
"type": "string"
|
|
},
|
|
"genres": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"studios": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"networks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"contentRatings": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"languages": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"actors": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ActorResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"SmartCollectionResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"query"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"query": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"StartTroubleshootingPlaybackRequest": {
|
|
"required": [
|
|
"mediaItem",
|
|
"channel",
|
|
"ffmpegProfile",
|
|
"streamingMode",
|
|
"watermark",
|
|
"graphicsElement",
|
|
"streamSelector",
|
|
"subtitleId",
|
|
"seekSeconds",
|
|
"start"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"mediaItem": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"channel": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"ffmpegProfile": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"streamingMode": {
|
|
"$ref": "#/components/schemas/StreamingMode"
|
|
},
|
|
"watermark": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"graphicsElement": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"streamSelector": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"subtitleId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"seekSeconds": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"start": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
],
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"StartType": {
|
|
"enum": [
|
|
"Dynamic",
|
|
"Fixed"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"StreamingMode": {
|
|
"enum": [
|
|
"TransportStream",
|
|
"HttpLiveStreamingDirect",
|
|
"HttpLiveStreamingSegmenter",
|
|
"TransportStreamHybrid"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"TailMode": {
|
|
"enum": [
|
|
"None",
|
|
"Offline",
|
|
"Slate",
|
|
"Filler"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"TemplateGroupResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"templateCount"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"templateCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"TemplateItemRequest": {
|
|
"required": [
|
|
"blockId",
|
|
"startTime"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"blockId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"TemplateItemResponseModel": {
|
|
"required": [
|
|
"blockId",
|
|
"blockName",
|
|
"blockMinutes",
|
|
"startTime"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"blockId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"blockName": {
|
|
"type": "string"
|
|
},
|
|
"blockMinutes": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"startTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"TemplateResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"templateGroupId",
|
|
"groupName",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"templateGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"groupName": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"TemplateWithItemsResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"templateGroupId",
|
|
"groupName",
|
|
"name",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"templateGroupId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"groupName": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TemplateItemResponseModel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"TraktListResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"traktId",
|
|
"slug",
|
|
"name",
|
|
"itemCount",
|
|
"matchCount",
|
|
"autoRefresh",
|
|
"generatePlaylist"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"traktId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"slug": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"itemCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"matchCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"autoRefresh": {
|
|
"type": "boolean"
|
|
},
|
|
"generatePlaylist": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"TraktStatusResponseModel": {
|
|
"required": [
|
|
"busy"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"busy": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"TroubleshootingInfoResponseModel": {
|
|
"required": [
|
|
"generalJson",
|
|
"nvidiaCapabilities",
|
|
"qsvCapabilities",
|
|
"vaapiCapabilities",
|
|
"videoToolboxCapabilities"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"generalJson": {
|
|
"type": "string"
|
|
},
|
|
"nvidiaCapabilities": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"qsvCapabilities": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"vaapiCapabilities": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"videoToolboxCapabilities": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"TroubleshootingPlaybackStartedResponseModel": {
|
|
"required": [
|
|
"url"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"TroubleshootingPlaybackStatusResponseModel": {
|
|
"required": [
|
|
"state",
|
|
"exitCode",
|
|
"speed",
|
|
"logs"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"state": {
|
|
"type": "string"
|
|
},
|
|
"exitCode": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"speed": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
},
|
|
"logs": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"TroubleshootingSubtitleResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"language",
|
|
"title",
|
|
"codec"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"language": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"title": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"codec": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"UiSettingsResponseModel": {
|
|
"required": [
|
|
"isDarkMode",
|
|
"language"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"isDarkMode": {
|
|
"type": "boolean"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"UpdateChannelRequest": {
|
|
"required": [
|
|
"name",
|
|
"number",
|
|
"group",
|
|
"categories",
|
|
"ffmpegProfileId",
|
|
"slugSeconds",
|
|
"logo",
|
|
"streamSelectorMode",
|
|
"streamSelector",
|
|
"preferredAudioLanguageCode",
|
|
"preferredAudioTitle",
|
|
"playoutSource",
|
|
"playoutMode",
|
|
"mirrorSourceChannelId",
|
|
"playoutOffset",
|
|
"streamingMode",
|
|
"watermarkId",
|
|
"fallbackFillerId",
|
|
"preferredSubtitleLanguageCode",
|
|
"subtitleMode",
|
|
"musicVideoCreditsMode",
|
|
"musicVideoCreditsTemplate",
|
|
"songVideoMode",
|
|
"transcodeMode",
|
|
"idleBehavior",
|
|
"isEnabled",
|
|
"showInEpg"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"number": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"group": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"categories": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"ffmpegProfileId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"slugSeconds": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
},
|
|
"logo": {
|
|
"$ref": "#/components/schemas/ArtworkContentTypeModel"
|
|
},
|
|
"streamSelectorMode": {
|
|
"$ref": "#/components/schemas/ChannelStreamSelectorMode"
|
|
},
|
|
"streamSelector": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playoutSource": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutSource"
|
|
},
|
|
"playoutMode": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutMode"
|
|
},
|
|
"mirrorSourceChannelId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playoutOffset": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"streamingMode": {
|
|
"$ref": "#/components/schemas/StreamingMode"
|
|
},
|
|
"watermarkId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"preferredSubtitleLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"subtitleMode": {
|
|
"$ref": "#/components/schemas/ChannelSubtitleMode"
|
|
},
|
|
"musicVideoCreditsMode": {
|
|
"$ref": "#/components/schemas/ChannelMusicVideoCreditsMode"
|
|
},
|
|
"musicVideoCreditsTemplate": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"songVideoMode": {
|
|
"$ref": "#/components/schemas/ChannelSongVideoMode"
|
|
},
|
|
"transcodeMode": {
|
|
"$ref": "#/components/schemas/ChannelTranscodeMode"
|
|
},
|
|
"idleBehavior": {
|
|
"$ref": "#/components/schemas/ChannelIdleBehavior"
|
|
},
|
|
"isEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"showInEpg": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"UpdateChannelTemplateRequest": {
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"ffmpegProfileId",
|
|
"watermarkId",
|
|
"fallbackFillerId",
|
|
"preRollFillerId",
|
|
"midRollFillerId",
|
|
"postRollFillerId",
|
|
"streamSelectorMode",
|
|
"streamSelector",
|
|
"preferredAudioLanguageCode",
|
|
"preferredAudioTitle",
|
|
"playoutSource",
|
|
"playoutMode",
|
|
"streamingMode",
|
|
"preferredSubtitleLanguageCode",
|
|
"subtitleMode",
|
|
"musicVideoCreditsMode",
|
|
"musicVideoCreditsTemplate",
|
|
"songVideoMode",
|
|
"transcodeMode",
|
|
"idleBehavior",
|
|
"shuffleScheduleItems",
|
|
"randomStartPoint",
|
|
"fixedStartTimeBehavior"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"ffmpegProfileId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"watermarkId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"fallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"preRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"midRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"postRollFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"streamSelectorMode": {
|
|
"$ref": "#/components/schemas/ChannelStreamSelectorMode"
|
|
},
|
|
"streamSelector": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"preferredAudioTitle": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"playoutSource": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutSource"
|
|
},
|
|
"playoutMode": {
|
|
"$ref": "#/components/schemas/ChannelPlayoutMode"
|
|
},
|
|
"streamingMode": {
|
|
"$ref": "#/components/schemas/StreamingMode"
|
|
},
|
|
"preferredSubtitleLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"subtitleMode": {
|
|
"$ref": "#/components/schemas/ChannelSubtitleMode"
|
|
},
|
|
"musicVideoCreditsMode": {
|
|
"$ref": "#/components/schemas/ChannelMusicVideoCreditsMode"
|
|
},
|
|
"musicVideoCreditsTemplate": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"songVideoMode": {
|
|
"$ref": "#/components/schemas/ChannelSongVideoMode"
|
|
},
|
|
"transcodeMode": {
|
|
"$ref": "#/components/schemas/ChannelTranscodeMode"
|
|
},
|
|
"idleBehavior": {
|
|
"$ref": "#/components/schemas/ChannelIdleBehavior"
|
|
},
|
|
"shuffleScheduleItems": {
|
|
"type": "boolean"
|
|
},
|
|
"randomStartPoint": {
|
|
"type": "boolean"
|
|
},
|
|
"fixedStartTimeBehavior": {
|
|
"$ref": "#/components/schemas/FixedStartTimeBehavior"
|
|
}
|
|
}
|
|
},
|
|
"UpdateCollectionCustomOrderRequest": {
|
|
"required": [
|
|
"mediaItemIds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"mediaItemIds": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"UpdateCollectionRequest": {
|
|
"required": [
|
|
"name",
|
|
"useCustomPlaybackOrder"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"useCustomPlaybackOrder": {
|
|
"type": [
|
|
"null",
|
|
"boolean"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"UpdateDefaultDecoRequest": {
|
|
"required": [
|
|
"decoId"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"decoId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"UpdateFFmpegProfileRequest": {
|
|
"required": [
|
|
"name",
|
|
"threadCount",
|
|
"normalizeAudio",
|
|
"normalizeVideo",
|
|
"hardwareAcceleration",
|
|
"vaapiDisplay",
|
|
"vaapiDriver",
|
|
"vaapiDevice",
|
|
"qsvExtraHardwareFrames",
|
|
"resolutionId",
|
|
"scalingBehavior",
|
|
"padMode",
|
|
"videoFormat",
|
|
"videoProfile",
|
|
"videoPreset",
|
|
"allowBFrames",
|
|
"bitDepth",
|
|
"videoBitrate",
|
|
"videoBufferSize",
|
|
"tonemapAlgorithm",
|
|
"audioFormat",
|
|
"audioBitrate",
|
|
"audioBufferSize",
|
|
"normalizeLoudnessMode",
|
|
"targetLoudness",
|
|
"audioChannels",
|
|
"audioSampleRate",
|
|
"normalizeFramerate",
|
|
"normalizeColors",
|
|
"deinterlaceVideo"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"threadCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"normalizeAudio": {
|
|
"type": "boolean"
|
|
},
|
|
"normalizeVideo": {
|
|
"type": "boolean"
|
|
},
|
|
"hardwareAcceleration": {
|
|
"$ref": "#/components/schemas/HardwareAccelerationKind"
|
|
},
|
|
"vaapiDisplay": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"vaapiDriver": {
|
|
"$ref": "#/components/schemas/VaapiDriver"
|
|
},
|
|
"vaapiDevice": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"qsvExtraHardwareFrames": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"resolutionId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"scalingBehavior": {
|
|
"$ref": "#/components/schemas/ScalingBehavior"
|
|
},
|
|
"padMode": {
|
|
"$ref": "#/components/schemas/FilterMode"
|
|
},
|
|
"videoFormat": {
|
|
"$ref": "#/components/schemas/FFmpegProfileVideoFormat"
|
|
},
|
|
"videoProfile": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"videoPreset": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"allowBFrames": {
|
|
"type": "boolean"
|
|
},
|
|
"bitDepth": {
|
|
"$ref": "#/components/schemas/FFmpegProfileBitDepth"
|
|
},
|
|
"videoBitrate": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"videoBufferSize": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"tonemapAlgorithm": {
|
|
"$ref": "#/components/schemas/FFmpegProfileTonemapAlgorithm"
|
|
},
|
|
"audioFormat": {
|
|
"$ref": "#/components/schemas/FFmpegProfileAudioFormat"
|
|
},
|
|
"audioBitrate": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"audioBufferSize": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"normalizeLoudnessMode": {
|
|
"$ref": "#/components/schemas/NormalizeLoudnessMode"
|
|
},
|
|
"targetLoudness": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
},
|
|
"audioChannels": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"audioSampleRate": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"normalizeFramerate": {
|
|
"type": "boolean"
|
|
},
|
|
"normalizeColors": {
|
|
"type": "boolean"
|
|
},
|
|
"deinterlaceVideo": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"UpdateFFmpegSettingsRequest": {
|
|
"required": [
|
|
"fFmpegPath",
|
|
"fFprobePath",
|
|
"defaultFFmpegProfileId",
|
|
"preferredAudioLanguageCode",
|
|
"useEmbeddedSubtitles",
|
|
"extractEmbeddedSubtitles",
|
|
"probeForInterlacedFrames",
|
|
"saveReports",
|
|
"globalWatermarkId",
|
|
"globalFallbackFillerId",
|
|
"hlsSegmenterIdleTimeout",
|
|
"workAheadSegmenterLimit",
|
|
"initialSegmentCount",
|
|
"hlsDirectOutputFormat",
|
|
"defaultMpegTsScript"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"fFmpegPath": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"fFprobePath": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"defaultFFmpegProfileId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"preferredAudioLanguageCode": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"useEmbeddedSubtitles": {
|
|
"type": "boolean"
|
|
},
|
|
"extractEmbeddedSubtitles": {
|
|
"type": "boolean"
|
|
},
|
|
"probeForInterlacedFrames": {
|
|
"type": "boolean"
|
|
},
|
|
"saveReports": {
|
|
"type": "boolean"
|
|
},
|
|
"globalWatermarkId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"globalFallbackFillerId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"hlsSegmenterIdleTimeout": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"workAheadSegmenterLimit": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"initialSegmentCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"hlsDirectOutputFormat": {
|
|
"$ref": "#/components/schemas/OutputFormatKind"
|
|
},
|
|
"defaultMpegTsScript": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"UpdateFillerPresetRequest": {
|
|
"required": [
|
|
"name",
|
|
"fillerKind",
|
|
"fillerMode",
|
|
"duration",
|
|
"count",
|
|
"padToNearestMinute",
|
|
"allowWatermarks",
|
|
"collectionType",
|
|
"collectionId",
|
|
"mediaItemId",
|
|
"multiCollectionId",
|
|
"smartCollectionId",
|
|
"playlistId",
|
|
"expression",
|
|
"useChaptersAsMediaItems"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"fillerKind": {
|
|
"$ref": "#/components/schemas/FillerKind"
|
|
},
|
|
"fillerMode": {
|
|
"$ref": "#/components/schemas/FillerMode"
|
|
},
|
|
"duration": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"count": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"padToNearestMinute": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"allowWatermarks": {
|
|
"type": "boolean"
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"collectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"mediaItemId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"multiCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"smartCollectionId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"playlistId": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"expression": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"useChaptersAsMediaItems": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"UpdateHdhrSettingsRequest": {
|
|
"required": [
|
|
"tunerCount"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"tunerCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"UpdateImageFolderDurationRequest": {
|
|
"required": [
|
|
"durationSeconds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"durationSeconds": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
}
|
|
}
|
|
},
|
|
"UpdateImageFolderDurationResponseModel": {
|
|
"required": [
|
|
"durationSeconds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"durationSeconds": {
|
|
"type": [
|
|
"null",
|
|
"number"
|
|
],
|
|
"format": "double"
|
|
}
|
|
}
|
|
},
|
|
"UpdateLocalLibraryPathRequest": {
|
|
"required": [
|
|
"id",
|
|
"path"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"path": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"UpdateLocalLibraryRequest": {
|
|
"required": [
|
|
"name",
|
|
"paths"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"paths": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/UpdateLocalLibraryPathRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"UpdateLoggingSettingsRequest": {
|
|
"required": [
|
|
"defaultMinimumLogLevel",
|
|
"scanningMinimumLogLevel",
|
|
"schedulingMinimumLogLevel",
|
|
"searchingMinimumLogLevel",
|
|
"streamingMinimumLogLevel",
|
|
"httpMinimumLogLevel"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"defaultMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
},
|
|
"scanningMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
},
|
|
"schedulingMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
},
|
|
"searchingMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
},
|
|
"streamingMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
},
|
|
"httpMinimumLogLevel": {
|
|
"$ref": "#/components/schemas/LogEventLevel"
|
|
}
|
|
}
|
|
},
|
|
"UpdateMultiCollectionRequest": {
|
|
"required": [
|
|
"name",
|
|
"items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"items": {
|
|
"type": [
|
|
"null",
|
|
"array"
|
|
],
|
|
"items": {
|
|
"$ref": "#/components/schemas/MultiCollectionItemRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"UpdatePlaylistGroupRequest": {
|
|
"required": [
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"UpdatePlayoutDetailsRequest": {
|
|
"required": [
|
|
"dailyRebuildTime",
|
|
"scheduleFile"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"dailyRebuildTime": {
|
|
"pattern": "^-?(\\d+\\.)?\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,7})?$",
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"scheduleFile": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"UpdatePlayoutSettingsRequest": {
|
|
"required": [
|
|
"daysToBuild",
|
|
"skipMissingItems",
|
|
"scriptedScheduleTimeoutSeconds"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"daysToBuild": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"skipMissingItems": {
|
|
"type": "boolean"
|
|
},
|
|
"scriptedScheduleTimeoutSeconds": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"UpdateRerunCollectionRequest": {
|
|
"required": [
|
|
"name",
|
|
"collectionType",
|
|
"selectedId",
|
|
"firstRunPlaybackOrder",
|
|
"rerunPlaybackOrder"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"collectionType": {
|
|
"$ref": "#/components/schemas/CollectionType"
|
|
},
|
|
"selectedId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"firstRunPlaybackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
},
|
|
"rerunPlaybackOrder": {
|
|
"$ref": "#/components/schemas/PlaybackOrder"
|
|
}
|
|
}
|
|
},
|
|
"UpdateScannerSettingsRequest": {
|
|
"required": [
|
|
"libraryRefreshInterval"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"libraryRefreshInterval": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"UpdateScheduleRequest": {
|
|
"required": [
|
|
"name",
|
|
"keepMultiPartEpisodesTogether",
|
|
"treatCollectionsAsShows",
|
|
"shuffleScheduleItems",
|
|
"randomStartPoint",
|
|
"fixedStartTimeBehavior"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"keepMultiPartEpisodesTogether": {
|
|
"type": "boolean"
|
|
},
|
|
"treatCollectionsAsShows": {
|
|
"type": "boolean"
|
|
},
|
|
"shuffleScheduleItems": {
|
|
"type": "boolean"
|
|
},
|
|
"randomStartPoint": {
|
|
"type": "boolean"
|
|
},
|
|
"fixedStartTimeBehavior": {
|
|
"$ref": "#/components/schemas/FixedStartTimeBehavior"
|
|
}
|
|
}
|
|
},
|
|
"UpdateSmartCollectionRequest": {
|
|
"required": [
|
|
"name",
|
|
"query"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"query": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"UpdateTraktListRequest": {
|
|
"required": [
|
|
"autoRefresh",
|
|
"generatePlaylist"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"autoRefresh": {
|
|
"type": "boolean"
|
|
},
|
|
"generatePlaylist": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"UpdateUiSettingsRequest": {
|
|
"required": [
|
|
"isDarkMode",
|
|
"language"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"isDarkMode": {
|
|
"type": "boolean"
|
|
},
|
|
"language": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"UpdateWatermarkRequest": {
|
|
"required": [
|
|
"name",
|
|
"mode",
|
|
"imageSource",
|
|
"image",
|
|
"imageContentType",
|
|
"location",
|
|
"size",
|
|
"width",
|
|
"horizontalMargin",
|
|
"verticalMargin",
|
|
"frequencyMinutes",
|
|
"durationSeconds",
|
|
"opacity",
|
|
"opacityExpression",
|
|
"zIndex",
|
|
"placeWithinSourceContent"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/ChannelWatermarkMode"
|
|
},
|
|
"imageSource": {
|
|
"$ref": "#/components/schemas/ChannelWatermarkImageSource"
|
|
},
|
|
"image": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"imageContentType": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"location": {
|
|
"$ref": "#/components/schemas/WatermarkLocation"
|
|
},
|
|
"size": {
|
|
"$ref": "#/components/schemas/WatermarkSize"
|
|
},
|
|
"width": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"horizontalMargin": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"verticalMargin": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"frequencyMinutes": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"durationSeconds": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"opacity": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"opacityExpression": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"zIndex": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"placeWithinSourceContent": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"UpdateXmltvSettingsRequest": {
|
|
"required": [
|
|
"daysToBuild",
|
|
"timeZone",
|
|
"blockBehavior"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"daysToBuild": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"timeZone": {
|
|
"$ref": "#/components/schemas/XmltvTimeZone"
|
|
},
|
|
"blockBehavior": {
|
|
"$ref": "#/components/schemas/XmltvBlockBehavior"
|
|
}
|
|
}
|
|
},
|
|
"VaapiDriver": {
|
|
"enum": [
|
|
"Default",
|
|
"iHD",
|
|
"i965",
|
|
"RadeonSI",
|
|
"Nouveau"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"ValidateSequentialScheduleRequest": {
|
|
"required": [
|
|
"yaml",
|
|
"isImport"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"yaml": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"isImport": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"ValidateSequentialScheduleResponseModel": {
|
|
"required": [
|
|
"isValid",
|
|
"messages",
|
|
"json"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"isValid": {
|
|
"type": "boolean"
|
|
},
|
|
"messages": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"json": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ValidationProblemDetails": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"title": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"status": {
|
|
"type": [
|
|
"null",
|
|
"integer"
|
|
],
|
|
"format": "int32"
|
|
},
|
|
"detail": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"instance": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"errors": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"VideoScanKind": {
|
|
"enum": [
|
|
"Unknown",
|
|
"Progressive",
|
|
"Interlaced"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"WatermarkFullResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"mode",
|
|
"imageSource",
|
|
"image",
|
|
"imageContentType",
|
|
"location",
|
|
"size",
|
|
"width",
|
|
"horizontalMargin",
|
|
"verticalMargin",
|
|
"frequencyMinutes",
|
|
"durationSeconds",
|
|
"opacity",
|
|
"opacityExpression",
|
|
"zIndex",
|
|
"placeWithinSourceContent"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/ChannelWatermarkMode"
|
|
},
|
|
"imageSource": {
|
|
"$ref": "#/components/schemas/ChannelWatermarkImageSource"
|
|
},
|
|
"image": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"imageContentType": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"location": {
|
|
"$ref": "#/components/schemas/WatermarkLocation"
|
|
},
|
|
"size": {
|
|
"$ref": "#/components/schemas/WatermarkSize"
|
|
},
|
|
"width": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"horizontalMargin": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"verticalMargin": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"frequencyMinutes": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"durationSeconds": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"opacity": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"opacityExpression": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
]
|
|
},
|
|
"zIndex": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"placeWithinSourceContent": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"WatermarkLocation": {
|
|
"enum": [
|
|
"BottomRight",
|
|
"BottomLeft",
|
|
"TopRight",
|
|
"TopLeft",
|
|
"TopMiddle",
|
|
"RightMiddle",
|
|
"BottomMiddle",
|
|
"LeftMiddle",
|
|
"MiddleCenter"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"WatermarkResponseModel": {
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"WatermarkSize": {
|
|
"enum": [
|
|
"Scaled",
|
|
"ActualSize"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"XmltvBlockBehavior": {
|
|
"enum": [
|
|
"SplitTimeEvenly",
|
|
"UseActualTimes"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"XmltvSettingsResponseModel": {
|
|
"required": [
|
|
"daysToBuild",
|
|
"timeZone",
|
|
"blockBehavior"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"daysToBuild": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"timeZone": {
|
|
"$ref": "#/components/schemas/XmltvTimeZone"
|
|
},
|
|
"blockBehavior": {
|
|
"$ref": "#/components/schemas/XmltvBlockBehavior"
|
|
}
|
|
}
|
|
},
|
|
"XmltvTimeZone": {
|
|
"enum": [
|
|
"Local",
|
|
"Utc"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"securitySchemes": {
|
|
"ApiKey": {
|
|
"type": "apiKey",
|
|
"description": "API key sent in the 'X-Api-Key' request header. Required for all mutating requests and, under the default posture (Api:RequireKeyForReads=true), for reads as well.",
|
|
"name": "X-Api-Key",
|
|
"in": "header"
|
|
}
|
|
}
|
|
},
|
|
"tags": [
|
|
{
|
|
"name": "Artists"
|
|
},
|
|
{
|
|
"name": "Artwork"
|
|
},
|
|
{
|
|
"name": "Blocks"
|
|
},
|
|
{
|
|
"name": "Channel"
|
|
},
|
|
{
|
|
"name": "Channels"
|
|
},
|
|
{
|
|
"name": "Channel Templates"
|
|
},
|
|
{
|
|
"name": "Collections"
|
|
},
|
|
{
|
|
"name": "Decos"
|
|
},
|
|
{
|
|
"name": "DecoTemplates"
|
|
},
|
|
{
|
|
"name": "Emby"
|
|
},
|
|
{
|
|
"name": "FFmpeg Profiles"
|
|
},
|
|
{
|
|
"name": "Filler Presets"
|
|
},
|
|
{
|
|
"name": "Graphics Elements"
|
|
},
|
|
{
|
|
"name": "Health"
|
|
},
|
|
{
|
|
"name": "Images"
|
|
},
|
|
{
|
|
"name": "Jellyfin"
|
|
},
|
|
{
|
|
"name": "Languages"
|
|
},
|
|
{
|
|
"name": "Libraries"
|
|
},
|
|
{
|
|
"name": "Logs"
|
|
},
|
|
{
|
|
"name": "Maintenance"
|
|
},
|
|
{
|
|
"name": "Media Items"
|
|
},
|
|
{
|
|
"name": "Media Sources"
|
|
},
|
|
{
|
|
"name": "Movies"
|
|
},
|
|
{
|
|
"name": "Multi Collections"
|
|
},
|
|
{
|
|
"name": "Playlists"
|
|
},
|
|
{
|
|
"name": "Playouts"
|
|
},
|
|
{
|
|
"name": "Plex"
|
|
},
|
|
{
|
|
"name": "Rerun Collections"
|
|
},
|
|
{
|
|
"name": "Settings"
|
|
},
|
|
{
|
|
"name": "Schedules"
|
|
},
|
|
{
|
|
"name": "Search"
|
|
},
|
|
{
|
|
"name": "Television"
|
|
},
|
|
{
|
|
"name": "Sessions"
|
|
},
|
|
{
|
|
"name": "Smart Collections"
|
|
},
|
|
{
|
|
"name": "Templates"
|
|
},
|
|
{
|
|
"name": "Trakt"
|
|
},
|
|
{
|
|
"name": "Troubleshooting"
|
|
},
|
|
{
|
|
"name": "Version"
|
|
},
|
|
{
|
|
"name": "Watermarks"
|
|
}
|
|
]
|
|
} |