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' '401': description: User is not authorized to view the file. 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: $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 (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/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/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/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/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: 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: $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 components: schemas: SuccessObject: required: - success type: object properties: success: type: boolean FileType: type: string enum: - audio - video Config: required: - YoutubeDLMaterial type: object properties: YoutubeDLMaterial: type: object 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' DownloadFileRequest: required: - fileNames - type type: object properties: fileNames: oneOf: - type: string - type: array description: Array of 1 or more files to download items: type: string zip_mode: type: boolean type: $ref: '#/components/schemas/FileType' outputName: type: string fullPathProvided: type: boolean uuid: type: string uid: type: string id: type: string subscriptionName: type: string description: Only used for subscriptions subPlaylist: 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 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 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 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/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 YesNo: type: string enum: - 'yes' - 'no' 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' 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'