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

1694 lines
44 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`."
servers:
- url: 'http://localhost:17442'
paths:
/api/tomp3:
post:
tags:
- downloader
summary: Download audio file
description: |-
Downloads an audio file with the given URL. Will include global args if they exist.
HTTP requests will return once the audio 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-tomp3
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Mp3DownloadRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Mp3DownloadResponse'
'500':
description: Server download error
security:
- Auth query parameter: []
/api/tomp4:
post:
tags:
- downloader
summary: Download video file
description: |-
Downloads a video 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/Mp4DownloadRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Mp4DownloadResponse'
'500':
description: Server download error
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
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllFilesResponse'
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'
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/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/getAllSubscriptions:
post:
tags:
- subscriptions
summary: Get all subscriptions
operationId: post-api-getAllSubscriptions
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/updatePlaylistFiles:
post:
tags:
- playlists
summary: Update playlist files
description: Updates the list of filenames in the playlist object
operationId: post-api-updatePlaylistFiles
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePlaylistFilesRequest'
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/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/downloadFile:
post:
tags:
- files
summary: Download downloaded file from server
operationId: post-api-downloadFile
requestBody:
content:
application/json:
schema:
type: object
properties: {}
application/xml:
schema:
$ref: '#/components/schemas/body_15'
responses:
'200':
description: 'The file itself is in the response, as well as an options object.'
security:
- Auth query parameter: []
/api/deleteFile:
post:
tags:
- files
summary: Delete downloaded file (unused)
operationId: post-api-deleteFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteFileRequest'
responses:
'200':
description: OK
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/body_17'
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/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/inline_response_200_14'
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/body_18'
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/checkPin:
post:
tags:
- security
summary: Check if pin is correct
description: Checks the pin against an inputted one. Will return true if they match
operationId: post-api-checkPin
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/body_19'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/setPin:
post:
tags:
- security
summary: Set pin
operationId: post-api-setPin
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/body_20'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
description: ''
/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/inline_response_200_16'
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/inline_response_200_17'
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/body_22'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessObject'
security:
- Auth query parameter: []
/api/downloads:
get:
summary: Get info for all downloads
tags:
- downloader
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllDownloadsResponse'
operationId: get-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 and session_id. session_id is the device fingerprint. If none was provided at the time of download, then set session_id is 'undeclared'."
security:
- Auth query parameter: []
tags:
- downloader
/api/auth/login:
post:
summary: Login
operationId: post-api-auth-login
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
user:
$ref: '#/components/schemas/User'
token:
type: string
permissions:
type: array
items:
type: string
available_permissions:
type: array
items:
type: string
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:
type: object
properties:
userid:
type: string
description: 'This is the username, not the user uid'
password:
type: string
required:
- userid
- password
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:
type: object
properties:
user:
$ref: '#/components/schemas/User'
description: Use this endpoint to register a user. It will only work if registration is enabled.
requestBody:
content:
application/json:
schema:
type: object
properties:
userid:
type: string
username:
type: string
password:
type: string
required:
- userid
- username
- password
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:
type: object
properties:
change_object:
required:
- uid
type: object
properties:
uid:
type: string
name:
type: string
role:
type: string
required:
- change_object
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:
type: object
properties:
uid:
type: string
required:
- uid
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:
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'
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:
type: object
properties:
users:
type: array
items:
$ref: '#/components/schemas/User'
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
components:
schemas:
SuccessObject:
required:
- success
type: object
properties:
success:
type: boolean
FileType:
type: string
enum:
- audio
- video
BaseDownloadRequest:
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 youtubedl. Overrides all other options, except url.
customOutput:
type: string
description: Custom output filename template.
youtubeUsername:
type: string
description: Login with this account ID
youtubePassword:
type: string
description: Account password
ui_uid:
type: string
nullable: true
Mp3DownloadRequest:
allOf:
- $ref: '#/components/schemas/BaseDownloadRequest'
- type: object
properties:
maxBitrate:
type: string
description: Specify ffmpeg/avconv audio quality
example: '160'
Mp4DownloadRequest:
allOf:
- $ref: '#/components/schemas/BaseDownloadRequest'
- type: object
properties:
selectedHeight:
type: string
description: Height of the video, if known
example: '1080'
BaseDownloadResponse:
required:
- uid
type: object
properties:
uid:
type: string
file_names:
nullable: true
type: array
items:
type: string
Mp3DownloadResponse:
allOf:
- $ref: '#/components/schemas/BaseDownloadResponse'
- type: object
required:
- audiopathEncoded
properties:
audiopathEncoded:
type: string
Mp4DownloadResponse:
allOf:
- $ref: '#/components/schemas/BaseDownloadResponse'
- type: object
required:
- videopathEncoded
properties:
videopathEncoded:
type: string
GetDownloadRequest:
type: object
properties:
session_id:
type: string
download_id:
type: string
required:
- session_id
- download_id
GetDownloadResponse:
type: object
properties:
download:
$ref: '#/components/schemas/Download'
nullable: true
GetAllDownloadsResponse:
type: object
properties:
downloads:
type: object
description: Map of Session ID to inner map
additionalProperties:
type: object
description: Map of Download UID to downoad
additionalProperties:
$ref: '#/components/schemas/Download'
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'
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'
SharingToggle:
required:
- type
- uid
type: object
properties:
uid:
type: string
type:
$ref: '#/components/schemas/FileType'
is_playlist:
type: boolean
SubscribeRequest:
required:
- name
- url
- streamingOnly
type: object
properties:
name:
type: string
url:
type: string
timerange:
type: string
streamingOnly:
type: boolean
audioOnly:
type: boolean
customArgs:
type: string
customFileOutput:
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
DeleteSubscriptionFileRequest:
required:
- file
- sub
type: object
properties:
file:
type: string
file_uid:
type: string
sub:
$ref: '#/components/schemas/SubscriptionRequestData'
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
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:
- fileNames
- playlistName
- thumbnailURL
- type
- duration
type: object
properties:
playlistName:
type: string
fileNames:
type: array
items:
type: string
type:
$ref: '#/components/schemas/FileType'
thumbnailURL:
type: string
duration:
type: number
CreatePlaylistResponse:
required:
- new_playlist
- success
type: object
properties:
new_playlist:
$ref: '#/components/schemas/Playlist'
success:
type: boolean
GetPlaylistRequest:
required:
- playlistID
type: object
properties:
playlistID:
type: string
type:
$ref: '#/components/schemas/FileType'
uuid:
type: string
GetPlaylistResponse:
required:
- playlist
- success
- type
type: object
properties:
playlist:
$ref: '#/components/schemas/Playlist'
type:
$ref: '#/components/schemas/FileType'
success:
type: boolean
UpdatePlaylistRequest:
required:
- playlist
type: object
properties:
playlist:
$ref: '#/components/schemas/Playlist'
UpdatePlaylistFilesRequest:
required:
- fileNames
- playlistID
- type
type: object
properties:
playlistID:
type: string
fileNames:
type: array
items:
type: string
type:
$ref: '#/components/schemas/FileType'
DeletePlaylistRequest:
required:
- playlistID
- type
type: object
properties:
playlistID:
type: string
type:
$ref: '#/components/schemas/FileType'
body_15:
required:
- fileNames
- type
type: object
properties:
fileNames:
type: array
description: Array of 1 or more files to download
items:
type: string
zip_mode:
type: boolean
type:
type: string
outputName:
type: string
fullPathProvided:
type: string
subscriptionName:
type: boolean
description: Only used for subscriptions
subscriptionPlaylist:
type: boolean
description: Only used for subscriptions
DeleteFileRequest:
required:
- fileName
- type
type: object
properties:
fileName:
type: string
type:
$ref: '#/components/schemas/FileType'
DownloadArchiveRequest:
required:
- sub
type: object
properties:
sub:
required:
- archive_dir
type: object
properties:
archive_dir:
type: string
inline_response_200_14:
required:
- details
- updating
type: object
properties:
updating:
type: boolean
details:
type: string
body_18:
type: object
properties:
tag:
type: string
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
inline_response_200_16:
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
inline_response_200_17:
required:
- config_file
- success
type: object
properties:
config_file:
type: object
success:
type: boolean
body_22:
required:
- new_config_file
type: object
properties:
new_config_file:
type: object
DatabaseFile:
required:
- duration
- id
- isAudio
- path
- size
- thumbnailURL
- title
- uid
- upload_date
- uploader
- url
type: object
properties:
id:
type: string
title:
type: string
thumbnailURL:
type: string
isAudio:
type: boolean
duration:
type: number
description: In seconds
url:
type: string
uploader:
type: string
size:
type: number
path:
type: string
upload_date:
type: string
uid:
type: string
sharingEnabled:
type: boolean
Playlist:
required:
- fileNames
- id
- name
- thumbnailURL
- type
- registered
- duration
type: object
properties:
name:
type: string
fileNames:
type: array
items:
type: string
id:
type: string
thumbnailURL:
type: string
type:
$ref: '#/components/schemas/FileType'
registered:
type: number
duration:
type: number
Download:
required:
- uid
- ui_uid
- downloading
- complete
- url
- type
- percent_complete
- is_playlist
- timestamp_start
type: object
properties:
uid:
type: string
ui_uid:
type: string
downloading:
type: boolean
complete:
type: boolean
url:
type: string
type:
type: string
percent_complete:
type: number
is_playlist:
type: boolean
timestamp_start:
type: number
timestamp_end:
type: number
filesize:
type: number
nullable: true
error:
type: string
description: Error text, set if download fails.
fileNames:
type: array
items:
type: string
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
- streamingOnly
- 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
streamingOnly:
type: boolean
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
files:
type: object
properties:
audio:
type: array
items:
$ref: '#/components/schemas/file'
video:
type: array
items:
$ref: '#/components/schemas/file'
playlists:
type: object
properties:
audio:
type: array
items:
$ref: '#/components/schemas/file'
video:
type: array
items:
$ref: '#/components/schemas/file'
subscriptions:
type: array
items:
$ref: '#/components/schemas/inline_response_200_9_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
BaseChangePermissionsRequest:
required:
- permission
- new_value
type: object
properties:
permission:
$ref: '#/components/schemas/UserPermission'
new_value:
type: string
enum:
- 'yes'
- 'no'
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
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'