You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
YoutubeDL-Material/Public API v1.yaml

3166 lines
80 KiB
YAML

openapi: 3.0.0
info:
title: YoutubeDL-Material API Docs - Official
version: '1.0'
description: "Welcome to the official docs for YoutubeDL-Material.\n\n\nYou can check out all the available endpoints. Remember to authenticate with your API key using the \"apiKey\" query parameter with your requests.\n\n\nTo do so, simply add this to the end of your API call:\n\n\n`?apiKey=API_KEY`\n\n\nReplce API_KEY with the API key in the settings menu. If one doesn't exist, click generate to create one.\n\n### Multi-user mode\n\nWhen using multi-user mode, you will need to supply a JWT token to authenticate requests through that user. This lets the server know which user to run the task for, like downloading a video for a specific user. \n\nTo do this, you must use the `/api/auth/login` endpoint to login using a user's username and password. This will result in an object containing a `token`. Supply this along with your API key like so:\n\n`?apiKey=API_KEY&jwt=JWT_TOKEN`\n\nNotice the `&` between the `API_KEY` and `jwt`."
contact:
name: Isaac Abadi
url: https://github.com/Tzahi12345/YoutubeDL-Material
email: IsaacMGrynsztein@gmail.com
servers:
- url: 'http://localhost:17442'
paths:
/api/downloadFile:
post:
tags:
- downloader
summary: Download video file
description: |-
Downloads a file with the given URL. Will include global args if they exist.
HTTP requests will return once the video file download completes. In the future, it will (by default) return once the download starts, and a separate API call will be used for checking the download status.
operationId: post-tomp4
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadResponse'
'500':
description: Server download error
security:
- Auth query parameter: []
/api/generateArgs:
post:
tags:
- downloader
summary: Generates arguments used to download file
description: Generates args, used for checking what args would run if you ran downloadFile
operationId: post-generateArgs
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateArgsResponse'
security:
- Auth query parameter: []
/api/getMp3s:
get:
tags:
- files
summary: Get all mp3 files
description: Gets all mp3 files and audio playlists stored in the db
operationId: get-getMp3s
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetMp3sResponse'
security:
- Auth query parameter: []
/api/getMp4s:
get:
tags:
- files
summary: Get all mp4 files
description: Gets all mp4 files and video playlists stored in the db
operationId: get-getMp4s
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetMp4sResponse'
security:
- Auth query parameter: []
/api/getAllFiles:
post:
tags:
- files
summary: Get all files
description: Gets all files and playlists stored in the db
operationId: get-getAllFiles
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllFilesRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllFilesResponse'
security:
- Auth query parameter: []
/api/rss:
get:
tags:
- files
summary: Generates an RSS feed
description: Generates an RSS feed for downloaded files
operationId: get-rss
parameters:
- in: query
name: params
schema:
allOf:
- $ref: '#/components/schemas/GetAllFilesRequest'
- type: object
properties:
uuid:
type: string
description: user uid
default: null
style: form
explode: true
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
description: RSS feed
security:
- Auth query parameter: []
/api/getFile:
post:
tags:
- files
summary: Get file database object
description: Gets a file db object by its uid and type. Type will be found if not provided
operationId: post-getFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetFileRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetFileResponse'
'401':
description: User is not authorized to view the file.
security:
- Auth query parameter: []
/api/updateFile:
post:
tags:
- files
summary: Updates file database object
description: Updates a file db object using its uid and a change object.
operationId: post-updateFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFileRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/enableSharing:
post:
tags:
- files
- playlists
summary: Enable sharing
description: Enables sharing for a video or playlist
operationId: post-enableSharing
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SharingToggle'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/disableSharing:
post:
tags:
- files
- playlists
summary: Disable sharing
description: Disables sharing for a video or playlist
operationId: post-disableSharing
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SharingToggle'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/incrementViewCount:
post:
summary: Increments a file's view count
tags:
- files
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IncrementViewCountRequest'
operationId: post-api-incrementViewCount
description: Increments a file's view count
security:
- Auth query parameter: []
/api/subscribe:
post:
tags:
- subscriptions
summary: Subscribe to channel or playlist
description: Allows you to subscribe to channels and playlists. Name is optional (will use the channel/playlist name)
operationId: post-api-subscribe
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SubscribeRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SubscribeResponse'
security:
- Auth query parameter: []
/api/unsubscribe:
post:
tags:
- subscriptions
summary: Unsubscribe from channel or playlist
description: Unsubscribes from a subscription
operationId: post-api-unsubscribe
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UnsubscribeRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UnsubscribeResponse'
security:
- Auth query parameter: []
/api/deleteSubscriptionFile:
post:
tags:
- subscriptions
summary: Delete video from subscription
description: Deletes a file from a subscription
operationId: post-api-deleteSubscriptionFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteSubscriptionFileRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
'500':
description: Internal Server Error
security:
- Auth query parameter: []
/api/getSubscription:
post:
tags:
- subscriptions
summary: Get subscription
description: Gets a subscription from its ID
operationId: post-api-getSubscription
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetSubscriptionRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetSubscriptionResponse'
security:
- Auth query parameter: []
/api/downloadVideosForSubscription:
post:
tags:
- subscriptions
summary: Download videos for subscription
description: 'Manually check the subscription for new videos. When used on newly created subscriptions, it will grab all possible videos'
operationId: post-api-downloadVideosForSubscription
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadVideosForSubscriptionRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/getSubscriptions:
post:
tags:
- subscriptions
summary: Get all subscriptions
operationId: post-api-getSubscriptions
requestBody:
content:
application/json:
schema:
type: object
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllSubscriptionsResponse'
security:
- Auth query parameter: []
/api/createPlaylist:
post:
tags:
- playlists
summary: Create a playlist
description: Creates a playlist from existing downloaded videos
operationId: post-api-createPlaylist
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePlaylistRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePlaylistResponse'
security:
- Auth query parameter: []
/api/getPlaylist:
post:
tags:
- playlists
summary: Get playlist
description: Gets a playlist object from the database from its ID
operationId: post-api-getPlaylist
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetPlaylistRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetPlaylistResponse'
security:
- Auth query parameter: []
/api/updatePlaylist:
post:
tags:
- playlists
summary: Update playlist
description: Updates the playlist object
operationId: post-api-updatePlaylist
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePlaylistRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/deletePlaylist:
post:
tags:
- playlists
summary: Delete playlist
description: Deletes a playlist from the database by its ID
operationId: post-api-deletePlaylist
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeletePlaylistRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/addFileToPlaylist:
post:
tags:
- playlists
summary: Adds a file to a playlist
description: Adds a file to a playlist
operationId: post-api-addFileToPlaylist
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddFileToPlaylistRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/deleteMp4:
post:
tags:
- files
summary: Delete mp4 file
description: Deletes an mp4 file by its uid
operationId: post-api-deleteMp4
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteMp3Mp4Request'
responses:
'200':
description: OK
content:
application/json:
schema:
type: boolean
description: Whether the operation succeeded
security:
- Auth query parameter: []
/api/downloadFileFromServer:
post:
tags:
- files
summary: Download downloaded file from server
operationId: post-api-downloadFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadFileRequest'
responses:
'200':
description: 'The file itself is in the response, as well as an options object.'
'401':
description: User is not authorized to view the file.
security:
- Auth query parameter: []
/api/deleteFile:
post:
tags:
- files
summary: Delete downloaded file
operationId: post-api-deleteFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteMp3Mp4Request'
responses:
'200':
description: OK
security:
- Auth query parameter: []
/api/deleteAllFiles:
post:
tags:
- files
summary: Delete all downloaded files
operationId: post-api-deleteAllFiles
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteMp3Mp4Request'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteAllFilesResponse'
security:
- Auth query parameter: []
/api/downloadArchive:
post:
tags:
- subscriptions
summary: Download subscription archive
description: Downloads the archive file of a subscription
operationId: post-api-downloadArchive
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadArchiveRequest'
responses:
'200':
description: The archive text file is sent as a response
'404':
description: If the archive dir is not found, 404 is sent as a response
security:
- Auth query parameter: []
/api/deleteArchiveItems:
post:
tags:
- archive
summary: Delete item from archive
description: 'Deletes an item from the archive'
operationId: post-api-deleteArchiveItems
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteArchiveItemsRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/importArchive:
post:
tags:
- archive
summary: Imports archive
description: 'Imports an existing archive.txt file'
operationId: post-api-importArchive
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ImportArchiveRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/uploadCookies:
post:
tags:
- downloader
summary: Upload cookies
description: 'Uploads cookies file to be used during downloading'
operationId: post-api-uploadCookies
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadCookiesRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/updaterStatus:
get:
tags:
- updating
summary: Get updater status
description: Gets the status of an update that is in progress
operationId: get-api-updaterStatus
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UpdaterStatus'
security:
- Auth query parameter: []
/api/updateServer:
post:
tags:
- updating
summary: Update server
description: 'Updates the server. If no tag is provided, the latest version will be used.'
operationId: post-api-updateServer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateServerRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/isPinSet:
post:
tags:
- security
summary: Check if pin is set
description: Checks if the pin is set for settings
operationId: post-api-isPinSet
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_15'
security:
- Auth query parameter: []
/api/generateNewAPIKey:
post:
tags:
- security
summary: Generate new API key
description: Generates and sets a new API key
operationId: post-genapikey
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateNewApiKeyResponse'
security:
- Auth query parameter: []
/api/deleteMp3:
post:
tags:
- files
summary: Delete mp3 file
description: Deletes an mp3 file by its uid
operationId: post-api-deleteMp3
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteMp3Mp4Request'
responses:
'200':
description: OK
content:
application/json:
schema:
type: boolean
description: Whether the operation succeeded
security:
- Auth query parameter: []
/api/config:
get:
tags: []
summary: Get config
description: "Gets the config file stored in 'default.json'"
operationId: get-config
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigResponse'
security:
- Auth query parameter: []
/api/setConfig:
post:
summary: Set config
description: "Sets the 'default.json' config file to the 'new_config_file' object"
operationId: post-api-setConfig
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SetConfigRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
'404':
description: Tried to save invalid config file.
security:
- Auth query parameter: []
/api/downloads:
post:
summary: Get info for all downloads
tags:
- downloader
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllDownloadsResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllDownloadsRequest'
operationId: post-api-downloads
description: Retrieves all downloads recorded by the server and their status.
security:
- Auth query parameter: []
/api/download:
post:
summary: Get info for one download
operationId: post-api-download
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetDownloadResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetDownloadRequest'
description: ''
description: "Gets a single download using its download_id."
security:
- Auth query parameter: []
tags:
- downloader
/api/pauseDownload:
post:
summary: Pauses one download
operationId: post-api-pause-download
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetDownloadRequest'
description: ''
description: "Pause a single download using its download_id."
security:
- Auth query parameter: []
tags:
- downloader
/api/pauseAllDownloads:
post:
tags:
- downloader
summary: Pauses all downloads
operationId: post-api-pause-all-downloads
requestBody:
content:
application/json:
schema:
type: object
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/resumeDownload:
post:
summary: Resume one download
operationId: post-api-resume-download
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetDownloadRequest'
description: ''
description: "Resume a single download using its download_id."
security:
- Auth query parameter: []
tags:
- downloader
/api/resumeAllDownloads:
post:
tags:
- downloader
summary: Resumes all downloads
operationId: post-api-resume-all-downloads
requestBody:
content:
application/json:
schema:
type: object
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/restartDownload:
post:
summary: Restart one download
operationId: post-api-restart-download
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RestartDownloadResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetDownloadRequest'
description: ''
description: "Restart a single download using its download_id."
security:
- Auth query parameter: []
tags:
- downloader
/api/cancelDownload:
post:
summary: Cancel one download
operationId: post-api-cancel-download
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetDownloadRequest'
description: ''
description: "Cancel a single download using its download_id."
security:
- Auth query parameter: []
tags:
- downloader
/api/clearDownload:
post:
summary: Clear one download
operationId: post-api-clear-download
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetDownloadRequest'
description: ''
description: "Clears a single download from the downloaded list using its download_id."
security:
- Auth query parameter: []
tags:
- downloader
/api/clearDownloads:
post:
summary: Clear multiple downloads
operationId: post-api-clear-downloads
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ClearDownloadsRequest'
description: ''
description: "Clears multiple downloads based on a given filter."
security:
- Auth query parameter: []
tags:
- downloader
/api/getTask:
post:
summary: Get info for one task
operationId: post-api-get-task
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetTaskResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetTaskRequest'
description: ''
description: "Gets a single task using its key."
security:
- Auth query parameter: []
tags:
- tasks
/api/getTasks:
post:
tags:
- tasks
summary: Get tasks
operationId: post-api-get-tasks
requestBody:
content:
application/json:
schema:
type: object
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllTasksResponse'
/api/resetTasks:
post:
tags:
- tasks
summary: Resets all tasks
operationId: post-api-reset-tasks
requestBody:
content:
application/json:
schema:
type: object
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/runTask:
post:
tags:
- tasks
summary: Runs one task
operationId: post-api-run-task
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetTaskRequest'
/api/confirmTask:
post:
tags:
- tasks
summary: Confirms a task
operationId: post-api-confirm-task
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetTaskRequest'
/api/cancelTask:
post:
tags:
- tasks
summary: Cancels a task
operationId: post-api-cancel-task
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetTaskRequest'
/api/updateTaskSchedule:
post:
tags:
- tasks
summary: Updates task schedule
operationId: post-api-update-task-schedule
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTaskScheduleRequest'
/api/updateTaskData:
post:
tags:
- tasks
summary: Updates task data
operationId: post-api-update-task-data
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTaskDataRequest'
/api/getDBBackups:
post:
tags:
- tasks
summary: Get database backups
operationId: post-api-get-database-backups
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetDBBackupsResponse'
requestBody:
content:
application/json:
schema:
type: object
/api/restoreDBBackup:
post:
tags:
- tasks
summary: Restore database backup
operationId: post-api-restore-database-backup
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RestoreDBBackupRequest'
/api/auth/login:
post:
summary: Login
operationId: post-api-auth-login
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LoginResponse'
description: Use this method to log into a user using their username and password and receive a jwt auth token so you can send per-user requests.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LoginRequest'
security:
- Auth query parameter: []
tags:
- multi-user mode
/api/auth/register:
post:
summary: Register
operationId: post-api-auth-register
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterResponse'
description: Use this endpoint to register a user. It will only work if registration is enabled.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterRequest'
security:
- Auth query parameter: []
tags:
- multi-user mode
/api/updateUser:
post:
summary: Update user
operationId: post-api-updateUser
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUserRequest'
description: Updates certain properties for a user. Only two are possible right now.
security:
- Auth query parameter: []
tags:
- multi-user mode
/api/deleteUser:
post:
summary: Delete user
operationId: post-api-deleteUser
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
description: Deletes a user by its uid.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteUserRequest'
security:
- Auth query parameter: []
tags:
- multi-user mode
/api/getRoles:
post:
summary: Get available roles
operationId: post-api-getRoles
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetRolesResponse'
description: Gets the available roles and their permissions
security:
- Auth query parameter: []
tags:
- multi-user mode
/api/changeUserPermissions:
post:
summary: Change user permissions
operationId: post-api-changeUserPermissions
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
description: "Changes the permissions for a user. Available values for each permission are: `default`, `yes`, and `no`. `default` will use the user's role's default permission."
security:
- Auth query parameter: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeUserPermissionsRequest'
tags:
- multi-user mode
/api/changeRolePermissions:
post:
summary: Change role permissions
operationId: post-api-changeRolePermissions
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeRolePermissionsRequest'
description: 'Changes the permissions for a role. Available values for each permission are: `yes`, and `no`.'
security:
- Auth query parameter: []
tags:
- multi-user mode
/api/getUsers:
post:
summary: Get all users
operationId: post-api-getUsers
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetUsersResponse'
description: 'Gets all users, returns a list of the user objects including their user permissions, videos, playlists, subscriptions, etc.'
security:
- Auth query parameter: []
tags:
- multi-user mode
/api/versionInfo:
get:
tags:
- server
summary: Gets server version info
operationId: get-api-versionInfo
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/VersionInfoResponse'
security:
- Auth query parameter: []
/api/getLogs:
post:
summary: Gets logs from server
tags:
- server
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetLogsResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetLogsRequest'
operationId: post-api-getLogs
description: Gets logs from server
security:
- Auth query parameter: []
/api/clearAllLogs:
post:
summary: Clears the log file
tags:
- server
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
operationId: post-api-clearAllLogs
description: Clears the log file
security:
- Auth query parameter: []
/api/getDBInfo:
get:
tags:
- db
summary: Gets information on the DB
operationId: get-api-getDBInfo
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DBInfoResponse'
security:
- Auth query parameter: []
/api/transferDB:
post:
summary: Transfers DB between Local and MongoDB
tags:
- db
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TransferDBResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransferDBRequest'
operationId: post-api-transferDB
description: Initiates a transfer between Local and MongoDB. Connection string must be set.
security:
- Auth query parameter: []
/api/testConnectionString:
post:
summary: Tests a MongoDB connection string
tags:
- db
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TestConnectionStringResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TestConnectionStringRequest'
operationId: post-api-testConnectionString
description: Tests a MongoDB connection string and returns an error if one exists.
security:
- Auth query parameter: []
/api/getFullTwitchChat:
post:
summary: Gets the downloaded Twitch Chat (VODs only)
tags:
- twitch
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetFullTwitchChatResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GetFullTwitchChatRequest'
operationId: post-api-getFullTwitchChat
description: Gets the downloaded Twitch Chat (VODs only)
security:
- Auth query parameter: []
/api/downloadTwitchChatByVODID:
post:
summary: Downloads Twitch Chat for a VOD
tags:
- twitch
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadTwitchChatByVODIDResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadTwitchChatByVODIDRequest'
operationId: post-api-downloadTwitchChatByVODID
description: Downloads Twitch Chat for a VOD
security:
- Auth query parameter: []
/api/checkConcurrentStream:
post:
summary: Checks status of a concurrent stream
tags:
- player
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CheckConcurrentStreamResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CheckConcurrentStreamRequest'
operationId: post-api-checkConcurrentStream
description: Checks status of a concurrent stream
security:
- Auth query parameter: []
/api/updateConcurrentStream:
post:
summary: Updates a concurrent stream
tags:
- player
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateConcurrentStreamResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateConcurrentStreamRequest'
operationId: post-api-updateConcurrentStream
description: Updates a concurrent stream
security:
- Auth query parameter: []
/api/getAllCategories:
post:
summary: Gets all categories
tags:
- categories
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllCategoriesResponse'
operationId: post-api-getAllCategories
description: Gets all categories
security:
- Auth query parameter: []
/api/createCategory:
post:
summary: Creates a category
tags:
- categories
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCategoryResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCategoryRequest'
operationId: post-api-createCategory
description: Creates a category
security:
- Auth query parameter: []
/api/deleteCategory:
post:
summary: Deletes a category
tags:
- categories
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteCategoryRequest'
operationId: post-api-deleteCategory
description: Deletes a category
security:
- Auth query parameter: []
/api/updateCategory:
post:
summary: Updates a category
tags:
- categories
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCategoryRequest'
operationId: post-api-updateCategory
description: Updates a category
security:
- Auth query parameter: []
/api/updateCategories:
post:
summary: Updates all categories
tags:
- categories
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCategoriesRequest'
operationId: post-api-updateCategories
description: Updates all categories
security:
- Auth query parameter: []
components:
schemas:
SuccessObject:
required:
- success
type: object
properties:
success:
type: boolean
error:
type: string
FileType:
type: string
enum:
- audio
- video
CropFileSettings:
type: object
required:
- cropFileStart
- cropFileEnd
properties:
cropFileStart:
type: number
cropFileEnd:
type: number
Config:
required:
- YoutubeDLMaterial
type: object
properties:
YoutubeDLMaterial:
type: object
DownloadRequest:
required:
- url
type: object
properties:
url:
type: string
customQualityConfiguration:
type: string
description: Video format code. Overrides other quality options.
example: '251'
customArgs:
type: string
description: Custom command-line arguments for youtube-dl. Overrides all other options, except url.
additionalArgs:
type: string
description: Additional command-line arguments for youtube-dl. Added to whatever args would normally be used.
customOutput:
type: string
description: Custom output filename template.
youtubeUsername:
type: string
description: Login with this account ID
youtubePassword:
type: string
description: Account password
selectedHeight:
type: string
description: Height of the video, if known
example: '1080'
maxHeight:
type: string
description: Max height that should be used, useful for playlists. selectedHeight will override this.
example: '1080'
maxBitrate:
type: string
description: Specify ffmpeg/avconv audio quality
example: '160'
type:
$ref: '#/components/schemas/FileType'
cropFileSettings:
$ref: '#/components/schemas/CropFileSettings'
ignoreArchive:
type: boolean
description: If using youtube-dl archive, download will ignore it
DownloadResponse:
type: object
properties:
download:
$ref: '#/components/schemas/Download'
GenerateArgsResponse:
type: object
properties:
args:
type: array
items:
type: string
GetDownloadRequest:
type: object
properties:
download_uid:
type: string
required:
- download_uid
GetDownloadResponse:
type: object
properties:
download:
$ref: '#/components/schemas/Download'
RestartDownloadResponse:
allOf:
- $ref: '#/components/schemas/SuccessObject'
- type: object
properties:
new_download_uid:
type: string
GetAllDownloadsRequest:
type: object
properties:
uids:
type: array
items:
type: string
description: Filters downloads with the array
nullable: true
GetAllDownloadsResponse:
type: object
properties:
downloads:
type: array
items:
$ref: '#/components/schemas/Download'
ClearDownloadsRequest:
type: object
properties:
clear_finished:
type: boolean
clear_paused:
type: boolean
clear_errors:
type: boolean
GetTaskRequest:
type: object
properties:
task_key:
type: string
required:
- task_key
UpdateTaskScheduleRequest:
type: object
properties:
task_key:
type: string
new_schedule:
$ref: '#/components/schemas/Schedule'
required:
- task_key
- new_schedule
UpdateTaskDataRequest:
type: object
properties:
task_key:
type: string
new_data:
type: object
required:
- task_key
- new_data
UpdateTaskOptionsRequest:
type: object
properties:
task_key:
type: string
new_options:
type: object
required:
- task_key
- new_options
GetTaskResponse:
type: object
properties:
task:
$ref: '#/components/schemas/Task'
GetAllTasksResponse:
type: object
properties:
tasks:
type: array
items:
$ref: '#/components/schemas/Task'
GetDBBackupsResponse:
type: object
properties:
tasks:
type: array
items:
$ref: '#/components/schemas/DBBackup'
RestoreDBBackupRequest:
type: object
required:
- file_name
properties:
file_name:
type: string
GetMp3sResponse:
required:
- mp3s
- playlists
type: object
properties:
mp3s:
type: array
items:
$ref: '#/components/schemas/DatabaseFile'
playlists:
type: array
description: All audio playlists
items:
$ref: '#/components/schemas/Playlist'
GetMp4sResponse:
required:
- mp4s
- playlists
type: object
properties:
mp4s:
type: array
items:
$ref: '#/components/schemas/DatabaseFile'
playlists:
type: array
description: All video playlists
items:
$ref: '#/components/schemas/Playlist'
GetAllFilesRequest:
type: object
properties:
sort:
$ref: '#/components/schemas/Sort'
range:
type: array
items:
type: number
description: Two elements allowed, start index and end index
minItems: 2
maxItems: 2
default: null
text_search:
type: string
description: Filter files by title
default: null
file_type_filter:
$ref: '#/components/schemas/FileTypeFilter'
favorite_filter:
type: boolean
description: If set to true, only gets favorites
default: false
sub_id:
type: string
description: Include if you want to filter by subscription
default: null
Sort:
type: object
properties:
by:
type: string
description: Property to sort by
default: registered
order:
type: number
description: 1 for ascending, -1 for descending
default: -1
FileTypeFilter:
type: string
enum:
- audio_only
- video_only
- both
default: both
GetAllFilesResponse:
required:
- files
- playlists
type: object
properties:
files:
type: array
items:
$ref: '#/components/schemas/DatabaseFile'
playlists:
type: array
description: All video playlists
items:
$ref: '#/components/schemas/Playlist'
GetFileRequest:
required:
- uid
type: object
properties:
uid:
type: string
description: Video UID
type:
$ref: '#/components/schemas/FileType'
uuid:
type: string
description: User UID
GetFileResponse:
required:
- success
type: object
properties:
success:
type: boolean
file:
$ref: '#/components/schemas/DatabaseFile'
UpdateFileRequest:
required:
- uid
- change_obj
type: object
properties:
uid:
type: string
description: Video UID
change_obj:
type: object
description: Object with fields to update as keys and their new values
SharingToggle:
required:
- uid
type: object
properties:
uid:
type: string
is_playlist:
type: boolean
SubscribeRequest:
required:
- name
- url
type: object
properties:
name:
type: string
url:
type: string
timerange:
type: string
audioOnly:
type: boolean
customArgs:
type: string
customFileOutput:
type: string
maxQuality:
type: string
SubscribeResponse:
required:
- new_sub
type: object
properties:
new_sub:
$ref: '#/components/schemas/Subscription'
error:
type: string
UnsubscribeRequest:
required:
- sub
type: object
properties:
sub:
$ref: '#/components/schemas/SubscriptionRequestData'
deleteMode:
type: boolean
description: Defaults to false
UnsubscribeResponse:
required:
- success
type: object
properties:
success:
type: boolean
error:
type: string
DeleteAllFilesResponse:
type: object
properties:
file_count:
type: number
description: Number of files found matching search parameters
delete_count:
type: number
description: Number of files removed
DeleteSubscriptionFileRequest:
required:
- file_uid
type: object
properties:
file_uid:
type: string
deleteForever:
type: boolean
description: 'If true, does not remove id from archive. Only valid if youtube-dl archive is enabled in settings.'
GetSubscriptionRequest:
required:
- id
type: object
properties:
id:
type: string
description: Subscription ID
name:
type: string
description: Subscription name
GetSubscriptionResponse:
required:
- files
- subscription
type: object
properties:
subscription:
$ref: '#/components/schemas/Subscription'
files:
type: array
items:
type: object
DownloadVideosForSubscriptionRequest:
required:
- subID
type: object
properties:
subID:
type: string
GetAllSubscriptionsResponse:
required:
- subscriptions
type: object
properties:
subscriptions:
type: array
items:
$ref: '#/components/schemas/Subscription'
CreatePlaylistRequest:
required:
- uids
- playlistName
- thumbnailURL
type: object
properties:
playlistName:
type: string
uids:
type: array
items:
type: string
thumbnailURL:
type: string
CreatePlaylistResponse:
required:
- new_playlist
- success
type: object
properties:
new_playlist:
$ref: '#/components/schemas/Playlist'
success:
type: boolean
GetPlaylistRequest:
required:
- playlist_id
type: object
properties:
playlist_id:
type: string
type:
$ref: '#/components/schemas/FileType'
uuid:
type: string
include_file_metadata:
type: boolean
GetPlaylistResponse:
required:
- playlist
- success
type: object
properties:
playlist:
$ref: '#/components/schemas/Playlist'
success:
type: boolean
file_objs:
type: array
description: File objects for every uid in the playlist's uids property, in the same order
items:
$ref: '#/components/schemas/DatabaseFile'
GetPlaylistsRequest:
type: object
properties:
include_categories:
type: boolean
GetPlaylistsResponse:
required:
- playlists
type: object
properties:
playlists:
type: array
items:
$ref: '#/components/schemas/Playlist'
UpdatePlaylistRequest:
required:
- playlist
type: object
properties:
playlist:
$ref: '#/components/schemas/Playlist'
DeletePlaylistRequest:
required:
- playlist_id
type: object
properties:
playlist_id:
type: string
DownloadFileRequest:
type: object
properties:
uid:
type: string
uuid:
type: string
sub_id:
type: string
playlist_id:
type: string
url:
type: string
type:
$ref: '#/components/schemas/FileType'
DownloadArchiveRequest:
type: object
properties:
type:
$ref: '#/components/schemas/FileType'
sub_id:
type: string
Archive:
required:
- extractor
- id
- type
- title
- timestamp
- uid
type: object
properties:
extractor:
type: string
id:
type: string
type:
$ref: '#/components/schemas/FileType'
title:
type: string
user_uid:
type: string
sub_id:
type: string
timestamp:
type: number
uid:
type: string
DeleteArchiveItemsRequest:
type: object
required:
- archives
properties:
archives:
type: array
items:
$ref: '#/components/schemas/Archive'
ImportArchiveRequest:
type: object
required:
- archive
- type
properties:
archive:
type: string
type:
$ref: '#/components/schemas/FileType'
sub_id:
type: string
GetArchivesRequest:
type: object
properties:
type:
$ref: '#/components/schemas/FileType'
sub_id:
type: string
GetArchivesResponse:
type: object
required:
- archives
properties:
archives:
type: array
items:
$ref: '#/components/schemas/Archive'
UploadCookiesRequest:
type: object
required:
- cookies
properties:
cookies:
type: string
format: binary
UpdaterStatus:
required:
- details
- updating
type: object
properties:
updating:
type: boolean
details:
type: string
error:
type: boolean
UpdateServerRequest:
required:
- tag
type: object
properties:
tag:
type: string
DBInfoResponse:
type: object
properties:
using_local_db:
type: boolean
stats_by_table:
type: object
properties:
files:
$ref: '#/components/schemas/TableInfo'
playlists:
$ref: '#/components/schemas/TableInfo'
categories:
$ref: '#/components/schemas/TableInfo'
subscriptions:
$ref: '#/components/schemas/TableInfo'
users:
$ref: '#/components/schemas/TableInfo'
roles:
$ref: '#/components/schemas/TableInfo'
download_queue:
$ref: '#/components/schemas/TableInfo'
archives:
$ref: '#/components/schemas/TableInfo'
TransferDBResponse:
required:
- success
type: object
properties:
success:
type: boolean
error:
type: string
TransferDBRequest:
required:
- local_to_remote
type: object
properties:
local_to_remote:
description: True if transfering DB from Local to MongoDB, false if transferring DB from MongoDB to Local
type: boolean
TestConnectionStringResponse:
required:
- success
type: object
properties:
success:
type: boolean
error:
type: string
TestConnectionStringRequest:
required:
- connection_string
type: object
properties:
connection_string:
description: MongoDB connection string
type: string
GetFullTwitchChatResponse:
required:
- success
type: object
properties:
success:
type: boolean
error:
type: string
GetFullTwitchChatRequest:
required:
- id
- type
type: object
properties:
id:
description: File ID
type: string
type:
$ref: '#/components/schemas/FileType'
uuid:
description: User UID
type: string
sub:
$ref: '#/components/schemas/Subscription'
DownloadTwitchChatByVODIDResponse:
required:
- chat
type: object
properties:
chat:
type: array
items:
$ref: '#/components/schemas/TwitchChatMessage'
DownloadTwitchChatByVODIDRequest:
required:
- id
- type
- vodId
type: object
properties:
id:
description: File ID
type: string
vodId:
description: ID of the VOD
type: string
type:
$ref: '#/components/schemas/FileType'
uuid:
description: User UID
type: string
sub:
$ref: '#/components/schemas/Subscription'
CheckConcurrentStreamResponse:
required:
- stream
type: object
properties:
stream:
$ref: '#/components/schemas/ConcurrentStream'
CheckConcurrentStreamRequest:
required:
- uid
type: object
properties:
uid:
description: UID of the concurrent stream
type: string
UpdateConcurrentStreamResponse:
required:
- stream
type: object
properties:
stream:
$ref: '#/components/schemas/ConcurrentStream'
UpdateConcurrentStreamRequest:
allOf:
- $ref: '#/components/schemas/ConcurrentStream'
- type: object
properties:
uid:
type: string
description: Concurrent stream UID
required:
- uid
GetLogsResponse:
type: object
properties:
logs:
type: string
description: Number of lines to retrieve from the bottom
success:
type: boolean
GetLogsRequest:
required:
- connection_string
type: object
properties:
lines:
type: number
GetFileFormatsRequest:
type: object
properties:
url:
type: string
GetFileFormatsResponse:
required:
- result
- success
type: object
properties:
success:
type: boolean
result:
allOf:
- type: object
properties:
formats:
type: array
items:
type: object
IncrementViewCountRequest:
required:
- file_uid
type: object
properties:
file_uid:
type: string
sub_id:
type: string
uuid:
type: string
description: User UID
AddFileToPlaylistRequest:
required:
- playlist_id
- file_uid
type: object
properties:
file_uid:
type: string
playlist_id:
type: string
GetAllCategoriesResponse:
required:
- categories
type: object
properties:
categories:
type: array
items:
$ref: '#/components/schemas/Category'
CreateCategoryResponse:
type: object
properties:
new_category:
$ref: '#/components/schemas/Category'
success:
type: boolean
CreateCategoryRequest:
required:
- name
type: object
properties:
name:
type: string
DeleteCategoryRequest:
required:
- category_uid
type: object
properties:
category_uid:
type: string
UpdateCategoryRequest:
required:
- category
type: object
properties:
category:
$ref: '#/components/schemas/Category'
UpdateCategoriesRequest:
required:
- categories
type: object
properties:
categories:
type: array
items:
$ref: '#/components/schemas/Category'
VersionInfoResponse:
required:
- version_info
type: object
properties:
version_info:
$ref: '#/components/schemas/Version'
inline_response_200_15:
required:
- is_set
type: object
properties:
is_set:
type: boolean
body_19:
required:
- input_pin
type: object
properties:
input_pin:
type: string
body_20:
required:
- unhashed_pin
type: object
properties:
unhashed_pin:
type: string
GenerateNewApiKeyResponse:
required:
- new_api_key
type: object
properties:
new_api_key:
type: string
example: 4241b401-7236-493e-92b5-b72696b9d853
DeleteMp3Mp4Request:
required:
- uid
type: object
properties:
uid:
type: string
blacklistMode:
type: boolean
ConfigResponse:
required:
- config_file
- success
type: object
properties:
config_file:
$ref: '#/components/schemas/Config'
success:
type: boolean
SetConfigRequest:
required:
- new_config_file
type: object
properties:
new_config_file:
$ref: '#/components/schemas/Config'
DatabaseFile:
required:
- duration
- id
- isAudio
- path
- size
- thumbnailURL
- title
- uid
- upload_date
- uploader
- url
- favorite
type: object
properties:
id:
type: string
title:
type: string
thumbnailURL:
type: string
description: Backup if thumbnailPath is not defined
thumbnailPath:
type: string
isAudio:
type: boolean
duration:
type: number
description: In seconds
url:
type: string
uploader:
type: string
size:
type: number
description: In bytes
path:
type: string
upload_date:
type: string
uid:
type: string
user_uid:
type: string
sharingEnabled:
type: boolean
category:
$ref: '#/components/schemas/Category'
view_count:
type: number
local_view_count:
type: number
sub_id:
type: string
registered:
type: number
height:
type: number
description: In pixels, only for videos
abr:
type: number
description: In Kbps
favorite:
type: boolean
Playlist:
required:
- uids
- id
- name
- thumbnailURL
- type
- registered
- duration
type: object
properties:
name:
type: string
uids:
type: array
items:
type: string
id:
type: string
thumbnailURL:
type: string
type:
$ref: '#/components/schemas/FileType'
registered:
type: number
duration:
type: number
user_uid:
type: string
auto:
type: boolean
sharingEnabled:
type: boolean
Download:
required:
- url
- type
- title
- options
- uid
- step_index
- paused
- running
- finished_step
- percent_complete
- finished
- timestamp_start
type: object
properties:
uid:
type: string
ui_uid:
type: string
running:
type: boolean
finished:
type: boolean
paused:
type: boolean
finished_step:
type: boolean
url:
type: string
type:
type: string
title:
type: string
step_index:
type: number
percent_complete:
type: number
timestamp_start:
type: number
error:
type: string
description: Error text, set if download fails.
nullable: true
error_type:
type: string
description: Error type, may or may not be set in case of an error
nullable: true
user_uid:
type: string
sub_id:
type: string
sub_name:
type: string
prefetched_info:
type: object
Task:
required:
- key
- last_ran
- last_confirmed
- running
- confirming
- data
- error
- schedule
type: object
properties:
key:
type: string
title:
type: string
last_ran:
type: number
last_confirmed:
type: number
running:
type: boolean
confirming:
type: boolean
data:
type: object
error:
type: string
schedule:
$ref: '#/components/schemas/Schedule'
options:
type: object
Schedule:
required:
- type
- data
type: object
properties:
type:
type: string
enum:
- timestamp
- recurring
data:
type: object
properties:
dayOfWeek:
type: array
items:
type: number
hour:
type: number
minute:
type: number
timestamp:
type: number
tz:
type: string
DBBackup:
required:
- name
- timestamp
- size
- source
type: object
properties:
name:
type: string
timestamp:
type: number
size:
type: number
source:
type: string
enum:
- local
- remote
SubscriptionRequestData:
required:
- id
- name
type: object
properties:
name:
type: string
id:
type: string
type:
$ref: '#/components/schemas/FileType'
isPlaylist:
type: boolean
archive:
type: string
Subscription:
required:
- id
- name
- url
- type
- user_uid
- isPlaylist
- videos
type: object
properties:
name:
type: string
url:
type: string
id:
type: string
type:
$ref: '#/components/schemas/FileType'
user_uid:
type: string
nullable: true
isPlaylist:
type: boolean
archive:
type: string
timerange:
type: string
custom_args:
type: string
custom_output:
type: string
videos:
type: array
items:
type: object
User:
title: user
type: object
properties:
uid:
type: string
name:
type: string
passhash:
type: string
subscriptions:
type: array
items:
$ref: '#/components/schemas/Subscription'
created:
type: number
role:
type: string
permissions:
type: array
items:
$ref: '#/components/schemas/UserPermission'
permission_overrides:
type: array
items:
$ref: '#/components/schemas/UserPermission'
UserPermission:
type: string
enum:
- filemanager
- settings
- subscriptions
- sharing
- advanced_download
- downloads_manager
- tasks_manager
YesNo:
type: string
enum:
- 'yes'
- 'no'
TableInfo:
type: object
properties:
records_count:
type: number
TwitchChatMessage:
type: object
properties:
created_at:
type: string
content_offset_seconds:
type: number
commenter:
type: object
properties:
name:
type: string
_id:
type: string
created_at:
type: string
message:
type: object
properties:
body:
type: string
user_color:
type: string
ConcurrentStream:
type: object
properties:
playback_timestamp:
type: number
unix_timestamp:
type: number
playing:
type: boolean
Category:
type: object
properties:
name:
type: string
uid:
type: string
rules:
type: array
items:
$ref: '#/components/schemas/CategoryRule'
custom_output:
type: string
description: Overrides file output for downloaded files in category
CategoryRule:
type: object
properties:
preceding_operator:
type: string
enum:
- 'or'
- 'and'
comparator:
type: string
enum:
- 'includes'
- 'not_includes'
- 'equals'
- 'not_equals'
Version:
type: object
properties:
type:
type: string
tag:
type: string
commit:
type: string
date:
type: string
Notification:
required:
- uid
- type
- text
- read
- timestamp
type: object
properties:
type:
$ref: '#/components/schemas/NotificationType'
uid:
type: string
user_uid:
type: string
action:
type: array
items:
$ref: '#/components/schemas/NotificationAction'
read:
type: boolean
data:
type: object
timestamp:
type: number
NotificationAction:
type: string
enum:
- play
- retry_download
- view_download_error
- view_tasks
NotificationType:
type: string
enum:
- download_complete
- download_error
- task_finished
BaseChangePermissionsRequest:
required:
- permission
- new_value
type: object
properties:
permission:
$ref: '#/components/schemas/UserPermission'
new_value:
$ref: '#/components/schemas/YesNo'
ChangeUserPermissionsRequest:
allOf:
- $ref: '#/components/schemas/BaseChangePermissionsRequest'
- type: object
properties:
user_uid:
type: string
required:
- user_uid
ChangeRolePermissionsRequest:
allOf:
- $ref: '#/components/schemas/BaseChangePermissionsRequest'
- type: object
properties:
role:
type: string
required:
- role
file:
title: file
type: object
properties:
id:
type: string
RegisterRequest:
required:
- userid
- username
- password
type: object
properties:
userid:
type: string
username:
type: string
password:
type: string
RegisterResponse:
type: object
properties:
user:
$ref: '#/components/schemas/User'
LoginRequest:
required:
- username
- password
type: object
properties:
username:
type: string
password:
type: string
LoginResponse:
type: object
properties:
user:
$ref: '#/components/schemas/User'
token:
type: string
permissions:
type: array
items:
$ref: '#/components/schemas/UserPermission'
available_permissions:
type: array
items:
$ref: '#/components/schemas/UserPermission'
UpdateUserRequest:
required:
- change_object
type: object
properties:
change_object:
required:
- uid
type: object
properties:
uid:
type: string
name:
type: string
role:
type: string
DeleteUserRequest:
required:
- uid
type: object
properties:
uid:
type: string
GetUsersResponse:
required:
- users
type: object
properties:
users:
type: array
items:
$ref: '#/components/schemas/User'
GetRolesResponse:
required:
- roles
type: object
properties:
roles:
type: object
properties:
admin:
type: object
properties:
permissions:
type: array
items:
$ref: '#/components/schemas/UserPermission'
user:
type: object
properties:
permissions:
type: array
items:
$ref: '#/components/schemas/UserPermission'
DeleteNotificationRequest:
required:
- uid
type: object
properties:
uid:
type: string
SetNotificationsToReadRequest:
required:
- uids
type: object
properties:
uids:
type: array
items:
type: string
GetNotificationsResponse:
type: object
properties:
notifications:
type: array
items:
$ref: '#/components/schemas/Notification'
securitySchemes:
Auth query parameter:
name: apiKey
type: apiKey
in: query
description: Use your public API key generated from the settings menu
JWT token parameter:
name: jwt
type: apiKey
in: query
description: 'User-specific authentication token, only used in multi-user mode. Retrieve this token by using the login endpoint'