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

1209 lines
28 KiB
YAML

openapi: 3.0.0
info:
title: Version 1
version: '1.0'
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.
operationId: post-tomp3
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/body'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200'
/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.
operationId: post-tomp4
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/body_1'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_1'
/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/inline_response_200_2'
/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/inline_response_200_3'
/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/body_2'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_4'
/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/body_3'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_5'
/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/body_4'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_5'
/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/body_5'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_6'
/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/body_6'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_7'
/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/body_7'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_8'
'500':
description: Internal Server Error
/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/body_8'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_9'
/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/body_9'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_10'
/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/inline_response_200_11'
/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/body_10'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_12'
/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/body_11'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_13'
/api/updatePlaylist:
post:
tags:
- playlists
summary: Update playlist files
description: Updates the list of filenames in the playlist object
operationId: post-api-updatePlaylist
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/body_12'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_5'
/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/body_13'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_200_5'
/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/body_14'
responses:
'200':
description: OK
content:
application/json:
schema:
type: boolean
description: Whether the operation succeeded
/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.'
/api/deleteFile:
post:
tags:
- files
summary: Delete downloaded file (unused)
operationId: post-api-deleteFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/body_16'
responses:
'200':
description: OK
/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
/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'
/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/inline_response_200_5'
/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'
/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/inline_response_200_5'
/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/inline_response_200_5'
/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'
/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/body_21'
responses:
'200':
description: OK
content:
application/json:
schema:
type: boolean
description: Whether the operation succeeded
/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'
/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/inline_response_200_5'
components:
schemas:
body:
required:
- url
type: object
properties:
url:
type: string
customQualityConfiguration:
type: string
example: '251'
maxBitrate:
type: string
example: '160'
customArgs:
type: string
customOutput:
type: string
youtubeUsername:
type: string
youtubePassword:
type: string
inline_response_200:
required:
- audiopathEncoded
- uid
type: object
properties:
uid:
type: string
file_names:
type: string
audiopathEncoded:
type: string
body_1:
required:
- url
type: object
properties:
url:
type: string
customQualityConfiguration:
type: string
example: 242+251
selectedHeight:
type: string
example: '1080'
customArgs:
type: string
customOutput:
type: string
youtubeUsername:
type: string
youtubePassword:
type: string
inline_response_200_1:
required:
- uid
- videopathEncoded
type: object
properties:
uid:
type: string
file_names:
type: string
videopathEncoded:
type: string
inline_response_200_2:
required:
- mp3s
- playlists
type: object
properties:
mp3s:
type: array
items:
$ref: '#/components/schemas/inline_response_200_2_mp3s'
playlists:
type: array
description: All audio playlists
items:
$ref: '#/components/schemas/inline_response_200_2_playlists'
inline_response_200_3:
required:
- mp4s
type: object
properties:
mp4s:
type: array
items:
$ref: '#/components/schemas/inline_response_200_3_mp4s'
playlists:
type: array
description: All video playlists
items:
type: object
body_2:
required:
- uid
type: object
properties:
uid:
type: string
type:
type: string
inline_response_200_4:
required:
- file
- success
type: object
properties:
success:
type: string
file:
$ref: '#/components/schemas/inline_response_200_2_mp3s'
body_3:
required:
- is_playlist
- type
- uid
type: object
properties:
uid:
type: string
type:
type: string
is_playlist:
type: boolean
inline_response_200_5:
required:
- success
type: object
properties:
success:
type: boolean
body_4:
required:
- type
- uid
type: object
properties:
type:
type: string
uid:
type: string
description: uid is either the video uid or the playlist ID
is_playlist:
type: boolean
body_5:
required:
- url
type: object
properties:
name:
type: string
url:
type: string
timerange:
type: string
streamingOnly:
type: boolean
inline_response_200_6:
required:
- new_sub
type: object
properties:
new_sub:
$ref: '#/components/schemas/inline_response_200_6_new_sub'
error:
type: string
apiunsubscribe_sub:
required:
- id
- name
- url
- videos
type: object
properties:
name:
type: string
url:
type: string
id:
type: string
streamingOnly:
type: boolean
videos:
type: array
items:
type: object
body_6:
required:
- sub
type: object
properties:
sub:
$ref: '#/components/schemas/apiunsubscribe_sub'
deleteMode:
type: boolean
description: Defaults to false
inline_response_200_7:
required:
- success
type: object
properties:
success:
type: boolean
error:
type: string
apideleteSubscriptionFile_sub:
required:
- id
- isPlaylist
- name
- url
- videos
type: object
properties:
name:
type: string
url:
type: string
id:
type: string
streamingOnly:
type: boolean
isPlaylist:
type: boolean
videos:
type: array
items:
type: object
body_7:
required:
- file
- sub
type: object
properties:
file:
type: string
sub:
$ref: '#/components/schemas/apideleteSubscriptionFile_sub'
deleteForever:
type: boolean
description: 'If true, does not remove id from archive. Only valid if youtube-dl archive is enabled in settings.'
inline_response_200_8:
type: object
properties:
success:
type: boolean
body_8:
required:
- subID
type: object
properties:
subID:
type: string
inline_response_200_9:
required:
- files
- subscription
type: object
properties:
subscription:
$ref: '#/components/schemas/inline_response_200_9_subscription'
files:
type: array
items:
type: object
body_9:
required:
- subID
type: object
properties:
subID:
type: string
inline_response_200_10:
required:
- success
type: object
properties:
success:
type: number
inline_response_200_11:
required:
- subscriptions
type: object
properties:
subscriptions:
type: array
items:
$ref: '#/components/schemas/inline_response_200_11_subscriptions'
body_10:
required:
- fileNames
- playlistName
- thumbnailURL
- type
type: object
properties:
playlistName:
type: string
fileNames:
type: array
items:
type: string
type:
type: string
thumbnailURL:
type: string
inline_response_200_12:
required:
- new_playlist
- success
type: object
properties:
new_playlist:
$ref: '#/components/schemas/inline_response_200_12_new_playlist'
success:
type: boolean
body_11:
required:
- playlistID
- type
type: object
properties:
playlistID:
type: string
type:
type: string
inline_response_200_13:
required:
- playlist
- success
- type
type: object
properties:
playlist:
$ref: '#/components/schemas/inline_response_200_2_playlists'
type:
type: string
success:
type: boolean
body_12:
required:
- fileNames
- playlistID
- type
type: object
properties:
playlistID:
type: string
fileNames:
type: array
items:
type: string
type:
type: string
body_13:
required:
- playlistID
- type
type: object
properties:
playlistID:
type: string
type:
type: string
body_14:
required:
- uid
type: object
properties:
uid:
type: string
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
body_16:
required:
- fileName
- type
type: object
properties:
fileName:
type: string
type:
type: string
apidownloadArchive_sub:
required:
- archive_dir
type: object
properties:
archive_dir:
type: string
body_17:
required:
- sub
type: object
properties:
sub:
$ref: '#/components/schemas/apidownloadArchive_sub'
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
body_21:
required:
- uid
type: object
properties:
uid:
type: string
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
inline_response_200_2_mp3s:
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
inline_response_200_2_playlists:
required:
- fileNames
- id
- name
- thumbnailURL
type: object
properties:
name:
type: string
fileNames:
type: array
items:
type: string
id:
type: string
thumbnailURL:
type: string
inline_response_200_3_mp4s:
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
url:
type: string
uploader:
type: string
size:
type: number
path:
type: string
upload_date:
type: string
uid:
type: string
sharingEnabled:
type: boolean
inline_response_200_6_new_sub:
required:
- id
- name
- url
type: object
properties:
name:
type: string
url:
type: string
id:
type: string
streamingOnly:
type: boolean
timerange:
type: string
inline_response_200_9_subscription:
required:
- archive
- id
- isPlaylist
- name
- url
type: object
properties:
name:
type: string
url:
type: string
id:
type: string
streamingOnly:
type: boolean
isPlaylist:
type: boolean
archive:
type: string
inline_response_200_11_subscriptions:
required:
- archive
- id
- isPlaylist
- name
- streamingOnly
- url
type: object
properties:
name:
type: string
url:
type: string
id:
type: string
streamingOnly:
type: boolean
isPlaylist:
type: boolean
archive:
type: string
inline_response_200_12_new_playlist:
required:
- fileNames
- id
- name
- thumbnailURL
- type
type: object
properties:
name:
type: string
fileNames:
type: string
id:
type: string
thumbnailURL:
type: string
type:
type: string
securitySchemes: {}