// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs

import "github.com/swaggo/swag"

const docTemplate = `{
    "schemes": {{ marshal .Schemes }},
    "swagger": "2.0",
    "info": {
        "description": "{{escape .Description}}",
        "title": "{{.Title}}",
        "contact": {
            "name": "Repository",
            "url": "https://github.com/zoriya/kyoo"
        },
        "license": {
            "name": "GPL-3.0",
            "url": "https://www.gnu.org/licenses/gpl-3.0.en.html"
        },
        "version": "{{.Version}}"
    },
    "host": "{{.Host}}",
    "basePath": "{{.BasePath}}",
    "paths": {
        "/:path/attachment/:name": {
            "get": {
                "description": "Get a specific attachment.",
                "tags": [
                    "metadata"
                ],
                "summary": "Get attachments",
                "parameters": [
                    {
                        "type": "string",
                        "format": "base64",
                        "example": "L3ZpZGVvL2J1YmJsZS5ta3YK",
                        "description": "Base64 of a video's path",
                        "name": "path",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "example": "font.ttf",
                        "description": "Name of the attachment",
                        "name": "name",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Requested attachment",
                        "schema": {
                            "type": "file"
                        }
                    }
                }
            }
        },
        "/:path/direct": {
            "get": {
                "description": "Retrieve the raw video stream, in the same container as the one on the server.\nNo transcoding or transmuxing is done.",
                "tags": [
                    "streams"
                ],
                "summary": "Direct video",
                "parameters": [
                    {
                        "type": "string",
                        "format": "base64",
                        "example": "L3ZpZGVvL2J1YmJsZS5ta3YK",
                        "description": "Base64 of a video's path",
                        "name": "path",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "example": "bubble.mkv",
                        "description": "anything, this can be used for the automatic file name when downloading from the browser",
                        "name": "identifier",
                        "in": "path"
                    }
                ],
                "responses": {
                    "206": {
                        "description": "Video file (supports byte-requests)",
                        "schema": {
                            "type": "file"
                        }
                    }
                }
            }
        },
        "/:path/info": {
            "get": {
                "description": "Identify metadata about a file.",
                "tags": [
                    "metadata"
                ],
                "summary": "Identify",
                "parameters": [
                    {
                        "type": "string",
                        "format": "base64",
                        "example": "L3ZpZGVvL2J1YmJsZS5ta3YK",
                        "description": "Base64 of a video's path",
                        "name": "path",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Metadata info of the video.",
                        "schema": {
                            "$ref": "#/definitions/src.MediaInfo"
                        }
                    }
                }
            }
        },
        "/:path/master.m3u8": {
            "get": {
                "description": "Get a master playlist containing all possible video qualities and audios available for this resource.\nNote that the direct stream is missing (since the direct is not an hls stream) and\nsubtitles/fonts are not included to support more codecs than just webvtt.",
                "tags": [
                    "streams"
                ],
                "summary": "Get master playlist",
                "parameters": [
                    {
                        "type": "string",
                        "format": "base64",
                        "example": "L3ZpZGVvL2J1YmJsZS5ta3YK",
                        "description": "Base64 of a video's path",
                        "name": "path",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Master playlist with all available stream qualities",
                        "schema": {
                            "type": "file"
                        }
                    }
                }
            }
        },
        "/:path/subtitle/:name": {
            "get": {
                "description": "Get a specific subtitle.",
                "tags": [
                    "metadata"
                ],
                "summary": "Get subtitle",
                "parameters": [
                    {
                        "type": "string",
                        "format": "base64",
                        "example": "L3ZpZGVvL2J1YmJsZS5ta3YK",
                        "description": "Base64 of a video's path",
                        "name": "path",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "example": "en.srt",
                        "description": "Name of the subtitle",
                        "name": "name",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Requested subtitle",
                        "schema": {
                            "type": "file"
                        }
                    }
                }
            }
        },
        "/:path/thumbnails.png": {
            "get": {
                "description": "Get a sprite file containing all the thumbnails of the show.",
                "tags": [
                    "metadata"
                ],
                "summary": "Get thumbnail sprite",
                "parameters": [
                    {
                        "type": "string",
                        "format": "base64",
                        "example": "L3ZpZGVvL2J1YmJsZS5ta3YK",
                        "description": "Base64 of a video's path",
                        "name": "path",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "sprite",
                        "schema": {
                            "type": "file"
                        }
                    }
                }
            }
        },
        "/:path/thumbnails.vtt": {
            "get": {
                "description": "Get a vtt file containing timing/position of thumbnails inside the sprite file.\nhttps://developer.bitmovin.com/playback/docs/webvtt-based-thumbnails for more info.",
                "tags": [
                    "metadata"
                ],
                "summary": "Get thumbnail vtt",
                "parameters": [
                    {
                        "type": "string",
                        "format": "base64",
                        "example": "L3ZpZGVvL2J1YmJsZS5ta3YK",
                        "description": "Base64 of a video's path",
                        "name": "path",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "sprite",
                        "schema": {
                            "type": "file"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "src.Audio": {
            "type": "object",
            "properties": {
                "bitrate": {
                    "description": "/ The average bitrate of the audio in bytes/s",
                    "type": "integer"
                },
                "codec": {
                    "description": "/ The human readable codec name.",
                    "type": "string"
                },
                "index": {
                    "description": "/ The index of this track on the media.",
                    "type": "integer"
                },
                "isDefault": {
                    "description": "/ Is this stream the default one of it's type?",
                    "type": "boolean"
                },
                "isForced": {
                    "description": "TODO: remove this in next major",
                    "type": "boolean"
                },
                "language": {
                    "description": "/ The language of this stream (as a IETF-BCP-47 language code)",
                    "type": "string"
                },
                "mimeCodec": {
                    "description": "/ The codec of this stream (defined as the RFC 6381).",
                    "type": "string"
                },
                "title": {
                    "description": "/ The title of the stream.",
                    "type": "string"
                }
            }
        },
        "src.Chapter": {
            "type": "object",
            "properties": {
                "endTime": {
                    "description": "/ The end time of the chapter (in second from the start of the episode).",
                    "type": "number"
                },
                "name": {
                    "description": "/ The name of this chapter. This should be a human-readable name that could be presented to the user.",
                    "type": "string"
                },
                "startTime": {
                    "description": "/ The start time of the chapter (in second from the start of the episode).",
                    "type": "number"
                },
                "type": {
                    "description": "/ The type value is used to mark special chapters (openning/credits...)",
                    "allOf": [
                        {
                            "$ref": "#/definitions/src.ChapterType"
                        }
                    ]
                }
            }
        },
        "src.ChapterType": {
            "type": "string",
            "enum": [
                "content",
                "recap",
                "intro",
                "credits",
                "preview"
            ],
            "x-enum-varnames": [
                "Content",
                "Recap",
                "Intro",
                "Credits",
                "Preview"
            ]
        },
        "src.MediaInfo": {
            "type": "object",
            "properties": {
                "audios": {
                    "description": "/ The list of audio tracks.",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/src.Audio"
                    }
                },
                "chapters": {
                    "description": "/ The list of chapters. See Chapter for more information.",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/src.Chapter"
                    }
                },
                "container": {
                    "description": "/ The container of the video file of this episode.",
                    "type": "string"
                },
                "duration": {
                    "description": "/ The length of the media in seconds.",
                    "type": "number"
                },
                "extension": {
                    "description": "/ The extension currently used to store this video file",
                    "type": "string"
                },
                "fonts": {
                    "description": "/ The list of fonts that can be used to display subtitles.",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "mimeCodec": {
                    "description": "/ The whole mimetype (defined as the RFC 6381). ex: ` + "`" + `video/mp4; codecs=\"avc1.640028, mp4a.40.2\"` + "`" + `",
                    "type": "string"
                },
                "path": {
                    "description": "/ The internal path of the video file.",
                    "type": "string"
                },
                "sha": {
                    "description": "The sha1 of the video file.",
                    "type": "string"
                },
                "size": {
                    "description": "/ The file size of the video file.",
                    "type": "integer"
                },
                "subtitles": {
                    "description": "/ The list of subtitles tracks.",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/src.Subtitle"
                    }
                },
                "versions": {
                    "description": "/ Version of the metadata. This can be used to invalidate older metadata from db if the extraction code has changed.",
                    "allOf": [
                        {
                            "$ref": "#/definitions/src.Versions"
                        }
                    ]
                },
                "video": {
                    "description": "TODO: remove on next major",
                    "allOf": [
                        {
                            "$ref": "#/definitions/src.Video"
                        }
                    ]
                },
                "videos": {
                    "description": "/ The list of videos if there are multiples.",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/src.Video"
                    }
                }
            }
        },
        "src.Subtitle": {
            "type": "object",
            "properties": {
                "codec": {
                    "description": "/ The codec of this stream.",
                    "type": "string"
                },
                "extension": {
                    "description": "/ The extension for the codec.",
                    "type": "string"
                },
                "index": {
                    "description": "/ The index of this track on the media.",
                    "type": "integer"
                },
                "isDefault": {
                    "description": "/ Is this stream the default one of it's type?",
                    "type": "boolean"
                },
                "isExternal": {
                    "description": "/ Is this an external subtitle (as in stored in a different file)",
                    "type": "boolean"
                },
                "isForced": {
                    "description": "/ Is this stream tagged as forced?",
                    "type": "boolean"
                },
                "isHearingImpaired": {
                    "description": "/ Is this stream tagged as hearing impaired?",
                    "type": "boolean"
                },
                "language": {
                    "description": "/ The language of this stream (as a IETF-BCP-47 language code)",
                    "type": "string"
                },
                "link": {
                    "description": "/ The link to access this subtitle.",
                    "type": "string"
                },
                "path": {
                    "description": "/ Where the subtitle is stored (null if stored inside the video)",
                    "type": "string"
                },
                "title": {
                    "description": "/ The title of the stream.",
                    "type": "string"
                }
            }
        },
        "src.Versions": {
            "type": "object",
            "properties": {
                "extract": {
                    "type": "integer"
                },
                "info": {
                    "type": "integer"
                },
                "keyframes": {
                    "type": "integer"
                },
                "thumbs": {
                    "type": "integer"
                }
            }
        },
        "src.Video": {
            "type": "object",
            "properties": {
                "bitrate": {
                    "description": "/ The average bitrate of the video in bytes/s",
                    "type": "integer"
                },
                "codec": {
                    "description": "/ The human readable codec name.",
                    "type": "string"
                },
                "height": {
                    "description": "/ The height of the video stream",
                    "type": "integer"
                },
                "index": {
                    "description": "/ The index of this track on the media.",
                    "type": "integer"
                },
                "isDefault": {
                    "description": "/ Is this stream the default one of it's type?",
                    "type": "boolean"
                },
                "language": {
                    "description": "/ The language of this stream (as a ISO-639-2 language code)",
                    "type": "string"
                },
                "mimeCodec": {
                    "description": "/ The codec of this stream (defined as the RFC 6381).",
                    "type": "string"
                },
                "title": {
                    "description": "/ The title of the stream.",
                    "type": "string"
                },
                "width": {
                    "description": "/ The width of the video stream",
                    "type": "integer"
                }
            }
        }
    },
    "securityDefinitions": {
        "Jwt": {
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        },
        "Token": {
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        }
    }
}`

// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
	Version:          "1.0",
	Host:             "kyoo.zoriya.dev",
	BasePath:         "/video",
	Schemes:          []string{},
	Title:            "gocoder - Kyoo's transcoder",
	Description:      "Real time transcoder.",
	InfoInstanceName: "swagger",
	SwaggerTemplate:  docTemplate,
	LeftDelim:        "{{",
	RightDelim:       "}}",
}

func init() {
	swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}
