diff --git a/.gitignore b/.gitignore index 262168e..ec1d4fe 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ rpm/*.spec # Build folders build/ build-*/ +.dub/ # IDE files *.user diff --git a/CMakeLists.txt b/CMakeLists.txt index 01ad104..062ecf9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,23 +4,24 @@ set (CMAKE_CXX_STANDARD 17) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") set(CMAKE_AUTOMOC ON) cmake_policy(SET CMP0048 NEW) +set(CMAKE_CXX_STANDARD 17) # Options -option(SAILFISHOS "Build SailfishOS version of application") -option(PLATFORM_QTQUICK "Build QtQuick version of application") +option(PLATFORM_SAILFISHOS "Build SailfishOS version of application" OFF) +option(PLATFORM_QTQUICK "Build QtQuick version of application" ON) if (NOT SAILFIN_VERSION) set(SAILFIN_VERSION "1.0.0") endif() -if(SAILFISHOS) +if(PLATFORM_SAILFISHOS) # Hardcode this less? set(CMAKE_INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/share/harbour-sailfin/lib") endif() add_subdirectory(core) -if(SAILFISHOS) +if(PLATFORM_SAILFISHOS) add_subdirectory(sailfish) -else() +elseif(PLATFORM_QTQUICK) add_subdirectory(qtquick) endif() diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index fd696ba..22ee062 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -2,34 +2,50 @@ project(jellyfin-qt VERSION 0.1.0) find_package(Qt5 5.6 COMPONENTS Multimedia Network Qml WebSockets REQUIRED) include(GNUInstallDirs) +include(GeneratedSources.cmake) + set(jellyfin-qt_SOURCES - src/credentialmanager.cpp - src/jellyfin.cpp - src/jellyfinapiclient.cpp - src/jellyfinapimodel.cpp - src/jellyfindeviceprofile.cpp - src/jellyfinitem.cpp - src/jellyfinplaybackmanager.cpp - src/jellyfinwebsocket.cpp - src/jsonhelper.cpp - src/serverdiscoverymodel.cpp) + # src/DTO/dto.cpp + src/support/loader.cpp + src/apiclient.cpp + src/apimodel.cpp + src/credentialmanager.cpp + src/deviceprofile.cpp + src/jellyfin.cpp + src/jsonhelper.cpp + src/playbackmanager.cpp + src/remotedata.cpp + src/serverdiscoverymodel.cpp + src/websocket.cpp) + +list(APPEND jellyfin-qt_SOURCES ${openapi_SOURCES}) set(jellyfin-qt_HEADERS - include/JellyfinQt/credentialmanager.h - include/JellyfinQt/jellyfin.h - include/JellyfinQt/jellyfinapiclient.h - include/JellyfinQt/jellyfinapimodel.h - include/JellyfinQt/jellyfindeviceprofile.h - include/JellyfinQt/jellyfinitem.h - include/JellyfinQt/jellyfinplaybackmanager.h - include/JellyfinQt/jellyfinwebsocket.h - include/JellyfinQt/jsonhelper.h - include/JellyfinQt/serverdiscoverymodel.h) + # include/JellyfinQt/DTO/dto.h + include/JellyfinQt/support/loader.h + include/JellyfinQt/apiclient.h + include/JellyfinQt/apimodel.h + include/JellyfinQt/credentialmanager.h + include/JellyfinQt/deviceprofile.h + include/JellyfinQt/jellyfin.h + include/JellyfinQt/jsonhelper.h + include/JellyfinQt/playbackmanager.h + include/JellyfinQt/remotedata.h + include/JellyfinQt/serverdiscoverymodel.h + include/JellyfinQt/websocket.h) + +list(APPEND jellyfin-qt_SOURCES ${openapi_HEADERS}) add_definitions(-DSAILFIN_VERSION=\"${SAILFIN_VERSION}\") +if (PLATFORM_SAILFISHOS) + add_definitions(-DPLATFORM_SAILFISHOS=1) +endif() add_library(jellyfin-qt ${jellyfin-qt_SOURCES} ${jellyfin-qt_HEADERS}) +if(${CMAKE_VERSION} VERSION_GREATER "3.16.0") + target_precompile_headers(jellyfin-qt PRIVATE ${jellyfin-qt_HEADERS}) +endif() target_include_directories(jellyfin-qt - PUBLIC "include" + PUBLIC "include" "generated/include" ) target_link_libraries(jellyfin-qt PUBLIC Qt5::Core Qt5::Multimedia Qt5::Network Qt5::Qml Qt5::WebSockets) set_target_properties(jellyfin-qt PROPERTIES CXX_VISIBILITY_PRESET default) diff --git a/core/GeneratedSources.cmake b/core/GeneratedSources.cmake new file mode 100644 index 0000000..34c476a --- /dev/null +++ b/core/GeneratedSources.cmake @@ -0,0 +1,563 @@ +cmake_minimum_required(VERSION 3.0) +#[[ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +]] +set(openapi_HEADERS + ./include/JellyfinQt/DTO/loglevel.h + ./include/JellyfinQt/DTO/activitylogentry.h + ./include/JellyfinQt/DTO/activitylogentryqueryresult.h + ./include/JellyfinQt/DTO/authenticationinfo.h + ./include/JellyfinQt/DTO/authenticationinfoqueryresult.h + ./include/JellyfinQt/DTO/itemfields.h + ./include/JellyfinQt/DTO/itemfilter.h + ./include/JellyfinQt/DTO/imagetype.h + ./include/JellyfinQt/DTO/video3dformat.h + ./include/JellyfinQt/DTO/externalurl.h + ./include/JellyfinQt/DTO/mediaprotocol.h + ./include/JellyfinQt/DTO/mediasourcetype.h + ./include/JellyfinQt/DTO/videotype.h + ./include/JellyfinQt/DTO/isotype.h + ./include/JellyfinQt/DTO/mediastreamtype.h + ./include/JellyfinQt/DTO/subtitledeliverymethod.h + ./include/JellyfinQt/DTO/mediastream.h + ./include/JellyfinQt/DTO/mediaattachment.h + ./include/JellyfinQt/DTO/transportstreamtimestamp.h + ./include/JellyfinQt/DTO/mediasourceinfo.h + ./include/JellyfinQt/DTO/playaccess.h + ./include/JellyfinQt/DTO/mediaurl.h + ./include/JellyfinQt/DTO/baseitemperson.h + ./include/JellyfinQt/DTO/nameguidpair.h + ./include/JellyfinQt/DTO/useritemdatadto.h + ./include/JellyfinQt/DTO/dayofweek.h + ./include/JellyfinQt/DTO/chapterinfo.h + ./include/JellyfinQt/DTO/locationtype.h + ./include/JellyfinQt/DTO/metadatafield.h + ./include/JellyfinQt/DTO/imageorientation.h + ./include/JellyfinQt/DTO/channeltype.h + ./include/JellyfinQt/DTO/programaudio.h + ./include/JellyfinQt/DTO/baseitemdto.h + ./include/JellyfinQt/DTO/baseitemdtoqueryresult.h + ./include/JellyfinQt/DTO/encodingcontext.h + ./include/JellyfinQt/DTO/brandingoptions.h + ./include/JellyfinQt/DTO/channelmediatype.h + ./include/JellyfinQt/DTO/channelmediacontenttype.h + ./include/JellyfinQt/DTO/channelitemsortfield.h + ./include/JellyfinQt/DTO/channelfeatures.h + ./include/JellyfinQt/DTO/collectioncreationresult.h + ./include/JellyfinQt/DTO/version.h + ./include/JellyfinQt/DTO/imagesavingconvention.h + ./include/JellyfinQt/DTO/metadataoptions.h + ./include/JellyfinQt/DTO/namevaluepair.h + ./include/JellyfinQt/DTO/repositoryinfo.h + ./include/JellyfinQt/DTO/pathsubstitution.h + ./include/JellyfinQt/DTO/serverconfiguration.h + ./include/JellyfinQt/DTO/mediaencoderpathdto.h + ./include/JellyfinQt/DTO/problemdetails.h + ./include/JellyfinQt/DTO/configurationpagetype.h + ./include/JellyfinQt/DTO/configurationpageinfo.h + ./include/JellyfinQt/DTO/generalcommandtype.h + ./include/JellyfinQt/DTO/headermatchtype.h + ./include/JellyfinQt/DTO/httpheaderinfo.h + ./include/JellyfinQt/DTO/deviceidentification.h + ./include/JellyfinQt/DTO/xmlattribute.h + ./include/JellyfinQt/DTO/dlnaprofiletype.h + ./include/JellyfinQt/DTO/directplayprofile.h + ./include/JellyfinQt/DTO/transcodeseekinfo.h + ./include/JellyfinQt/DTO/transcodingprofile.h + ./include/JellyfinQt/DTO/profileconditiontype.h + ./include/JellyfinQt/DTO/profileconditionvalue.h + ./include/JellyfinQt/DTO/profilecondition.h + ./include/JellyfinQt/DTO/containerprofile.h + ./include/JellyfinQt/DTO/codectype.h + ./include/JellyfinQt/DTO/codecprofile.h + ./include/JellyfinQt/DTO/responseprofile.h + ./include/JellyfinQt/DTO/subtitleprofile.h + ./include/JellyfinQt/DTO/deviceprofile.h + ./include/JellyfinQt/DTO/clientcapabilities.h + ./include/JellyfinQt/DTO/deviceinfo.h + ./include/JellyfinQt/DTO/deviceinfoqueryresult.h + ./include/JellyfinQt/DTO/deviceoptions.h + ./include/JellyfinQt/DTO/scrolldirection.h + ./include/JellyfinQt/DTO/sortorder.h + ./include/JellyfinQt/DTO/displaypreferencesdto.h + ./include/JellyfinQt/DTO/deviceprofiletype.h + ./include/JellyfinQt/DTO/deviceprofileinfo.h + ./include/JellyfinQt/DTO/controlresponse.h + ./include/JellyfinQt/DTO/defaultdirectorybrowserinfodto.h + ./include/JellyfinQt/DTO/filesystementrytype.h + ./include/JellyfinQt/DTO/filesystementryinfo.h + ./include/JellyfinQt/DTO/validatepathdto.h + ./include/JellyfinQt/DTO/queryfilterslegacy.h + ./include/JellyfinQt/DTO/queryfilters.h + ./include/JellyfinQt/DTO/imageformat.h + ./include/JellyfinQt/DTO/imageinfo.h + ./include/JellyfinQt/DTO/imagebynameinfo.h + ./include/JellyfinQt/DTO/externalidmediatype.h + ./include/JellyfinQt/DTO/externalidinfo.h + ./include/JellyfinQt/DTO/remotesearchresult.h + ./include/JellyfinQt/DTO/bookinfo.h + ./include/JellyfinQt/DTO/bookinforemotesearchquery.h + ./include/JellyfinQt/DTO/boxsetinfo.h + ./include/JellyfinQt/DTO/boxsetinforemotesearchquery.h + ./include/JellyfinQt/DTO/movieinfo.h + ./include/JellyfinQt/DTO/movieinforemotesearchquery.h + ./include/JellyfinQt/DTO/songinfo.h + ./include/JellyfinQt/DTO/albuminfo.h + ./include/JellyfinQt/DTO/albuminforemotesearchquery.h + ./include/JellyfinQt/DTO/artistinfo.h + ./include/JellyfinQt/DTO/artistinforemotesearchquery.h + ./include/JellyfinQt/DTO/musicvideoinfo.h + ./include/JellyfinQt/DTO/musicvideoinforemotesearchquery.h + ./include/JellyfinQt/DTO/personlookupinfo.h + ./include/JellyfinQt/DTO/personlookupinforemotesearchquery.h + ./include/JellyfinQt/DTO/seriesinfo.h + ./include/JellyfinQt/DTO/seriesinforemotesearchquery.h + ./include/JellyfinQt/DTO/trailerinfo.h + ./include/JellyfinQt/DTO/trailerinforemotesearchquery.h + ./include/JellyfinQt/DTO/metadatarefreshmode.h + ./include/JellyfinQt/DTO/seriesstatus.h + ./include/JellyfinQt/DTO/parentalrating.h + ./include/JellyfinQt/DTO/countryinfo.h + ./include/JellyfinQt/DTO/culturedto.h + ./include/JellyfinQt/DTO/metadataeditorinfo.h + ./include/JellyfinQt/DTO/thememediaresult.h + ./include/JellyfinQt/DTO/allthememediaresult.h + ./include/JellyfinQt/DTO/itemcounts.h + ./include/JellyfinQt/DTO/libraryoptioninfodto.h + ./include/JellyfinQt/DTO/imageoption.h + ./include/JellyfinQt/DTO/librarytypeoptionsdto.h + ./include/JellyfinQt/DTO/libraryoptionsresultdto.h + ./include/JellyfinQt/DTO/mediaupdateinfodto.h + ./include/JellyfinQt/DTO/mediapathinfo.h + ./include/JellyfinQt/DTO/typeoptions.h + ./include/JellyfinQt/DTO/libraryoptions.h + ./include/JellyfinQt/DTO/virtualfolderinfo.h + ./include/JellyfinQt/DTO/addvirtualfolderdto.h + ./include/JellyfinQt/DTO/updatelibraryoptionsdto.h + ./include/JellyfinQt/DTO/mediapathdto.h + ./include/JellyfinQt/DTO/tunerchannelmapping.h + ./include/JellyfinQt/DTO/nameidpair.h + ./include/JellyfinQt/DTO/channelmappingoptionsdto.h + ./include/JellyfinQt/DTO/setchannelmappingdto.h + ./include/JellyfinQt/DTO/guideinfo.h + ./include/JellyfinQt/DTO/livetvservicestatus.h + ./include/JellyfinQt/DTO/livetvserviceinfo.h + ./include/JellyfinQt/DTO/livetvinfo.h + ./include/JellyfinQt/DTO/listingsproviderinfo.h + ./include/JellyfinQt/DTO/getprogramsdto.h + ./include/JellyfinQt/DTO/recordingstatus.h + ./include/JellyfinQt/DTO/keepuntil.h + ./include/JellyfinQt/DTO/daypattern.h + ./include/JellyfinQt/DTO/seriestimerinfodto.h + ./include/JellyfinQt/DTO/seriestimerinfodtoqueryresult.h + ./include/JellyfinQt/DTO/timerinfodto.h + ./include/JellyfinQt/DTO/timerinfodtoqueryresult.h + ./include/JellyfinQt/DTO/tunerhostinfo.h + ./include/JellyfinQt/DTO/localizationoption.h + ./include/JellyfinQt/DTO/playbackerrorcode.h + ./include/JellyfinQt/DTO/playbackinforesponse.h + ./include/JellyfinQt/DTO/playbackinfodto.h + ./include/JellyfinQt/DTO/openlivestreamdto.h + ./include/JellyfinQt/DTO/livestreamresponse.h + ./include/JellyfinQt/DTO/recommendationtype.h + ./include/JellyfinQt/DTO/recommendationdto.h + ./include/JellyfinQt/DTO/notificationlevel.h + ./include/JellyfinQt/DTO/notificationdto.h + ./include/JellyfinQt/DTO/notificationresultdto.h + ./include/JellyfinQt/DTO/notificationssummarydto.h + ./include/JellyfinQt/DTO/notificationtypeinfo.h + ./include/JellyfinQt/DTO/versioninfo.h + ./include/JellyfinQt/DTO/packageinfo.h + ./include/JellyfinQt/DTO/createplaylistdto.h + ./include/JellyfinQt/DTO/playlistcreationresult.h + ./include/JellyfinQt/DTO/playmethod.h + ./include/JellyfinQt/DTO/repeatmode.h + ./include/JellyfinQt/DTO/queueitem.h + ./include/JellyfinQt/DTO/playbackstartinfo.h + ./include/JellyfinQt/DTO/playbackprogressinfo.h + ./include/JellyfinQt/DTO/playbackstopinfo.h + ./include/JellyfinQt/DTO/pluginstatus.h + ./include/JellyfinQt/DTO/plugininfo.h + ./include/JellyfinQt/DTO/basepluginconfiguration.h + ./include/JellyfinQt/DTO/pluginsecurityinfo.h + ./include/JellyfinQt/DTO/quickconnectstate.h + ./include/JellyfinQt/DTO/quickconnectresult.h + ./include/JellyfinQt/DTO/ratingtype.h + ./include/JellyfinQt/DTO/remoteimageinfo.h + ./include/JellyfinQt/DTO/remoteimageresult.h + ./include/JellyfinQt/DTO/imageproviderinfo.h + ./include/JellyfinQt/DTO/taskstate.h + ./include/JellyfinQt/DTO/taskcompletionstatus.h + ./include/JellyfinQt/DTO/taskresult.h + ./include/JellyfinQt/DTO/tasktriggerinfo.h + ./include/JellyfinQt/DTO/taskinfo.h + ./include/JellyfinQt/DTO/searchhint.h + ./include/JellyfinQt/DTO/searchhintresult.h + ./include/JellyfinQt/DTO/playerstateinfo.h + ./include/JellyfinQt/DTO/sessionuserinfo.h + ./include/JellyfinQt/DTO/baseitem.h + ./include/JellyfinQt/DTO/transcodereason.h + ./include/JellyfinQt/DTO/transcodinginfo.h + ./include/JellyfinQt/DTO/sessioninfo.h + ./include/JellyfinQt/DTO/generalcommand.h + ./include/JellyfinQt/DTO/playcommand.h + ./include/JellyfinQt/DTO/playstatecommand.h + ./include/JellyfinQt/DTO/clientcapabilitiesdto.h + ./include/JellyfinQt/DTO/startupconfigurationdto.h + ./include/JellyfinQt/DTO/startupuserdto.h + ./include/JellyfinQt/DTO/startupremoteaccessdto.h + ./include/JellyfinQt/DTO/fontfile.h + ./include/JellyfinQt/DTO/remotesubtitleinfo.h + ./include/JellyfinQt/DTO/uploadsubtitledto.h + ./include/JellyfinQt/DTO/bufferrequestdto.h + ./include/JellyfinQt/DTO/joingrouprequestdto.h + ./include/JellyfinQt/DTO/groupstatetype.h + ./include/JellyfinQt/DTO/groupinfodto.h + ./include/JellyfinQt/DTO/moveplaylistitemrequestdto.h + ./include/JellyfinQt/DTO/newgrouprequestdto.h + ./include/JellyfinQt/DTO/nextitemrequestdto.h + ./include/JellyfinQt/DTO/pingrequestdto.h + ./include/JellyfinQt/DTO/previousitemrequestdto.h + ./include/JellyfinQt/DTO/groupqueuemode.h + ./include/JellyfinQt/DTO/queuerequestdto.h + ./include/JellyfinQt/DTO/readyrequestdto.h + ./include/JellyfinQt/DTO/removefromplaylistrequestdto.h + ./include/JellyfinQt/DTO/seekrequestdto.h + ./include/JellyfinQt/DTO/ignorewaitrequestdto.h + ./include/JellyfinQt/DTO/playrequestdto.h + ./include/JellyfinQt/DTO/setplaylistitemrequestdto.h + ./include/JellyfinQt/DTO/grouprepeatmode.h + ./include/JellyfinQt/DTO/setrepeatmoderequestdto.h + ./include/JellyfinQt/DTO/groupshufflemode.h + ./include/JellyfinQt/DTO/setshufflemoderequestdto.h + ./include/JellyfinQt/DTO/endpointinfo.h + ./include/JellyfinQt/DTO/installationinfo.h + ./include/JellyfinQt/DTO/ffmpeglocation.h + ./include/JellyfinQt/DTO/architecture.h + ./include/JellyfinQt/DTO/systeminfo.h + ./include/JellyfinQt/DTO/publicsysteminfo.h + ./include/JellyfinQt/DTO/logfile.h + ./include/JellyfinQt/DTO/wakeonlaninfo.h + ./include/JellyfinQt/DTO/utctimeresponse.h + ./include/JellyfinQt/DTO/subtitleplaybackmode.h + ./include/JellyfinQt/DTO/userconfiguration.h + ./include/JellyfinQt/DTO/dynamicdayofweek.h + ./include/JellyfinQt/DTO/accessschedule.h + ./include/JellyfinQt/DTO/unrateditem.h + ./include/JellyfinQt/DTO/syncplayuseraccesstype.h + ./include/JellyfinQt/DTO/userpolicy.h + ./include/JellyfinQt/DTO/userdto.h + ./include/JellyfinQt/DTO/authenticationresult.h + ./include/JellyfinQt/DTO/updateusereasypassword.h + ./include/JellyfinQt/DTO/updateuserpassword.h + ./include/JellyfinQt/DTO/authenticateuserbyname.h + ./include/JellyfinQt/DTO/quickconnectdto.h + ./include/JellyfinQt/DTO/forgotpassworddto.h + ./include/JellyfinQt/DTO/forgotpasswordaction.h + ./include/JellyfinQt/DTO/forgotpasswordresult.h + ./include/JellyfinQt/DTO/pinredeemresult.h + ./include/JellyfinQt/DTO/createuserbyname.h + ./include/JellyfinQt/DTO/specialviewoptiondto.h + ./include/JellyfinQt/DTO/libraryupdateinfo.h + ./include/JellyfinQt/DTO/iplugin.h + ./include/JellyfinQt/DTO/playrequest.h + ./include/JellyfinQt/DTO/playstaterequest.h + ./include/JellyfinQt/DTO/timereventinfo.h + ./include/JellyfinQt/DTO/sendcommandtype.h + ./include/JellyfinQt/DTO/sendcommand.h + ./include/JellyfinQt/DTO/groupupdatetype.h + ./include/JellyfinQt/DTO/objectgroupupdate.h) + +set(openapi_SOURCES + ./src/DTO/loglevel.cpp + ./src/DTO/activitylogentry.cpp + ./src/DTO/activitylogentryqueryresult.cpp + ./src/DTO/authenticationinfo.cpp + ./src/DTO/authenticationinfoqueryresult.cpp + ./src/DTO/itemfields.cpp + ./src/DTO/itemfilter.cpp + ./src/DTO/imagetype.cpp + ./src/DTO/video3dformat.cpp + ./src/DTO/externalurl.cpp + ./src/DTO/mediaprotocol.cpp + ./src/DTO/mediasourcetype.cpp + ./src/DTO/videotype.cpp + ./src/DTO/isotype.cpp + ./src/DTO/mediastreamtype.cpp + ./src/DTO/subtitledeliverymethod.cpp + ./src/DTO/mediastream.cpp + ./src/DTO/mediaattachment.cpp + ./src/DTO/transportstreamtimestamp.cpp + ./src/DTO/mediasourceinfo.cpp + ./src/DTO/playaccess.cpp + ./src/DTO/mediaurl.cpp + ./src/DTO/baseitemperson.cpp + ./src/DTO/nameguidpair.cpp + ./src/DTO/useritemdatadto.cpp + ./src/DTO/dayofweek.cpp + ./src/DTO/chapterinfo.cpp + ./src/DTO/locationtype.cpp + ./src/DTO/metadatafield.cpp + ./src/DTO/imageorientation.cpp + ./src/DTO/channeltype.cpp + ./src/DTO/programaudio.cpp + ./src/DTO/baseitemdto.cpp + ./src/DTO/baseitemdtoqueryresult.cpp + ./src/DTO/encodingcontext.cpp + ./src/DTO/brandingoptions.cpp + ./src/DTO/channelmediatype.cpp + ./src/DTO/channelmediacontenttype.cpp + ./src/DTO/channelitemsortfield.cpp + ./src/DTO/channelfeatures.cpp + ./src/DTO/collectioncreationresult.cpp + ./src/DTO/version.cpp + ./src/DTO/imagesavingconvention.cpp + ./src/DTO/metadataoptions.cpp + ./src/DTO/namevaluepair.cpp + ./src/DTO/repositoryinfo.cpp + ./src/DTO/pathsubstitution.cpp + ./src/DTO/serverconfiguration.cpp + ./src/DTO/mediaencoderpathdto.cpp + ./src/DTO/problemdetails.cpp + ./src/DTO/configurationpagetype.cpp + ./src/DTO/configurationpageinfo.cpp + ./src/DTO/generalcommandtype.cpp + ./src/DTO/headermatchtype.cpp + ./src/DTO/httpheaderinfo.cpp + ./src/DTO/deviceidentification.cpp + ./src/DTO/xmlattribute.cpp + ./src/DTO/dlnaprofiletype.cpp + ./src/DTO/directplayprofile.cpp + ./src/DTO/transcodeseekinfo.cpp + ./src/DTO/transcodingprofile.cpp + ./src/DTO/profileconditiontype.cpp + ./src/DTO/profileconditionvalue.cpp + ./src/DTO/profilecondition.cpp + ./src/DTO/containerprofile.cpp + ./src/DTO/codectype.cpp + ./src/DTO/codecprofile.cpp + ./src/DTO/responseprofile.cpp + ./src/DTO/subtitleprofile.cpp + ./src/DTO/deviceprofile.cpp + ./src/DTO/clientcapabilities.cpp + ./src/DTO/deviceinfo.cpp + ./src/DTO/deviceinfoqueryresult.cpp + ./src/DTO/deviceoptions.cpp + ./src/DTO/scrolldirection.cpp + ./src/DTO/sortorder.cpp + ./src/DTO/displaypreferencesdto.cpp + ./src/DTO/deviceprofiletype.cpp + ./src/DTO/deviceprofileinfo.cpp + ./src/DTO/controlresponse.cpp + ./src/DTO/defaultdirectorybrowserinfodto.cpp + ./src/DTO/filesystementrytype.cpp + ./src/DTO/filesystementryinfo.cpp + ./src/DTO/validatepathdto.cpp + ./src/DTO/queryfilterslegacy.cpp + ./src/DTO/queryfilters.cpp + ./src/DTO/imageformat.cpp + ./src/DTO/imageinfo.cpp + ./src/DTO/imagebynameinfo.cpp + ./src/DTO/externalidmediatype.cpp + ./src/DTO/externalidinfo.cpp + ./src/DTO/remotesearchresult.cpp + ./src/DTO/bookinfo.cpp + ./src/DTO/bookinforemotesearchquery.cpp + ./src/DTO/boxsetinfo.cpp + ./src/DTO/boxsetinforemotesearchquery.cpp + ./src/DTO/movieinfo.cpp + ./src/DTO/movieinforemotesearchquery.cpp + ./src/DTO/songinfo.cpp + ./src/DTO/albuminfo.cpp + ./src/DTO/albuminforemotesearchquery.cpp + ./src/DTO/artistinfo.cpp + ./src/DTO/artistinforemotesearchquery.cpp + ./src/DTO/musicvideoinfo.cpp + ./src/DTO/musicvideoinforemotesearchquery.cpp + ./src/DTO/personlookupinfo.cpp + ./src/DTO/personlookupinforemotesearchquery.cpp + ./src/DTO/seriesinfo.cpp + ./src/DTO/seriesinforemotesearchquery.cpp + ./src/DTO/trailerinfo.cpp + ./src/DTO/trailerinforemotesearchquery.cpp + ./src/DTO/metadatarefreshmode.cpp + ./src/DTO/seriesstatus.cpp + ./src/DTO/parentalrating.cpp + ./src/DTO/countryinfo.cpp + ./src/DTO/culturedto.cpp + ./src/DTO/metadataeditorinfo.cpp + ./src/DTO/thememediaresult.cpp + ./src/DTO/allthememediaresult.cpp + ./src/DTO/itemcounts.cpp + ./src/DTO/libraryoptioninfodto.cpp + ./src/DTO/imageoption.cpp + ./src/DTO/librarytypeoptionsdto.cpp + ./src/DTO/libraryoptionsresultdto.cpp + ./src/DTO/mediaupdateinfodto.cpp + ./src/DTO/mediapathinfo.cpp + ./src/DTO/typeoptions.cpp + ./src/DTO/libraryoptions.cpp + ./src/DTO/virtualfolderinfo.cpp + ./src/DTO/addvirtualfolderdto.cpp + ./src/DTO/updatelibraryoptionsdto.cpp + ./src/DTO/mediapathdto.cpp + ./src/DTO/tunerchannelmapping.cpp + ./src/DTO/nameidpair.cpp + ./src/DTO/channelmappingoptionsdto.cpp + ./src/DTO/setchannelmappingdto.cpp + ./src/DTO/guideinfo.cpp + ./src/DTO/livetvservicestatus.cpp + ./src/DTO/livetvserviceinfo.cpp + ./src/DTO/livetvinfo.cpp + ./src/DTO/listingsproviderinfo.cpp + ./src/DTO/getprogramsdto.cpp + ./src/DTO/recordingstatus.cpp + ./src/DTO/keepuntil.cpp + ./src/DTO/daypattern.cpp + ./src/DTO/seriestimerinfodto.cpp + ./src/DTO/seriestimerinfodtoqueryresult.cpp + ./src/DTO/timerinfodto.cpp + ./src/DTO/timerinfodtoqueryresult.cpp + ./src/DTO/tunerhostinfo.cpp + ./src/DTO/localizationoption.cpp + ./src/DTO/playbackerrorcode.cpp + ./src/DTO/playbackinforesponse.cpp + ./src/DTO/playbackinfodto.cpp + ./src/DTO/openlivestreamdto.cpp + ./src/DTO/livestreamresponse.cpp + ./src/DTO/recommendationtype.cpp + ./src/DTO/recommendationdto.cpp + ./src/DTO/notificationlevel.cpp + ./src/DTO/notificationdto.cpp + ./src/DTO/notificationresultdto.cpp + ./src/DTO/notificationssummarydto.cpp + ./src/DTO/notificationtypeinfo.cpp + ./src/DTO/versioninfo.cpp + ./src/DTO/packageinfo.cpp + ./src/DTO/createplaylistdto.cpp + ./src/DTO/playlistcreationresult.cpp + ./src/DTO/playmethod.cpp + ./src/DTO/repeatmode.cpp + ./src/DTO/queueitem.cpp + ./src/DTO/playbackstartinfo.cpp + ./src/DTO/playbackprogressinfo.cpp + ./src/DTO/playbackstopinfo.cpp + ./src/DTO/pluginstatus.cpp + ./src/DTO/plugininfo.cpp + ./src/DTO/basepluginconfiguration.cpp + ./src/DTO/pluginsecurityinfo.cpp + ./src/DTO/quickconnectstate.cpp + ./src/DTO/quickconnectresult.cpp + ./src/DTO/ratingtype.cpp + ./src/DTO/remoteimageinfo.cpp + ./src/DTO/remoteimageresult.cpp + ./src/DTO/imageproviderinfo.cpp + ./src/DTO/taskstate.cpp + ./src/DTO/taskcompletionstatus.cpp + ./src/DTO/taskresult.cpp + ./src/DTO/tasktriggerinfo.cpp + ./src/DTO/taskinfo.cpp + ./src/DTO/searchhint.cpp + ./src/DTO/searchhintresult.cpp + ./src/DTO/playerstateinfo.cpp + ./src/DTO/sessionuserinfo.cpp + ./src/DTO/baseitem.cpp + ./src/DTO/transcodereason.cpp + ./src/DTO/transcodinginfo.cpp + ./src/DTO/sessioninfo.cpp + ./src/DTO/generalcommand.cpp + ./src/DTO/playcommand.cpp + ./src/DTO/playstatecommand.cpp + ./src/DTO/clientcapabilitiesdto.cpp + ./src/DTO/startupconfigurationdto.cpp + ./src/DTO/startupuserdto.cpp + ./src/DTO/startupremoteaccessdto.cpp + ./src/DTO/fontfile.cpp + ./src/DTO/remotesubtitleinfo.cpp + ./src/DTO/uploadsubtitledto.cpp + ./src/DTO/bufferrequestdto.cpp + ./src/DTO/joingrouprequestdto.cpp + ./src/DTO/groupstatetype.cpp + ./src/DTO/groupinfodto.cpp + ./src/DTO/moveplaylistitemrequestdto.cpp + ./src/DTO/newgrouprequestdto.cpp + ./src/DTO/nextitemrequestdto.cpp + ./src/DTO/pingrequestdto.cpp + ./src/DTO/previousitemrequestdto.cpp + ./src/DTO/groupqueuemode.cpp + ./src/DTO/queuerequestdto.cpp + ./src/DTO/readyrequestdto.cpp + ./src/DTO/removefromplaylistrequestdto.cpp + ./src/DTO/seekrequestdto.cpp + ./src/DTO/ignorewaitrequestdto.cpp + ./src/DTO/playrequestdto.cpp + ./src/DTO/setplaylistitemrequestdto.cpp + ./src/DTO/grouprepeatmode.cpp + ./src/DTO/setrepeatmoderequestdto.cpp + ./src/DTO/groupshufflemode.cpp + ./src/DTO/setshufflemoderequestdto.cpp + ./src/DTO/endpointinfo.cpp + ./src/DTO/installationinfo.cpp + ./src/DTO/ffmpeglocation.cpp + ./src/DTO/architecture.cpp + ./src/DTO/systeminfo.cpp + ./src/DTO/publicsysteminfo.cpp + ./src/DTO/logfile.cpp + ./src/DTO/wakeonlaninfo.cpp + ./src/DTO/utctimeresponse.cpp + ./src/DTO/subtitleplaybackmode.cpp + ./src/DTO/userconfiguration.cpp + ./src/DTO/dynamicdayofweek.cpp + ./src/DTO/accessschedule.cpp + ./src/DTO/unrateditem.cpp + ./src/DTO/syncplayuseraccesstype.cpp + ./src/DTO/userpolicy.cpp + ./src/DTO/userdto.cpp + ./src/DTO/authenticationresult.cpp + ./src/DTO/updateusereasypassword.cpp + ./src/DTO/updateuserpassword.cpp + ./src/DTO/authenticateuserbyname.cpp + ./src/DTO/quickconnectdto.cpp + ./src/DTO/forgotpassworddto.cpp + ./src/DTO/forgotpasswordaction.cpp + ./src/DTO/forgotpasswordresult.cpp + ./src/DTO/pinredeemresult.cpp + ./src/DTO/createuserbyname.cpp + ./src/DTO/specialviewoptiondto.cpp + ./src/DTO/libraryupdateinfo.cpp + ./src/DTO/iplugin.cpp + ./src/DTO/playrequest.cpp + ./src/DTO/playstaterequest.cpp + ./src/DTO/timereventinfo.cpp + ./src/DTO/sendcommandtype.cpp + ./src/DTO/sendcommand.cpp + ./src/DTO/groupupdatetype.cpp + ./src/DTO/objectgroupupdate.cpp) diff --git a/core/README.md b/core/README.md new file mode 100644 index 0000000..fe5da49 --- /dev/null +++ b/core/README.md @@ -0,0 +1,9 @@ +# Jellyfin-Qt +This folder contains the core library containing most of the non-interface UI logic and platform-independent parts. + +## Code generation. +Parts of the code (notably the data models) are generated from the OpenApi description provided by the +Jellyfin server. The code generator uses [the D programming language](https://dlang.org/) +and expects to be run through [DMD](https://github.com/dlang/dub). Make sure both a D compiler and DMD are installed. +Afterwards, on Unix-like systems, marking the "script" as executable and running it should be enough. On Windows, +one probably needs to run `dub.exe openapigenerator.d`, but I haven't verified it myself. diff --git a/core/include/JellyfinQt/DTO/accessschedule.h b/core/include/JellyfinQt/DTO/accessschedule.h new file mode 100644 index 0000000..de0bfaf --- /dev/null +++ b/core/include/JellyfinQt/DTO/accessschedule.h @@ -0,0 +1,100 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ACCESSSCHEDULE_H +#define JELLYFIN_DTO_ACCESSSCHEDULE_H + +#include +#include +#include + +#include "JellyfinQt/DTO/dynamicdayofweek.h" + +namespace Jellyfin { +namespace DTO { + +class AccessSchedule : public QObject { + Q_OBJECT +public: + explicit AccessSchedule(QObject *parent = nullptr); + static AccessSchedule *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the id of this instance. + */ + Q_PROPERTY(qint32 jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the id of the associated user. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + Q_PROPERTY(DynamicDayOfWeek dayOfWeek READ dayOfWeek WRITE setDayOfWeek NOTIFY dayOfWeekChanged) + /** + * @brief Gets or sets the start hour. + */ + Q_PROPERTY(double startHour READ startHour WRITE setStartHour NOTIFY startHourChanged) + /** + * @brief Gets or sets the end hour. + */ + Q_PROPERTY(double endHour READ endHour WRITE setEndHour NOTIFY endHourChanged) + + qint32 jellyfinId() const; + void setJellyfinId(qint32 newJellyfinId); + + QString userId() const; + void setUserId(QString newUserId); + + DynamicDayOfWeek dayOfWeek() const; + void setDayOfWeek(DynamicDayOfWeek newDayOfWeek); + + double startHour() const; + void setStartHour(double newStartHour); + + double endHour() const; + void setEndHour(double newEndHour); + +signals: + void jellyfinIdChanged(qint32 newJellyfinId); + void userIdChanged(QString newUserId); + void dayOfWeekChanged(DynamicDayOfWeek newDayOfWeek); + void startHourChanged(double newStartHour); + void endHourChanged(double newEndHour); +protected: + qint32 m_jellyfinId; + QString m_userId; + DynamicDayOfWeek m_dayOfWeek; + double m_startHour; + double m_endHour; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ACCESSSCHEDULE_H diff --git a/core/include/JellyfinQt/DTO/activitylogentry.h b/core/include/JellyfinQt/DTO/activitylogentry.h new file mode 100644 index 0000000..2116b83 --- /dev/null +++ b/core/include/JellyfinQt/DTO/activitylogentry.h @@ -0,0 +1,146 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ACTIVITYLOGENTRY_H +#define JELLYFIN_DTO_ACTIVITYLOGENTRY_H + +#include +#include +#include +#include + +#include "JellyfinQt/DTO/loglevel.h" + +namespace Jellyfin { +namespace DTO { + +class ActivityLogEntry : public QObject { + Q_OBJECT +public: + explicit ActivityLogEntry(QObject *parent = nullptr); + static ActivityLogEntry *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the identifier. + */ + Q_PROPERTY(qint64 jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the overview. + */ + Q_PROPERTY(QString overview READ overview WRITE setOverview NOTIFY overviewChanged) + /** + * @brief Gets or sets the short overview. + */ + Q_PROPERTY(QString shortOverview READ shortOverview WRITE setShortOverview NOTIFY shortOverviewChanged) + /** + * @brief Gets or sets the type. + */ + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets or sets the item identifier. + */ + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Gets or sets the date. + */ + Q_PROPERTY(QDateTime date READ date WRITE setDate NOTIFY dateChanged) + /** + * @brief Gets or sets the user identifier. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + /** + * @brief Gets or sets the user primary image tag. + */ + Q_PROPERTY(QString userPrimaryImageTag READ userPrimaryImageTag WRITE setUserPrimaryImageTag NOTIFY userPrimaryImageTagChanged) + Q_PROPERTY(LogLevel severity READ severity WRITE setSeverity NOTIFY severityChanged) + + qint64 jellyfinId() const; + void setJellyfinId(qint64 newJellyfinId); + + QString name() const; + void setName(QString newName); + + QString overview() const; + void setOverview(QString newOverview); + + QString shortOverview() const; + void setShortOverview(QString newShortOverview); + + QString type() const; + void setType(QString newType); + + QString itemId() const; + void setItemId(QString newItemId); + + QDateTime date() const; + void setDate(QDateTime newDate); + + QString userId() const; + void setUserId(QString newUserId); + + QString userPrimaryImageTag() const; + void setUserPrimaryImageTag(QString newUserPrimaryImageTag); + + LogLevel severity() const; + void setSeverity(LogLevel newSeverity); + +signals: + void jellyfinIdChanged(qint64 newJellyfinId); + void nameChanged(QString newName); + void overviewChanged(QString newOverview); + void shortOverviewChanged(QString newShortOverview); + void typeChanged(QString newType); + void itemIdChanged(QString newItemId); + void dateChanged(QDateTime newDate); + void userIdChanged(QString newUserId); + void userPrimaryImageTagChanged(QString newUserPrimaryImageTag); + void severityChanged(LogLevel newSeverity); +protected: + qint64 m_jellyfinId; + QString m_name; + QString m_overview; + QString m_shortOverview; + QString m_type; + QString m_itemId; + QDateTime m_date; + QString m_userId; + QString m_userPrimaryImageTag; + LogLevel m_severity; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ACTIVITYLOGENTRY_H diff --git a/core/include/JellyfinQt/DTO/activitylogentryqueryresult.h b/core/include/JellyfinQt/DTO/activitylogentryqueryresult.h new file mode 100644 index 0000000..cffc94a --- /dev/null +++ b/core/include/JellyfinQt/DTO/activitylogentryqueryresult.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ACTIVITYLOGENTRYQUERYRESULT_H +#define JELLYFIN_DTO_ACTIVITYLOGENTRYQUERYRESULT_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ActivityLogEntry; + +class ActivityLogEntryQueryResult : public QObject { + Q_OBJECT +public: + explicit ActivityLogEntryQueryResult(QObject *parent = nullptr); + static ActivityLogEntryQueryResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the items. + */ + Q_PROPERTY(QList items READ items WRITE setItems NOTIFY itemsChanged) + /** + * @brief The total number of records available. + */ + Q_PROPERTY(qint32 totalRecordCount READ totalRecordCount WRITE setTotalRecordCount NOTIFY totalRecordCountChanged) + /** + * @brief The index of the first record in Items. + */ + Q_PROPERTY(qint32 startIndex READ startIndex WRITE setStartIndex NOTIFY startIndexChanged) + + QList items() const; + void setItems(QList newItems); + + qint32 totalRecordCount() const; + void setTotalRecordCount(qint32 newTotalRecordCount); + + qint32 startIndex() const; + void setStartIndex(qint32 newStartIndex); + +signals: + void itemsChanged(QList newItems); + void totalRecordCountChanged(qint32 newTotalRecordCount); + void startIndexChanged(qint32 newStartIndex); +protected: + QList m_items; + qint32 m_totalRecordCount; + qint32 m_startIndex; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ACTIVITYLOGENTRYQUERYRESULT_H diff --git a/core/include/JellyfinQt/DTO/addvirtualfolderdto.h b/core/include/JellyfinQt/DTO/addvirtualfolderdto.h new file mode 100644 index 0000000..ce001ef --- /dev/null +++ b/core/include/JellyfinQt/DTO/addvirtualfolderdto.h @@ -0,0 +1,63 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ADDVIRTUALFOLDERDTO_H +#define JELLYFIN_DTO_ADDVIRTUALFOLDERDTO_H + +#include +#include + +namespace Jellyfin { +namespace DTO { + +class LibraryOptions; + +class AddVirtualFolderDto : public QObject { + Q_OBJECT +public: + explicit AddVirtualFolderDto(QObject *parent = nullptr); + static AddVirtualFolderDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(LibraryOptions * libraryOptions READ libraryOptions WRITE setLibraryOptions NOTIFY libraryOptionsChanged) + + LibraryOptions * libraryOptions() const; + void setLibraryOptions(LibraryOptions * newLibraryOptions); + +signals: + void libraryOptionsChanged(LibraryOptions * newLibraryOptions); +protected: + LibraryOptions * m_libraryOptions = nullptr; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ADDVIRTUALFOLDERDTO_H diff --git a/core/include/JellyfinQt/DTO/albuminfo.h b/core/include/JellyfinQt/DTO/albuminfo.h new file mode 100644 index 0000000..9102e4e --- /dev/null +++ b/core/include/JellyfinQt/DTO/albuminfo.h @@ -0,0 +1,163 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ALBUMINFO_H +#define JELLYFIN_DTO_ALBUMINFO_H + +#include +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SongInfo; + +class AlbumInfo : public QObject { + Q_OBJECT +public: + explicit AlbumInfo(QObject *parent = nullptr); + static AlbumInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the metadata language. + */ + Q_PROPERTY(QString metadataLanguage READ metadataLanguage WRITE setMetadataLanguage NOTIFY metadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 year READ year WRITE setYear NOTIFY yearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(bool isAutomated READ isAutomated WRITE setIsAutomated NOTIFY isAutomatedChanged) + /** + * @brief Gets or sets the album artist. + */ + Q_PROPERTY(QStringList albumArtists READ albumArtists WRITE setAlbumArtists NOTIFY albumArtistsChanged) + /** + * @brief Gets or sets the artist provider ids. + */ + Q_PROPERTY(QJsonObject artistProviderIds READ artistProviderIds WRITE setArtistProviderIds NOTIFY artistProviderIdsChanged) + Q_PROPERTY(QList songInfos READ songInfos WRITE setSongInfos NOTIFY songInfosChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + QString metadataLanguage() const; + void setMetadataLanguage(QString newMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 year() const; + void setYear(qint32 newYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + bool isAutomated() const; + void setIsAutomated(bool newIsAutomated); + + QStringList albumArtists() const; + void setAlbumArtists(QStringList newAlbumArtists); + + QJsonObject artistProviderIds() const; + void setArtistProviderIds(QJsonObject newArtistProviderIds); + + QList songInfos() const; + void setSongInfos(QList newSongInfos); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void metadataLanguageChanged(QString newMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void providerIdsChanged(QJsonObject newProviderIds); + void yearChanged(qint32 newYear); + void indexNumberChanged(qint32 newIndexNumber); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void isAutomatedChanged(bool newIsAutomated); + void albumArtistsChanged(QStringList newAlbumArtists); + void artistProviderIdsChanged(QJsonObject newArtistProviderIds); + void songInfosChanged(QList newSongInfos); +protected: + QString m_name; + QString m_path; + QString m_metadataLanguage; + QString m_metadataCountryCode; + QJsonObject m_providerIds; + qint32 m_year; + qint32 m_indexNumber; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + bool m_isAutomated; + QStringList m_albumArtists; + QJsonObject m_artistProviderIds; + QList m_songInfos; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ALBUMINFO_H diff --git a/core/include/JellyfinQt/DTO/albuminforemotesearchquery.h b/core/include/JellyfinQt/DTO/albuminforemotesearchquery.h new file mode 100644 index 0000000..1f13c22 --- /dev/null +++ b/core/include/JellyfinQt/DTO/albuminforemotesearchquery.h @@ -0,0 +1,88 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ALBUMINFOREMOTESEARCHQUERY_H +#define JELLYFIN_DTO_ALBUMINFOREMOTESEARCHQUERY_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class AlbumInfo; + +class AlbumInfoRemoteSearchQuery : public QObject { + Q_OBJECT +public: + explicit AlbumInfoRemoteSearchQuery(QObject *parent = nullptr); + static AlbumInfoRemoteSearchQuery *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(AlbumInfo * searchInfo READ searchInfo WRITE setSearchInfo NOTIFY searchInfoChanged) + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Will only search within the given provider when set. + */ + Q_PROPERTY(QString searchProviderName READ searchProviderName WRITE setSearchProviderName NOTIFY searchProviderNameChanged) + /** + * @brief Gets or sets a value indicating whether disabled providers should be included. + */ + Q_PROPERTY(bool includeDisabledProviders READ includeDisabledProviders WRITE setIncludeDisabledProviders NOTIFY includeDisabledProvidersChanged) + + AlbumInfo * searchInfo() const; + void setSearchInfo(AlbumInfo * newSearchInfo); + + QString itemId() const; + void setItemId(QString newItemId); + + QString searchProviderName() const; + void setSearchProviderName(QString newSearchProviderName); + + bool includeDisabledProviders() const; + void setIncludeDisabledProviders(bool newIncludeDisabledProviders); + +signals: + void searchInfoChanged(AlbumInfo * newSearchInfo); + void itemIdChanged(QString newItemId); + void searchProviderNameChanged(QString newSearchProviderName); + void includeDisabledProvidersChanged(bool newIncludeDisabledProviders); +protected: + AlbumInfo * m_searchInfo = nullptr; + QString m_itemId; + QString m_searchProviderName; + bool m_includeDisabledProviders; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ALBUMINFOREMOTESEARCHQUERY_H diff --git a/core/include/JellyfinQt/DTO/allthememediaresult.h b/core/include/JellyfinQt/DTO/allthememediaresult.h new file mode 100644 index 0000000..25f3dc7 --- /dev/null +++ b/core/include/JellyfinQt/DTO/allthememediaresult.h @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ALLTHEMEMEDIARESULT_H +#define JELLYFIN_DTO_ALLTHEMEMEDIARESULT_H + +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ThemeMediaResult; +class ThemeMediaResult; +class ThemeMediaResult; + +class AllThemeMediaResult : public QObject { + Q_OBJECT +public: + explicit AllThemeMediaResult(QObject *parent = nullptr); + static AllThemeMediaResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(ThemeMediaResult * themeVideosResult READ themeVideosResult WRITE setThemeVideosResult NOTIFY themeVideosResultChanged) + Q_PROPERTY(ThemeMediaResult * themeSongsResult READ themeSongsResult WRITE setThemeSongsResult NOTIFY themeSongsResultChanged) + Q_PROPERTY(ThemeMediaResult * soundtrackSongsResult READ soundtrackSongsResult WRITE setSoundtrackSongsResult NOTIFY soundtrackSongsResultChanged) + + ThemeMediaResult * themeVideosResult() const; + void setThemeVideosResult(ThemeMediaResult * newThemeVideosResult); + + ThemeMediaResult * themeSongsResult() const; + void setThemeSongsResult(ThemeMediaResult * newThemeSongsResult); + + ThemeMediaResult * soundtrackSongsResult() const; + void setSoundtrackSongsResult(ThemeMediaResult * newSoundtrackSongsResult); + +signals: + void themeVideosResultChanged(ThemeMediaResult * newThemeVideosResult); + void themeSongsResultChanged(ThemeMediaResult * newThemeSongsResult); + void soundtrackSongsResultChanged(ThemeMediaResult * newSoundtrackSongsResult); +protected: + ThemeMediaResult * m_themeVideosResult = nullptr; + ThemeMediaResult * m_themeSongsResult = nullptr; + ThemeMediaResult * m_soundtrackSongsResult = nullptr; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ALLTHEMEMEDIARESULT_H diff --git a/core/include/JellyfinQt/DTO/architecture.h b/core/include/JellyfinQt/DTO/architecture.h new file mode 100644 index 0000000..6810a47 --- /dev/null +++ b/core/include/JellyfinQt/DTO/architecture.h @@ -0,0 +1,57 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ARCHITECTURE_H +#define JELLYFIN_DTO_ARCHITECTURE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ArchitectureClass { + Q_GADGET +public: + enum Value { + X86, + X64, + Arm, + Arm64, + Wasm, + }; + Q_ENUM(Value) +private: + explicit ArchitectureClass(); +}; +typedef ArchitectureClass::Value Architecture; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ARCHITECTURE_H diff --git a/core/include/JellyfinQt/DTO/artistinfo.h b/core/include/JellyfinQt/DTO/artistinfo.h new file mode 100644 index 0000000..645b964 --- /dev/null +++ b/core/include/JellyfinQt/DTO/artistinfo.h @@ -0,0 +1,145 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ARTISTINFO_H +#define JELLYFIN_DTO_ARTISTINFO_H + +#include +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SongInfo; + +class ArtistInfo : public QObject { + Q_OBJECT +public: + explicit ArtistInfo(QObject *parent = nullptr); + static ArtistInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the metadata language. + */ + Q_PROPERTY(QString metadataLanguage READ metadataLanguage WRITE setMetadataLanguage NOTIFY metadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 year READ year WRITE setYear NOTIFY yearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(bool isAutomated READ isAutomated WRITE setIsAutomated NOTIFY isAutomatedChanged) + Q_PROPERTY(QList songInfos READ songInfos WRITE setSongInfos NOTIFY songInfosChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + QString metadataLanguage() const; + void setMetadataLanguage(QString newMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 year() const; + void setYear(qint32 newYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + bool isAutomated() const; + void setIsAutomated(bool newIsAutomated); + + QList songInfos() const; + void setSongInfos(QList newSongInfos); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void metadataLanguageChanged(QString newMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void providerIdsChanged(QJsonObject newProviderIds); + void yearChanged(qint32 newYear); + void indexNumberChanged(qint32 newIndexNumber); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void isAutomatedChanged(bool newIsAutomated); + void songInfosChanged(QList newSongInfos); +protected: + QString m_name; + QString m_path; + QString m_metadataLanguage; + QString m_metadataCountryCode; + QJsonObject m_providerIds; + qint32 m_year; + qint32 m_indexNumber; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + bool m_isAutomated; + QList m_songInfos; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ARTISTINFO_H diff --git a/core/include/JellyfinQt/DTO/artistinforemotesearchquery.h b/core/include/JellyfinQt/DTO/artistinforemotesearchquery.h new file mode 100644 index 0000000..505f17d --- /dev/null +++ b/core/include/JellyfinQt/DTO/artistinforemotesearchquery.h @@ -0,0 +1,88 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ARTISTINFOREMOTESEARCHQUERY_H +#define JELLYFIN_DTO_ARTISTINFOREMOTESEARCHQUERY_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ArtistInfo; + +class ArtistInfoRemoteSearchQuery : public QObject { + Q_OBJECT +public: + explicit ArtistInfoRemoteSearchQuery(QObject *parent = nullptr); + static ArtistInfoRemoteSearchQuery *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(ArtistInfo * searchInfo READ searchInfo WRITE setSearchInfo NOTIFY searchInfoChanged) + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Will only search within the given provider when set. + */ + Q_PROPERTY(QString searchProviderName READ searchProviderName WRITE setSearchProviderName NOTIFY searchProviderNameChanged) + /** + * @brief Gets or sets a value indicating whether disabled providers should be included. + */ + Q_PROPERTY(bool includeDisabledProviders READ includeDisabledProviders WRITE setIncludeDisabledProviders NOTIFY includeDisabledProvidersChanged) + + ArtistInfo * searchInfo() const; + void setSearchInfo(ArtistInfo * newSearchInfo); + + QString itemId() const; + void setItemId(QString newItemId); + + QString searchProviderName() const; + void setSearchProviderName(QString newSearchProviderName); + + bool includeDisabledProviders() const; + void setIncludeDisabledProviders(bool newIncludeDisabledProviders); + +signals: + void searchInfoChanged(ArtistInfo * newSearchInfo); + void itemIdChanged(QString newItemId); + void searchProviderNameChanged(QString newSearchProviderName); + void includeDisabledProvidersChanged(bool newIncludeDisabledProviders); +protected: + ArtistInfo * m_searchInfo = nullptr; + QString m_itemId; + QString m_searchProviderName; + bool m_includeDisabledProviders; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ARTISTINFOREMOTESEARCHQUERY_H diff --git a/core/include/JellyfinQt/DTO/authenticateuserbyname.h b/core/include/JellyfinQt/DTO/authenticateuserbyname.h new file mode 100644 index 0000000..0c9bd54 --- /dev/null +++ b/core/include/JellyfinQt/DTO/authenticateuserbyname.h @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_AUTHENTICATEUSERBYNAME_H +#define JELLYFIN_DTO_AUTHENTICATEUSERBYNAME_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class AuthenticateUserByName : public QObject { + Q_OBJECT +public: + explicit AuthenticateUserByName(QObject *parent = nullptr); + static AuthenticateUserByName *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the username. + */ + Q_PROPERTY(QString username READ username WRITE setUsername NOTIFY usernameChanged) + /** + * @brief Gets or sets the plain text password. + */ + Q_PROPERTY(QString pw READ pw WRITE setPw NOTIFY pwChanged) + /** + * @brief Gets or sets the sha1-hashed password. + */ + Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged) + + QString username() const; + void setUsername(QString newUsername); + + QString pw() const; + void setPw(QString newPw); + + QString password() const; + void setPassword(QString newPassword); + +signals: + void usernameChanged(QString newUsername); + void pwChanged(QString newPw); + void passwordChanged(QString newPassword); +protected: + QString m_username; + QString m_pw; + QString m_password; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_AUTHENTICATEUSERBYNAME_H diff --git a/core/include/JellyfinQt/DTO/authenticationinfo.h b/core/include/JellyfinQt/DTO/authenticationinfo.h new file mode 100644 index 0000000..5aec874 --- /dev/null +++ b/core/include/JellyfinQt/DTO/authenticationinfo.h @@ -0,0 +1,159 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_AUTHENTICATIONINFO_H +#define JELLYFIN_DTO_AUTHENTICATIONINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class AuthenticationInfo : public QObject { + Q_OBJECT +public: + explicit AuthenticationInfo(QObject *parent = nullptr); + static AuthenticationInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the identifier. + */ + Q_PROPERTY(qint64 jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the access token. + */ + Q_PROPERTY(QString accessToken READ accessToken WRITE setAccessToken NOTIFY accessTokenChanged) + /** + * @brief Gets or sets the device identifier. + */ + Q_PROPERTY(QString deviceId READ deviceId WRITE setDeviceId NOTIFY deviceIdChanged) + /** + * @brief Gets or sets the name of the application. + */ + Q_PROPERTY(QString appName READ appName WRITE setAppName NOTIFY appNameChanged) + /** + * @brief Gets or sets the application version. + */ + Q_PROPERTY(QString appVersion READ appVersion WRITE setAppVersion NOTIFY appVersionChanged) + /** + * @brief Gets or sets the name of the device. + */ + Q_PROPERTY(QString deviceName READ deviceName WRITE setDeviceName NOTIFY deviceNameChanged) + /** + * @brief Gets or sets the user identifier. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + /** + * @brief Gets or sets a value indicating whether this instance is active. + */ + Q_PROPERTY(bool isActive READ isActive WRITE setIsActive NOTIFY isActiveChanged) + /** + * @brief Gets or sets the date created. + */ + Q_PROPERTY(QDateTime dateCreated READ dateCreated WRITE setDateCreated NOTIFY dateCreatedChanged) + /** + * @brief Gets or sets the date revoked. + */ + Q_PROPERTY(QDateTime dateRevoked READ dateRevoked WRITE setDateRevoked NOTIFY dateRevokedChanged) + Q_PROPERTY(QDateTime dateLastActivity READ dateLastActivity WRITE setDateLastActivity NOTIFY dateLastActivityChanged) + Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged) + + qint64 jellyfinId() const; + void setJellyfinId(qint64 newJellyfinId); + + QString accessToken() const; + void setAccessToken(QString newAccessToken); + + QString deviceId() const; + void setDeviceId(QString newDeviceId); + + QString appName() const; + void setAppName(QString newAppName); + + QString appVersion() const; + void setAppVersion(QString newAppVersion); + + QString deviceName() const; + void setDeviceName(QString newDeviceName); + + QString userId() const; + void setUserId(QString newUserId); + + bool isActive() const; + void setIsActive(bool newIsActive); + + QDateTime dateCreated() const; + void setDateCreated(QDateTime newDateCreated); + + QDateTime dateRevoked() const; + void setDateRevoked(QDateTime newDateRevoked); + + QDateTime dateLastActivity() const; + void setDateLastActivity(QDateTime newDateLastActivity); + + QString userName() const; + void setUserName(QString newUserName); + +signals: + void jellyfinIdChanged(qint64 newJellyfinId); + void accessTokenChanged(QString newAccessToken); + void deviceIdChanged(QString newDeviceId); + void appNameChanged(QString newAppName); + void appVersionChanged(QString newAppVersion); + void deviceNameChanged(QString newDeviceName); + void userIdChanged(QString newUserId); + void isActiveChanged(bool newIsActive); + void dateCreatedChanged(QDateTime newDateCreated); + void dateRevokedChanged(QDateTime newDateRevoked); + void dateLastActivityChanged(QDateTime newDateLastActivity); + void userNameChanged(QString newUserName); +protected: + qint64 m_jellyfinId; + QString m_accessToken; + QString m_deviceId; + QString m_appName; + QString m_appVersion; + QString m_deviceName; + QString m_userId; + bool m_isActive; + QDateTime m_dateCreated; + QDateTime m_dateRevoked; + QDateTime m_dateLastActivity; + QString m_userName; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_AUTHENTICATIONINFO_H diff --git a/core/include/JellyfinQt/DTO/authenticationinfoqueryresult.h b/core/include/JellyfinQt/DTO/authenticationinfoqueryresult.h new file mode 100644 index 0000000..381d592 --- /dev/null +++ b/core/include/JellyfinQt/DTO/authenticationinfoqueryresult.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_AUTHENTICATIONINFOQUERYRESULT_H +#define JELLYFIN_DTO_AUTHENTICATIONINFOQUERYRESULT_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class AuthenticationInfo; + +class AuthenticationInfoQueryResult : public QObject { + Q_OBJECT +public: + explicit AuthenticationInfoQueryResult(QObject *parent = nullptr); + static AuthenticationInfoQueryResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the items. + */ + Q_PROPERTY(QList items READ items WRITE setItems NOTIFY itemsChanged) + /** + * @brief The total number of records available. + */ + Q_PROPERTY(qint32 totalRecordCount READ totalRecordCount WRITE setTotalRecordCount NOTIFY totalRecordCountChanged) + /** + * @brief The index of the first record in Items. + */ + Q_PROPERTY(qint32 startIndex READ startIndex WRITE setStartIndex NOTIFY startIndexChanged) + + QList items() const; + void setItems(QList newItems); + + qint32 totalRecordCount() const; + void setTotalRecordCount(qint32 newTotalRecordCount); + + qint32 startIndex() const; + void setStartIndex(qint32 newStartIndex); + +signals: + void itemsChanged(QList newItems); + void totalRecordCountChanged(qint32 newTotalRecordCount); + void startIndexChanged(qint32 newStartIndex); +protected: + QList m_items; + qint32 m_totalRecordCount; + qint32 m_startIndex; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_AUTHENTICATIONINFOQUERYRESULT_H diff --git a/core/include/JellyfinQt/DTO/authenticationresult.h b/core/include/JellyfinQt/DTO/authenticationresult.h new file mode 100644 index 0000000..9804036 --- /dev/null +++ b/core/include/JellyfinQt/DTO/authenticationresult.h @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_AUTHENTICATIONRESULT_H +#define JELLYFIN_DTO_AUTHENTICATIONRESULT_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SessionInfo; +class UserDto; + +class AuthenticationResult : public QObject { + Q_OBJECT +public: + explicit AuthenticationResult(QObject *parent = nullptr); + static AuthenticationResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(UserDto * user READ user WRITE setUser NOTIFY userChanged) + Q_PROPERTY(SessionInfo * sessionInfo READ sessionInfo WRITE setSessionInfo NOTIFY sessionInfoChanged) + Q_PROPERTY(QString accessToken READ accessToken WRITE setAccessToken NOTIFY accessTokenChanged) + Q_PROPERTY(QString serverId READ serverId WRITE setServerId NOTIFY serverIdChanged) + + UserDto * user() const; + void setUser(UserDto * newUser); + + SessionInfo * sessionInfo() const; + void setSessionInfo(SessionInfo * newSessionInfo); + + QString accessToken() const; + void setAccessToken(QString newAccessToken); + + QString serverId() const; + void setServerId(QString newServerId); + +signals: + void userChanged(UserDto * newUser); + void sessionInfoChanged(SessionInfo * newSessionInfo); + void accessTokenChanged(QString newAccessToken); + void serverIdChanged(QString newServerId); +protected: + UserDto * m_user = nullptr; + SessionInfo * m_sessionInfo = nullptr; + QString m_accessToken; + QString m_serverId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_AUTHENTICATIONRESULT_H diff --git a/core/include/JellyfinQt/DTO/baseitem.h b/core/include/JellyfinQt/DTO/baseitem.h new file mode 100644 index 0000000..46c1c65 --- /dev/null +++ b/core/include/JellyfinQt/DTO/baseitem.h @@ -0,0 +1,130 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_BASEITEM_H +#define JELLYFIN_DTO_BASEITEM_H + +#include +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MediaUrl; + +class BaseItem : public QObject { + Q_OBJECT +public: + explicit BaseItem(QObject *parent = nullptr); + static BaseItem *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(qint64 size READ size WRITE setSize NOTIFY sizeChanged) + Q_PROPERTY(QString container READ container WRITE setContainer NOTIFY containerChanged) + Q_PROPERTY(QDateTime dateLastSaved READ dateLastSaved WRITE setDateLastSaved NOTIFY dateLastSavedChanged) + /** + * @brief Gets or sets the remote trailers. + */ + Q_PROPERTY(QList remoteTrailers READ remoteTrailers WRITE setRemoteTrailers NOTIFY remoteTrailersChanged) + Q_PROPERTY(bool isHD READ isHD WRITE setIsHD NOTIFY isHDChanged) + Q_PROPERTY(bool isShortcut READ isShortcut WRITE setIsShortcut NOTIFY isShortcutChanged) + Q_PROPERTY(QString shortcutPath READ shortcutPath WRITE setShortcutPath NOTIFY shortcutPathChanged) + Q_PROPERTY(qint32 width READ width WRITE setWidth NOTIFY widthChanged) + Q_PROPERTY(qint32 height READ height WRITE setHeight NOTIFY heightChanged) + Q_PROPERTY(QStringList extraIds READ extraIds WRITE setExtraIds NOTIFY extraIdsChanged) + Q_PROPERTY(bool supportsExternalTransfer READ supportsExternalTransfer WRITE setSupportsExternalTransfer NOTIFY supportsExternalTransferChanged) + + qint64 size() const; + void setSize(qint64 newSize); + + QString container() const; + void setContainer(QString newContainer); + + QDateTime dateLastSaved() const; + void setDateLastSaved(QDateTime newDateLastSaved); + + QList remoteTrailers() const; + void setRemoteTrailers(QList newRemoteTrailers); + + bool isHD() const; + void setIsHD(bool newIsHD); + + bool isShortcut() const; + void setIsShortcut(bool newIsShortcut); + + QString shortcutPath() const; + void setShortcutPath(QString newShortcutPath); + + qint32 width() const; + void setWidth(qint32 newWidth); + + qint32 height() const; + void setHeight(qint32 newHeight); + + QStringList extraIds() const; + void setExtraIds(QStringList newExtraIds); + + bool supportsExternalTransfer() const; + void setSupportsExternalTransfer(bool newSupportsExternalTransfer); + +signals: + void sizeChanged(qint64 newSize); + void containerChanged(QString newContainer); + void dateLastSavedChanged(QDateTime newDateLastSaved); + void remoteTrailersChanged(QList newRemoteTrailers); + void isHDChanged(bool newIsHD); + void isShortcutChanged(bool newIsShortcut); + void shortcutPathChanged(QString newShortcutPath); + void widthChanged(qint32 newWidth); + void heightChanged(qint32 newHeight); + void extraIdsChanged(QStringList newExtraIds); + void supportsExternalTransferChanged(bool newSupportsExternalTransfer); +protected: + qint64 m_size; + QString m_container; + QDateTime m_dateLastSaved; + QList m_remoteTrailers; + bool m_isHD; + bool m_isShortcut; + QString m_shortcutPath; + qint32 m_width; + qint32 m_height; + QStringList m_extraIds; + bool m_supportsExternalTransfer; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_BASEITEM_H diff --git a/core/include/JellyfinQt/DTO/baseitemdto.h b/core/include/JellyfinQt/DTO/baseitemdto.h new file mode 100644 index 0000000..e33fb93 --- /dev/null +++ b/core/include/JellyfinQt/DTO/baseitemdto.h @@ -0,0 +1,1310 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_BASEITEMDTO_H +#define JELLYFIN_DTO_BASEITEMDTO_H + +#include +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/channeltype.h" +#include "JellyfinQt/DTO/dayofweek.h" +#include "JellyfinQt/DTO/imageorientation.h" +#include "JellyfinQt/DTO/isotype.h" +#include "JellyfinQt/DTO/locationtype.h" +#include "JellyfinQt/DTO/metadatafield.h" +#include "JellyfinQt/DTO/playaccess.h" +#include "JellyfinQt/DTO/programaudio.h" +#include "JellyfinQt/DTO/video3dformat.h" +#include "JellyfinQt/DTO/videotype.h" + +namespace Jellyfin { +namespace DTO { + +class BaseItemPerson; +class ChapterInfo; +class ExternalUrl; +class MediaSourceInfo; +class MediaStream; +class MediaUrl; +class NameGuidPair; +class NameGuidPair; +class NameGuidPair; +class NameGuidPair; +class UserItemDataDto; + +class BaseItemDto : public QObject { + Q_OBJECT +public: + explicit BaseItemDto(QObject *parent = nullptr); + static BaseItemDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString originalTitle READ originalTitle WRITE setOriginalTitle NOTIFY originalTitleChanged) + /** + * @brief Gets or sets the server identifier. + */ + Q_PROPERTY(QString serverId READ serverId WRITE setServerId NOTIFY serverIdChanged) + /** + * @brief Gets or sets the id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the etag. + */ + Q_PROPERTY(QString etag READ etag WRITE setEtag NOTIFY etagChanged) + /** + * @brief Gets or sets the type of the source. + */ + Q_PROPERTY(QString sourceType READ sourceType WRITE setSourceType NOTIFY sourceTypeChanged) + /** + * @brief Gets or sets the playlist item identifier. + */ + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + /** + * @brief Gets or sets the date created. + */ + Q_PROPERTY(QDateTime dateCreated READ dateCreated WRITE setDateCreated NOTIFY dateCreatedChanged) + Q_PROPERTY(QDateTime dateLastMediaAdded READ dateLastMediaAdded WRITE setDateLastMediaAdded NOTIFY dateLastMediaAddedChanged) + Q_PROPERTY(QString extraType READ extraType WRITE setExtraType NOTIFY extraTypeChanged) + Q_PROPERTY(qint32 airsBeforeSeasonNumber READ airsBeforeSeasonNumber WRITE setAirsBeforeSeasonNumber NOTIFY airsBeforeSeasonNumberChanged) + Q_PROPERTY(qint32 airsAfterSeasonNumber READ airsAfterSeasonNumber WRITE setAirsAfterSeasonNumber NOTIFY airsAfterSeasonNumberChanged) + Q_PROPERTY(qint32 airsBeforeEpisodeNumber READ airsBeforeEpisodeNumber WRITE setAirsBeforeEpisodeNumber NOTIFY airsBeforeEpisodeNumberChanged) + Q_PROPERTY(bool canDelete READ canDelete WRITE setCanDelete NOTIFY canDeleteChanged) + Q_PROPERTY(bool canDownload READ canDownload WRITE setCanDownload NOTIFY canDownloadChanged) + Q_PROPERTY(bool hasSubtitles READ hasSubtitles WRITE setHasSubtitles NOTIFY hasSubtitlesChanged) + Q_PROPERTY(QString preferredMetadataLanguage READ preferredMetadataLanguage WRITE setPreferredMetadataLanguage NOTIFY preferredMetadataLanguageChanged) + Q_PROPERTY(QString preferredMetadataCountryCode READ preferredMetadataCountryCode WRITE setPreferredMetadataCountryCode NOTIFY preferredMetadataCountryCodeChanged) + /** + * @brief Gets or sets a value indicating whether [supports synchronize]. + */ + Q_PROPERTY(bool supportsSync READ supportsSync WRITE setSupportsSync NOTIFY supportsSyncChanged) + Q_PROPERTY(QString container READ container WRITE setContainer NOTIFY containerChanged) + /** + * @brief Gets or sets the name of the sort. + */ + Q_PROPERTY(QString sortName READ sortName WRITE setSortName NOTIFY sortNameChanged) + Q_PROPERTY(QString forcedSortName READ forcedSortName WRITE setForcedSortName NOTIFY forcedSortNameChanged) + Q_PROPERTY(Video3DFormat video3DFormat READ video3DFormat WRITE setVideo3DFormat NOTIFY video3DFormatChanged) + /** + * @brief Gets or sets the premiere date. + */ + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + /** + * @brief Gets or sets the external urls. + */ + Q_PROPERTY(QList externalUrls READ externalUrls WRITE setExternalUrls NOTIFY externalUrlsChanged) + /** + * @brief Gets or sets the media versions. + */ + Q_PROPERTY(QList mediaSources READ mediaSources WRITE setMediaSources NOTIFY mediaSourcesChanged) + /** + * @brief Gets or sets the critic rating. + */ + Q_PROPERTY(float criticRating READ criticRating WRITE setCriticRating NOTIFY criticRatingChanged) + Q_PROPERTY(QStringList productionLocations READ productionLocations WRITE setProductionLocations NOTIFY productionLocationsChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + Q_PROPERTY(bool enableMediaSourceDisplay READ enableMediaSourceDisplay WRITE setEnableMediaSourceDisplay NOTIFY enableMediaSourceDisplayChanged) + /** + * @brief Gets or sets the official rating. + */ + Q_PROPERTY(QString officialRating READ officialRating WRITE setOfficialRating NOTIFY officialRatingChanged) + /** + * @brief Gets or sets the custom rating. + */ + Q_PROPERTY(QString customRating READ customRating WRITE setCustomRating NOTIFY customRatingChanged) + /** + * @brief Gets or sets the channel identifier. + */ + Q_PROPERTY(QString channelId READ channelId WRITE setChannelId NOTIFY channelIdChanged) + Q_PROPERTY(QString channelName READ channelName WRITE setChannelName NOTIFY channelNameChanged) + /** + * @brief Gets or sets the overview. + */ + Q_PROPERTY(QString overview READ overview WRITE setOverview NOTIFY overviewChanged) + /** + * @brief Gets or sets the taglines. + */ + Q_PROPERTY(QStringList taglines READ taglines WRITE setTaglines NOTIFY taglinesChanged) + /** + * @brief Gets or sets the genres. + */ + Q_PROPERTY(QStringList genres READ genres WRITE setGenres NOTIFY genresChanged) + /** + * @brief Gets or sets the community rating. + */ + Q_PROPERTY(float communityRating READ communityRating WRITE setCommunityRating NOTIFY communityRatingChanged) + /** + * @brief Gets or sets the cumulative run time ticks. + */ + Q_PROPERTY(qint64 cumulativeRunTimeTicks READ cumulativeRunTimeTicks WRITE setCumulativeRunTimeTicks NOTIFY cumulativeRunTimeTicksChanged) + /** + * @brief Gets or sets the run time ticks. + */ + Q_PROPERTY(qint64 runTimeTicks READ runTimeTicks WRITE setRunTimeTicks NOTIFY runTimeTicksChanged) + Q_PROPERTY(PlayAccess playAccess READ playAccess WRITE setPlayAccess NOTIFY playAccessChanged) + /** + * @brief Gets or sets the aspect ratio. + */ + Q_PROPERTY(QString aspectRatio READ aspectRatio WRITE setAspectRatio NOTIFY aspectRatioChanged) + /** + * @brief Gets or sets the production year. + */ + Q_PROPERTY(qint32 productionYear READ productionYear WRITE setProductionYear NOTIFY productionYearChanged) + /** + * @brief Gets or sets a value indicating whether this instance is place holder. + */ + Q_PROPERTY(bool isPlaceHolder READ isPlaceHolder WRITE setIsPlaceHolder NOTIFY isPlaceHolderChanged) + /** + * @brief Gets or sets the number. + */ + Q_PROPERTY(QString number READ number WRITE setNumber NOTIFY numberChanged) + Q_PROPERTY(QString channelNumber READ channelNumber WRITE setChannelNumber NOTIFY channelNumberChanged) + /** + * @brief Gets or sets the index number. + */ + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + /** + * @brief Gets or sets the index number end. + */ + Q_PROPERTY(qint32 indexNumberEnd READ indexNumberEnd WRITE setIndexNumberEnd NOTIFY indexNumberEndChanged) + /** + * @brief Gets or sets the parent index number. + */ + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + /** + * @brief Gets or sets the trailer urls. + */ + Q_PROPERTY(QList remoteTrailers READ remoteTrailers WRITE setRemoteTrailers NOTIFY remoteTrailersChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets a value indicating whether this instance is HD. + */ + Q_PROPERTY(bool isHD READ isHD WRITE setIsHD NOTIFY isHDChanged) + /** + * @brief Gets or sets a value indicating whether this instance is folder. + */ + Q_PROPERTY(bool isFolder READ isFolder WRITE setIsFolder NOTIFY isFolderChanged) + /** + * @brief Gets or sets the parent id. + */ + Q_PROPERTY(QString parentId READ parentId WRITE setParentId NOTIFY parentIdChanged) + /** + * @brief Gets or sets the type. + */ + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets or sets the people. + */ + Q_PROPERTY(QList people READ people WRITE setPeople NOTIFY peopleChanged) + /** + * @brief Gets or sets the studios. + */ + Q_PROPERTY(QList studios READ studios WRITE setStudios NOTIFY studiosChanged) + Q_PROPERTY(QList genreItems READ genreItems WRITE setGenreItems NOTIFY genreItemsChanged) + /** + * @brief If the item does not have a logo, this will hold the Id of the Parent that has one. + */ + Q_PROPERTY(QString parentLogoItemId READ parentLogoItemId WRITE setParentLogoItemId NOTIFY parentLogoItemIdChanged) + /** + * @brief If the item does not have any backdrops, this will hold the Id of the Parent that has one. + */ + Q_PROPERTY(QString parentBackdropItemId READ parentBackdropItemId WRITE setParentBackdropItemId NOTIFY parentBackdropItemIdChanged) + /** + * @brief Gets or sets the parent backdrop image tags. + */ + Q_PROPERTY(QStringList parentBackdropImageTags READ parentBackdropImageTags WRITE setParentBackdropImageTags NOTIFY parentBackdropImageTagsChanged) + /** + * @brief Gets or sets the local trailer count. + */ + Q_PROPERTY(qint32 localTrailerCount READ localTrailerCount WRITE setLocalTrailerCount NOTIFY localTrailerCountChanged) + Q_PROPERTY(UserItemDataDto * userData READ userData WRITE setUserData NOTIFY userDataChanged) + /** + * @brief Gets or sets the recursive item count. + */ + Q_PROPERTY(qint32 recursiveItemCount READ recursiveItemCount WRITE setRecursiveItemCount NOTIFY recursiveItemCountChanged) + /** + * @brief Gets or sets the child count. + */ + Q_PROPERTY(qint32 childCount READ childCount WRITE setChildCount NOTIFY childCountChanged) + /** + * @brief Gets or sets the name of the series. + */ + Q_PROPERTY(QString seriesName READ seriesName WRITE setSeriesName NOTIFY seriesNameChanged) + /** + * @brief Gets or sets the series id. + */ + Q_PROPERTY(QString seriesId READ seriesId WRITE setSeriesId NOTIFY seriesIdChanged) + /** + * @brief Gets or sets the season identifier. + */ + Q_PROPERTY(QString seasonId READ seasonId WRITE setSeasonId NOTIFY seasonIdChanged) + /** + * @brief Gets or sets the special feature count. + */ + Q_PROPERTY(qint32 specialFeatureCount READ specialFeatureCount WRITE setSpecialFeatureCount NOTIFY specialFeatureCountChanged) + /** + * @brief Gets or sets the display preferences id. + */ + Q_PROPERTY(QString displayPreferencesId READ displayPreferencesId WRITE setDisplayPreferencesId NOTIFY displayPreferencesIdChanged) + /** + * @brief Gets or sets the status. + */ + Q_PROPERTY(QString status READ status WRITE setStatus NOTIFY statusChanged) + /** + * @brief Gets or sets the air time. + */ + Q_PROPERTY(QString airTime READ airTime WRITE setAirTime NOTIFY airTimeChanged) + /** + * @brief Gets or sets the air days. + */ + Q_PROPERTY(QList airDays READ airDays WRITE setAirDays NOTIFY airDaysChanged) + /** + * @brief Gets or sets the tags. + */ + Q_PROPERTY(QStringList tags READ tags WRITE setTags NOTIFY tagsChanged) + /** + * @brief Gets or sets the primary image aspect ratio, after image enhancements. + */ + Q_PROPERTY(double primaryImageAspectRatio READ primaryImageAspectRatio WRITE setPrimaryImageAspectRatio NOTIFY primaryImageAspectRatioChanged) + /** + * @brief Gets or sets the artists. + */ + Q_PROPERTY(QStringList artists READ artists WRITE setArtists NOTIFY artistsChanged) + /** + * @brief Gets or sets the artist items. + */ + Q_PROPERTY(QList artistItems READ artistItems WRITE setArtistItems NOTIFY artistItemsChanged) + /** + * @brief Gets or sets the album. + */ + Q_PROPERTY(QString album READ album WRITE setAlbum NOTIFY albumChanged) + /** + * @brief Gets or sets the type of the collection. + */ + Q_PROPERTY(QString collectionType READ collectionType WRITE setCollectionType NOTIFY collectionTypeChanged) + /** + * @brief Gets or sets the display order. + */ + Q_PROPERTY(QString displayOrder READ displayOrder WRITE setDisplayOrder NOTIFY displayOrderChanged) + /** + * @brief Gets or sets the album id. + */ + Q_PROPERTY(QString albumId READ albumId WRITE setAlbumId NOTIFY albumIdChanged) + /** + * @brief Gets or sets the album image tag. + */ + Q_PROPERTY(QString albumPrimaryImageTag READ albumPrimaryImageTag WRITE setAlbumPrimaryImageTag NOTIFY albumPrimaryImageTagChanged) + /** + * @brief Gets or sets the series primary image tag. + */ + Q_PROPERTY(QString seriesPrimaryImageTag READ seriesPrimaryImageTag WRITE setSeriesPrimaryImageTag NOTIFY seriesPrimaryImageTagChanged) + /** + * @brief Gets or sets the album artist. + */ + Q_PROPERTY(QString albumArtist READ albumArtist WRITE setAlbumArtist NOTIFY albumArtistChanged) + /** + * @brief Gets or sets the album artists. + */ + Q_PROPERTY(QList albumArtists READ albumArtists WRITE setAlbumArtists NOTIFY albumArtistsChanged) + /** + * @brief Gets or sets the name of the season. + */ + Q_PROPERTY(QString seasonName READ seasonName WRITE setSeasonName NOTIFY seasonNameChanged) + /** + * @brief Gets or sets the media streams. + */ + Q_PROPERTY(QList mediaStreams READ mediaStreams WRITE setMediaStreams NOTIFY mediaStreamsChanged) + Q_PROPERTY(VideoType videoType READ videoType WRITE setVideoType NOTIFY videoTypeChanged) + /** + * @brief Gets or sets the part count. + */ + Q_PROPERTY(qint32 partCount READ partCount WRITE setPartCount NOTIFY partCountChanged) + Q_PROPERTY(qint32 mediaSourceCount READ mediaSourceCount WRITE setMediaSourceCount NOTIFY mediaSourceCountChanged) + /** + * @brief Gets or sets the image tags. + */ + Q_PROPERTY(QJsonObject imageTags READ imageTags WRITE setImageTags NOTIFY imageTagsChanged) + /** + * @brief Gets or sets the backdrop image tags. + */ + Q_PROPERTY(QStringList backdropImageTags READ backdropImageTags WRITE setBackdropImageTags NOTIFY backdropImageTagsChanged) + /** + * @brief Gets or sets the screenshot image tags. + */ + Q_PROPERTY(QStringList screenshotImageTags READ screenshotImageTags WRITE setScreenshotImageTags NOTIFY screenshotImageTagsChanged) + /** + * @brief Gets or sets the parent logo image tag. + */ + Q_PROPERTY(QString parentLogoImageTag READ parentLogoImageTag WRITE setParentLogoImageTag NOTIFY parentLogoImageTagChanged) + /** + * @brief If the item does not have a art, this will hold the Id of the Parent that has one. + */ + Q_PROPERTY(QString parentArtItemId READ parentArtItemId WRITE setParentArtItemId NOTIFY parentArtItemIdChanged) + /** + * @brief Gets or sets the parent art image tag. + */ + Q_PROPERTY(QString parentArtImageTag READ parentArtImageTag WRITE setParentArtImageTag NOTIFY parentArtImageTagChanged) + /** + * @brief Gets or sets the series thumb image tag. + */ + Q_PROPERTY(QString seriesThumbImageTag READ seriesThumbImageTag WRITE setSeriesThumbImageTag NOTIFY seriesThumbImageTagChanged) + /** + * @brief Gets or sets the blurhashes for the image tags. +Maps image type to dictionary mapping image tag to blurhash value. + */ + Q_PROPERTY(QJsonObject imageBlurHashes READ imageBlurHashes WRITE setImageBlurHashes NOTIFY imageBlurHashesChanged) + /** + * @brief Gets or sets the series studio. + */ + Q_PROPERTY(QString seriesStudio READ seriesStudio WRITE setSeriesStudio NOTIFY seriesStudioChanged) + /** + * @brief Gets or sets the parent thumb item id. + */ + Q_PROPERTY(QString parentThumbItemId READ parentThumbItemId WRITE setParentThumbItemId NOTIFY parentThumbItemIdChanged) + /** + * @brief Gets or sets the parent thumb image tag. + */ + Q_PROPERTY(QString parentThumbImageTag READ parentThumbImageTag WRITE setParentThumbImageTag NOTIFY parentThumbImageTagChanged) + /** + * @brief Gets or sets the parent primary image item identifier. + */ + Q_PROPERTY(QString parentPrimaryImageItemId READ parentPrimaryImageItemId WRITE setParentPrimaryImageItemId NOTIFY parentPrimaryImageItemIdChanged) + /** + * @brief Gets or sets the parent primary image tag. + */ + Q_PROPERTY(QString parentPrimaryImageTag READ parentPrimaryImageTag WRITE setParentPrimaryImageTag NOTIFY parentPrimaryImageTagChanged) + /** + * @brief Gets or sets the chapters. + */ + Q_PROPERTY(QList chapters READ chapters WRITE setChapters NOTIFY chaptersChanged) + Q_PROPERTY(LocationType locationType READ locationType WRITE setLocationType NOTIFY locationTypeChanged) + Q_PROPERTY(IsoType isoType READ isoType WRITE setIsoType NOTIFY isoTypeChanged) + /** + * @brief Gets or sets the type of the media. + */ + Q_PROPERTY(QString mediaType READ mediaType WRITE setMediaType NOTIFY mediaTypeChanged) + /** + * @brief Gets or sets the end date. + */ + Q_PROPERTY(QDateTime endDate READ endDate WRITE setEndDate NOTIFY endDateChanged) + /** + * @brief Gets or sets the locked fields. + */ + Q_PROPERTY(QList lockedFields READ lockedFields WRITE setLockedFields NOTIFY lockedFieldsChanged) + /** + * @brief Gets or sets the trailer count. + */ + Q_PROPERTY(qint32 trailerCount READ trailerCount WRITE setTrailerCount NOTIFY trailerCountChanged) + /** + * @brief Gets or sets the movie count. + */ + Q_PROPERTY(qint32 movieCount READ movieCount WRITE setMovieCount NOTIFY movieCountChanged) + /** + * @brief Gets or sets the series count. + */ + Q_PROPERTY(qint32 seriesCount READ seriesCount WRITE setSeriesCount NOTIFY seriesCountChanged) + Q_PROPERTY(qint32 programCount READ programCount WRITE setProgramCount NOTIFY programCountChanged) + /** + * @brief Gets or sets the episode count. + */ + Q_PROPERTY(qint32 episodeCount READ episodeCount WRITE setEpisodeCount NOTIFY episodeCountChanged) + /** + * @brief Gets or sets the song count. + */ + Q_PROPERTY(qint32 songCount READ songCount WRITE setSongCount NOTIFY songCountChanged) + /** + * @brief Gets or sets the album count. + */ + Q_PROPERTY(qint32 albumCount READ albumCount WRITE setAlbumCount NOTIFY albumCountChanged) + Q_PROPERTY(qint32 artistCount READ artistCount WRITE setArtistCount NOTIFY artistCountChanged) + /** + * @brief Gets or sets the music video count. + */ + Q_PROPERTY(qint32 musicVideoCount READ musicVideoCount WRITE setMusicVideoCount NOTIFY musicVideoCountChanged) + /** + * @brief Gets or sets a value indicating whether [enable internet providers]. + */ + Q_PROPERTY(bool lockData READ lockData WRITE setLockData NOTIFY lockDataChanged) + Q_PROPERTY(qint32 width READ width WRITE setWidth NOTIFY widthChanged) + Q_PROPERTY(qint32 height READ height WRITE setHeight NOTIFY heightChanged) + Q_PROPERTY(QString cameraMake READ cameraMake WRITE setCameraMake NOTIFY cameraMakeChanged) + Q_PROPERTY(QString cameraModel READ cameraModel WRITE setCameraModel NOTIFY cameraModelChanged) + Q_PROPERTY(QString software READ software WRITE setSoftware NOTIFY softwareChanged) + Q_PROPERTY(double exposureTime READ exposureTime WRITE setExposureTime NOTIFY exposureTimeChanged) + Q_PROPERTY(double focalLength READ focalLength WRITE setFocalLength NOTIFY focalLengthChanged) + Q_PROPERTY(ImageOrientation imageOrientation READ imageOrientation WRITE setImageOrientation NOTIFY imageOrientationChanged) + Q_PROPERTY(double aperture READ aperture WRITE setAperture NOTIFY apertureChanged) + Q_PROPERTY(double shutterSpeed READ shutterSpeed WRITE setShutterSpeed NOTIFY shutterSpeedChanged) + Q_PROPERTY(double latitude READ latitude WRITE setLatitude NOTIFY latitudeChanged) + Q_PROPERTY(double longitude READ longitude WRITE setLongitude NOTIFY longitudeChanged) + Q_PROPERTY(double altitude READ altitude WRITE setAltitude NOTIFY altitudeChanged) + Q_PROPERTY(qint32 isoSpeedRating READ isoSpeedRating WRITE setIsoSpeedRating NOTIFY isoSpeedRatingChanged) + /** + * @brief Gets or sets the series timer identifier. + */ + Q_PROPERTY(QString seriesTimerId READ seriesTimerId WRITE setSeriesTimerId NOTIFY seriesTimerIdChanged) + /** + * @brief Gets or sets the program identifier. + */ + Q_PROPERTY(QString programId READ programId WRITE setProgramId NOTIFY programIdChanged) + /** + * @brief Gets or sets the channel primary image tag. + */ + Q_PROPERTY(QString channelPrimaryImageTag READ channelPrimaryImageTag WRITE setChannelPrimaryImageTag NOTIFY channelPrimaryImageTagChanged) + /** + * @brief The start date of the recording, in UTC. + */ + Q_PROPERTY(QDateTime startDate READ startDate WRITE setStartDate NOTIFY startDateChanged) + /** + * @brief Gets or sets the completion percentage. + */ + Q_PROPERTY(double completionPercentage READ completionPercentage WRITE setCompletionPercentage NOTIFY completionPercentageChanged) + /** + * @brief Gets or sets a value indicating whether this instance is repeat. + */ + Q_PROPERTY(bool isRepeat READ isRepeat WRITE setIsRepeat NOTIFY isRepeatChanged) + /** + * @brief Gets or sets the episode title. + */ + Q_PROPERTY(QString episodeTitle READ episodeTitle WRITE setEpisodeTitle NOTIFY episodeTitleChanged) + Q_PROPERTY(ChannelType channelType READ channelType WRITE setChannelType NOTIFY channelTypeChanged) + Q_PROPERTY(ProgramAudio audio READ audio WRITE setAudio NOTIFY audioChanged) + /** + * @brief Gets or sets a value indicating whether this instance is movie. + */ + Q_PROPERTY(bool isMovie READ isMovie WRITE setIsMovie NOTIFY isMovieChanged) + /** + * @brief Gets or sets a value indicating whether this instance is sports. + */ + Q_PROPERTY(bool isSports READ isSports WRITE setIsSports NOTIFY isSportsChanged) + /** + * @brief Gets or sets a value indicating whether this instance is series. + */ + Q_PROPERTY(bool isSeries READ isSeries WRITE setIsSeries NOTIFY isSeriesChanged) + /** + * @brief Gets or sets a value indicating whether this instance is live. + */ + Q_PROPERTY(bool isLive READ isLive WRITE setIsLive NOTIFY isLiveChanged) + /** + * @brief Gets or sets a value indicating whether this instance is news. + */ + Q_PROPERTY(bool isNews READ isNews WRITE setIsNews NOTIFY isNewsChanged) + /** + * @brief Gets or sets a value indicating whether this instance is kids. + */ + Q_PROPERTY(bool isKids READ isKids WRITE setIsKids NOTIFY isKidsChanged) + /** + * @brief Gets or sets a value indicating whether this instance is premiere. + */ + Q_PROPERTY(bool isPremiere READ isPremiere WRITE setIsPremiere NOTIFY isPremiereChanged) + /** + * @brief Gets or sets the timer identifier. + */ + Q_PROPERTY(QString timerId READ timerId WRITE setTimerId NOTIFY timerIdChanged) + Q_PROPERTY(BaseItemDto * currentProgram READ currentProgram WRITE setCurrentProgram NOTIFY currentProgramChanged) + + QString name() const; + void setName(QString newName); + + QString originalTitle() const; + void setOriginalTitle(QString newOriginalTitle); + + QString serverId() const; + void setServerId(QString newServerId); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString etag() const; + void setEtag(QString newEtag); + + QString sourceType() const; + void setSourceType(QString newSourceType); + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + + QDateTime dateCreated() const; + void setDateCreated(QDateTime newDateCreated); + + QDateTime dateLastMediaAdded() const; + void setDateLastMediaAdded(QDateTime newDateLastMediaAdded); + + QString extraType() const; + void setExtraType(QString newExtraType); + + qint32 airsBeforeSeasonNumber() const; + void setAirsBeforeSeasonNumber(qint32 newAirsBeforeSeasonNumber); + + qint32 airsAfterSeasonNumber() const; + void setAirsAfterSeasonNumber(qint32 newAirsAfterSeasonNumber); + + qint32 airsBeforeEpisodeNumber() const; + void setAirsBeforeEpisodeNumber(qint32 newAirsBeforeEpisodeNumber); + + bool canDelete() const; + void setCanDelete(bool newCanDelete); + + bool canDownload() const; + void setCanDownload(bool newCanDownload); + + bool hasSubtitles() const; + void setHasSubtitles(bool newHasSubtitles); + + QString preferredMetadataLanguage() const; + void setPreferredMetadataLanguage(QString newPreferredMetadataLanguage); + + QString preferredMetadataCountryCode() const; + void setPreferredMetadataCountryCode(QString newPreferredMetadataCountryCode); + + bool supportsSync() const; + void setSupportsSync(bool newSupportsSync); + + QString container() const; + void setContainer(QString newContainer); + + QString sortName() const; + void setSortName(QString newSortName); + + QString forcedSortName() const; + void setForcedSortName(QString newForcedSortName); + + Video3DFormat video3DFormat() const; + void setVideo3DFormat(Video3DFormat newVideo3DFormat); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + QList externalUrls() const; + void setExternalUrls(QList newExternalUrls); + + QList mediaSources() const; + void setMediaSources(QList newMediaSources); + + float criticRating() const; + void setCriticRating(float newCriticRating); + + QStringList productionLocations() const; + void setProductionLocations(QStringList newProductionLocations); + + QString path() const; + void setPath(QString newPath); + + bool enableMediaSourceDisplay() const; + void setEnableMediaSourceDisplay(bool newEnableMediaSourceDisplay); + + QString officialRating() const; + void setOfficialRating(QString newOfficialRating); + + QString customRating() const; + void setCustomRating(QString newCustomRating); + + QString channelId() const; + void setChannelId(QString newChannelId); + + QString channelName() const; + void setChannelName(QString newChannelName); + + QString overview() const; + void setOverview(QString newOverview); + + QStringList taglines() const; + void setTaglines(QStringList newTaglines); + + QStringList genres() const; + void setGenres(QStringList newGenres); + + float communityRating() const; + void setCommunityRating(float newCommunityRating); + + qint64 cumulativeRunTimeTicks() const; + void setCumulativeRunTimeTicks(qint64 newCumulativeRunTimeTicks); + + qint64 runTimeTicks() const; + void setRunTimeTicks(qint64 newRunTimeTicks); + + PlayAccess playAccess() const; + void setPlayAccess(PlayAccess newPlayAccess); + + QString aspectRatio() const; + void setAspectRatio(QString newAspectRatio); + + qint32 productionYear() const; + void setProductionYear(qint32 newProductionYear); + + bool isPlaceHolder() const; + void setIsPlaceHolder(bool newIsPlaceHolder); + + QString number() const; + void setNumber(QString newNumber); + + QString channelNumber() const; + void setChannelNumber(QString newChannelNumber); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 indexNumberEnd() const; + void setIndexNumberEnd(qint32 newIndexNumberEnd); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QList remoteTrailers() const; + void setRemoteTrailers(QList newRemoteTrailers); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + bool isHD() const; + void setIsHD(bool newIsHD); + + bool isFolder() const; + void setIsFolder(bool newIsFolder); + + QString parentId() const; + void setParentId(QString newParentId); + + QString type() const; + void setType(QString newType); + + QList people() const; + void setPeople(QList newPeople); + + QList studios() const; + void setStudios(QList newStudios); + + QList genreItems() const; + void setGenreItems(QList newGenreItems); + + QString parentLogoItemId() const; + void setParentLogoItemId(QString newParentLogoItemId); + + QString parentBackdropItemId() const; + void setParentBackdropItemId(QString newParentBackdropItemId); + + QStringList parentBackdropImageTags() const; + void setParentBackdropImageTags(QStringList newParentBackdropImageTags); + + qint32 localTrailerCount() const; + void setLocalTrailerCount(qint32 newLocalTrailerCount); + + UserItemDataDto * userData() const; + void setUserData(UserItemDataDto * newUserData); + + qint32 recursiveItemCount() const; + void setRecursiveItemCount(qint32 newRecursiveItemCount); + + qint32 childCount() const; + void setChildCount(qint32 newChildCount); + + QString seriesName() const; + void setSeriesName(QString newSeriesName); + + QString seriesId() const; + void setSeriesId(QString newSeriesId); + + QString seasonId() const; + void setSeasonId(QString newSeasonId); + + qint32 specialFeatureCount() const; + void setSpecialFeatureCount(qint32 newSpecialFeatureCount); + + QString displayPreferencesId() const; + void setDisplayPreferencesId(QString newDisplayPreferencesId); + + QString status() const; + void setStatus(QString newStatus); + + QString airTime() const; + void setAirTime(QString newAirTime); + + QList airDays() const; + void setAirDays(QList newAirDays); + + QStringList tags() const; + void setTags(QStringList newTags); + + double primaryImageAspectRatio() const; + void setPrimaryImageAspectRatio(double newPrimaryImageAspectRatio); + + QStringList artists() const; + void setArtists(QStringList newArtists); + + QList artistItems() const; + void setArtistItems(QList newArtistItems); + + QString album() const; + void setAlbum(QString newAlbum); + + QString collectionType() const; + void setCollectionType(QString newCollectionType); + + QString displayOrder() const; + void setDisplayOrder(QString newDisplayOrder); + + QString albumId() const; + void setAlbumId(QString newAlbumId); + + QString albumPrimaryImageTag() const; + void setAlbumPrimaryImageTag(QString newAlbumPrimaryImageTag); + + QString seriesPrimaryImageTag() const; + void setSeriesPrimaryImageTag(QString newSeriesPrimaryImageTag); + + QString albumArtist() const; + void setAlbumArtist(QString newAlbumArtist); + + QList albumArtists() const; + void setAlbumArtists(QList newAlbumArtists); + + QString seasonName() const; + void setSeasonName(QString newSeasonName); + + QList mediaStreams() const; + void setMediaStreams(QList newMediaStreams); + + VideoType videoType() const; + void setVideoType(VideoType newVideoType); + + qint32 partCount() const; + void setPartCount(qint32 newPartCount); + + qint32 mediaSourceCount() const; + void setMediaSourceCount(qint32 newMediaSourceCount); + + QJsonObject imageTags() const; + void setImageTags(QJsonObject newImageTags); + + QStringList backdropImageTags() const; + void setBackdropImageTags(QStringList newBackdropImageTags); + + QStringList screenshotImageTags() const; + void setScreenshotImageTags(QStringList newScreenshotImageTags); + + QString parentLogoImageTag() const; + void setParentLogoImageTag(QString newParentLogoImageTag); + + QString parentArtItemId() const; + void setParentArtItemId(QString newParentArtItemId); + + QString parentArtImageTag() const; + void setParentArtImageTag(QString newParentArtImageTag); + + QString seriesThumbImageTag() const; + void setSeriesThumbImageTag(QString newSeriesThumbImageTag); + + QJsonObject imageBlurHashes() const; + void setImageBlurHashes(QJsonObject newImageBlurHashes); + + QString seriesStudio() const; + void setSeriesStudio(QString newSeriesStudio); + + QString parentThumbItemId() const; + void setParentThumbItemId(QString newParentThumbItemId); + + QString parentThumbImageTag() const; + void setParentThumbImageTag(QString newParentThumbImageTag); + + QString parentPrimaryImageItemId() const; + void setParentPrimaryImageItemId(QString newParentPrimaryImageItemId); + + QString parentPrimaryImageTag() const; + void setParentPrimaryImageTag(QString newParentPrimaryImageTag); + + QList chapters() const; + void setChapters(QList newChapters); + + LocationType locationType() const; + void setLocationType(LocationType newLocationType); + + IsoType isoType() const; + void setIsoType(IsoType newIsoType); + + QString mediaType() const; + void setMediaType(QString newMediaType); + + QDateTime endDate() const; + void setEndDate(QDateTime newEndDate); + + QList lockedFields() const; + void setLockedFields(QList newLockedFields); + + qint32 trailerCount() const; + void setTrailerCount(qint32 newTrailerCount); + + qint32 movieCount() const; + void setMovieCount(qint32 newMovieCount); + + qint32 seriesCount() const; + void setSeriesCount(qint32 newSeriesCount); + + qint32 programCount() const; + void setProgramCount(qint32 newProgramCount); + + qint32 episodeCount() const; + void setEpisodeCount(qint32 newEpisodeCount); + + qint32 songCount() const; + void setSongCount(qint32 newSongCount); + + qint32 albumCount() const; + void setAlbumCount(qint32 newAlbumCount); + + qint32 artistCount() const; + void setArtistCount(qint32 newArtistCount); + + qint32 musicVideoCount() const; + void setMusicVideoCount(qint32 newMusicVideoCount); + + bool lockData() const; + void setLockData(bool newLockData); + + qint32 width() const; + void setWidth(qint32 newWidth); + + qint32 height() const; + void setHeight(qint32 newHeight); + + QString cameraMake() const; + void setCameraMake(QString newCameraMake); + + QString cameraModel() const; + void setCameraModel(QString newCameraModel); + + QString software() const; + void setSoftware(QString newSoftware); + + double exposureTime() const; + void setExposureTime(double newExposureTime); + + double focalLength() const; + void setFocalLength(double newFocalLength); + + ImageOrientation imageOrientation() const; + void setImageOrientation(ImageOrientation newImageOrientation); + + double aperture() const; + void setAperture(double newAperture); + + double shutterSpeed() const; + void setShutterSpeed(double newShutterSpeed); + + double latitude() const; + void setLatitude(double newLatitude); + + double longitude() const; + void setLongitude(double newLongitude); + + double altitude() const; + void setAltitude(double newAltitude); + + qint32 isoSpeedRating() const; + void setIsoSpeedRating(qint32 newIsoSpeedRating); + + QString seriesTimerId() const; + void setSeriesTimerId(QString newSeriesTimerId); + + QString programId() const; + void setProgramId(QString newProgramId); + + QString channelPrimaryImageTag() const; + void setChannelPrimaryImageTag(QString newChannelPrimaryImageTag); + + QDateTime startDate() const; + void setStartDate(QDateTime newStartDate); + + double completionPercentage() const; + void setCompletionPercentage(double newCompletionPercentage); + + bool isRepeat() const; + void setIsRepeat(bool newIsRepeat); + + QString episodeTitle() const; + void setEpisodeTitle(QString newEpisodeTitle); + + ChannelType channelType() const; + void setChannelType(ChannelType newChannelType); + + ProgramAudio audio() const; + void setAudio(ProgramAudio newAudio); + + bool isMovie() const; + void setIsMovie(bool newIsMovie); + + bool isSports() const; + void setIsSports(bool newIsSports); + + bool isSeries() const; + void setIsSeries(bool newIsSeries); + + bool isLive() const; + void setIsLive(bool newIsLive); + + bool isNews() const; + void setIsNews(bool newIsNews); + + bool isKids() const; + void setIsKids(bool newIsKids); + + bool isPremiere() const; + void setIsPremiere(bool newIsPremiere); + + QString timerId() const; + void setTimerId(QString newTimerId); + + BaseItemDto * currentProgram() const; + void setCurrentProgram(BaseItemDto * newCurrentProgram); + +signals: + void nameChanged(QString newName); + void originalTitleChanged(QString newOriginalTitle); + void serverIdChanged(QString newServerId); + void jellyfinIdChanged(QString newJellyfinId); + void etagChanged(QString newEtag); + void sourceTypeChanged(QString newSourceType); + void playlistItemIdChanged(QString newPlaylistItemId); + void dateCreatedChanged(QDateTime newDateCreated); + void dateLastMediaAddedChanged(QDateTime newDateLastMediaAdded); + void extraTypeChanged(QString newExtraType); + void airsBeforeSeasonNumberChanged(qint32 newAirsBeforeSeasonNumber); + void airsAfterSeasonNumberChanged(qint32 newAirsAfterSeasonNumber); + void airsBeforeEpisodeNumberChanged(qint32 newAirsBeforeEpisodeNumber); + void canDeleteChanged(bool newCanDelete); + void canDownloadChanged(bool newCanDownload); + void hasSubtitlesChanged(bool newHasSubtitles); + void preferredMetadataLanguageChanged(QString newPreferredMetadataLanguage); + void preferredMetadataCountryCodeChanged(QString newPreferredMetadataCountryCode); + void supportsSyncChanged(bool newSupportsSync); + void containerChanged(QString newContainer); + void sortNameChanged(QString newSortName); + void forcedSortNameChanged(QString newForcedSortName); + void video3DFormatChanged(Video3DFormat newVideo3DFormat); + void premiereDateChanged(QDateTime newPremiereDate); + void externalUrlsChanged(QList newExternalUrls); + void mediaSourcesChanged(QList newMediaSources); + void criticRatingChanged(float newCriticRating); + void productionLocationsChanged(QStringList newProductionLocations); + void pathChanged(QString newPath); + void enableMediaSourceDisplayChanged(bool newEnableMediaSourceDisplay); + void officialRatingChanged(QString newOfficialRating); + void customRatingChanged(QString newCustomRating); + void channelIdChanged(QString newChannelId); + void channelNameChanged(QString newChannelName); + void overviewChanged(QString newOverview); + void taglinesChanged(QStringList newTaglines); + void genresChanged(QStringList newGenres); + void communityRatingChanged(float newCommunityRating); + void cumulativeRunTimeTicksChanged(qint64 newCumulativeRunTimeTicks); + void runTimeTicksChanged(qint64 newRunTimeTicks); + void playAccessChanged(PlayAccess newPlayAccess); + void aspectRatioChanged(QString newAspectRatio); + void productionYearChanged(qint32 newProductionYear); + void isPlaceHolderChanged(bool newIsPlaceHolder); + void numberChanged(QString newNumber); + void channelNumberChanged(QString newChannelNumber); + void indexNumberChanged(qint32 newIndexNumber); + void indexNumberEndChanged(qint32 newIndexNumberEnd); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void remoteTrailersChanged(QList newRemoteTrailers); + void providerIdsChanged(QJsonObject newProviderIds); + void isHDChanged(bool newIsHD); + void isFolderChanged(bool newIsFolder); + void parentIdChanged(QString newParentId); + void typeChanged(QString newType); + void peopleChanged(QList newPeople); + void studiosChanged(QList newStudios); + void genreItemsChanged(QList newGenreItems); + void parentLogoItemIdChanged(QString newParentLogoItemId); + void parentBackdropItemIdChanged(QString newParentBackdropItemId); + void parentBackdropImageTagsChanged(QStringList newParentBackdropImageTags); + void localTrailerCountChanged(qint32 newLocalTrailerCount); + void userDataChanged(UserItemDataDto * newUserData); + void recursiveItemCountChanged(qint32 newRecursiveItemCount); + void childCountChanged(qint32 newChildCount); + void seriesNameChanged(QString newSeriesName); + void seriesIdChanged(QString newSeriesId); + void seasonIdChanged(QString newSeasonId); + void specialFeatureCountChanged(qint32 newSpecialFeatureCount); + void displayPreferencesIdChanged(QString newDisplayPreferencesId); + void statusChanged(QString newStatus); + void airTimeChanged(QString newAirTime); + void airDaysChanged(QList newAirDays); + void tagsChanged(QStringList newTags); + void primaryImageAspectRatioChanged(double newPrimaryImageAspectRatio); + void artistsChanged(QStringList newArtists); + void artistItemsChanged(QList newArtistItems); + void albumChanged(QString newAlbum); + void collectionTypeChanged(QString newCollectionType); + void displayOrderChanged(QString newDisplayOrder); + void albumIdChanged(QString newAlbumId); + void albumPrimaryImageTagChanged(QString newAlbumPrimaryImageTag); + void seriesPrimaryImageTagChanged(QString newSeriesPrimaryImageTag); + void albumArtistChanged(QString newAlbumArtist); + void albumArtistsChanged(QList newAlbumArtists); + void seasonNameChanged(QString newSeasonName); + void mediaStreamsChanged(QList newMediaStreams); + void videoTypeChanged(VideoType newVideoType); + void partCountChanged(qint32 newPartCount); + void mediaSourceCountChanged(qint32 newMediaSourceCount); + void imageTagsChanged(QJsonObject newImageTags); + void backdropImageTagsChanged(QStringList newBackdropImageTags); + void screenshotImageTagsChanged(QStringList newScreenshotImageTags); + void parentLogoImageTagChanged(QString newParentLogoImageTag); + void parentArtItemIdChanged(QString newParentArtItemId); + void parentArtImageTagChanged(QString newParentArtImageTag); + void seriesThumbImageTagChanged(QString newSeriesThumbImageTag); + void imageBlurHashesChanged(QJsonObject newImageBlurHashes); + void seriesStudioChanged(QString newSeriesStudio); + void parentThumbItemIdChanged(QString newParentThumbItemId); + void parentThumbImageTagChanged(QString newParentThumbImageTag); + void parentPrimaryImageItemIdChanged(QString newParentPrimaryImageItemId); + void parentPrimaryImageTagChanged(QString newParentPrimaryImageTag); + void chaptersChanged(QList newChapters); + void locationTypeChanged(LocationType newLocationType); + void isoTypeChanged(IsoType newIsoType); + void mediaTypeChanged(QString newMediaType); + void endDateChanged(QDateTime newEndDate); + void lockedFieldsChanged(QList newLockedFields); + void trailerCountChanged(qint32 newTrailerCount); + void movieCountChanged(qint32 newMovieCount); + void seriesCountChanged(qint32 newSeriesCount); + void programCountChanged(qint32 newProgramCount); + void episodeCountChanged(qint32 newEpisodeCount); + void songCountChanged(qint32 newSongCount); + void albumCountChanged(qint32 newAlbumCount); + void artistCountChanged(qint32 newArtistCount); + void musicVideoCountChanged(qint32 newMusicVideoCount); + void lockDataChanged(bool newLockData); + void widthChanged(qint32 newWidth); + void heightChanged(qint32 newHeight); + void cameraMakeChanged(QString newCameraMake); + void cameraModelChanged(QString newCameraModel); + void softwareChanged(QString newSoftware); + void exposureTimeChanged(double newExposureTime); + void focalLengthChanged(double newFocalLength); + void imageOrientationChanged(ImageOrientation newImageOrientation); + void apertureChanged(double newAperture); + void shutterSpeedChanged(double newShutterSpeed); + void latitudeChanged(double newLatitude); + void longitudeChanged(double newLongitude); + void altitudeChanged(double newAltitude); + void isoSpeedRatingChanged(qint32 newIsoSpeedRating); + void seriesTimerIdChanged(QString newSeriesTimerId); + void programIdChanged(QString newProgramId); + void channelPrimaryImageTagChanged(QString newChannelPrimaryImageTag); + void startDateChanged(QDateTime newStartDate); + void completionPercentageChanged(double newCompletionPercentage); + void isRepeatChanged(bool newIsRepeat); + void episodeTitleChanged(QString newEpisodeTitle); + void channelTypeChanged(ChannelType newChannelType); + void audioChanged(ProgramAudio newAudio); + void isMovieChanged(bool newIsMovie); + void isSportsChanged(bool newIsSports); + void isSeriesChanged(bool newIsSeries); + void isLiveChanged(bool newIsLive); + void isNewsChanged(bool newIsNews); + void isKidsChanged(bool newIsKids); + void isPremiereChanged(bool newIsPremiere); + void timerIdChanged(QString newTimerId); + void currentProgramChanged(BaseItemDto * newCurrentProgram); +protected: + QString m_name; + QString m_originalTitle; + QString m_serverId; + QString m_jellyfinId; + QString m_etag; + QString m_sourceType; + QString m_playlistItemId; + QDateTime m_dateCreated; + QDateTime m_dateLastMediaAdded; + QString m_extraType; + qint32 m_airsBeforeSeasonNumber; + qint32 m_airsAfterSeasonNumber; + qint32 m_airsBeforeEpisodeNumber; + bool m_canDelete; + bool m_canDownload; + bool m_hasSubtitles; + QString m_preferredMetadataLanguage; + QString m_preferredMetadataCountryCode; + bool m_supportsSync; + QString m_container; + QString m_sortName; + QString m_forcedSortName; + Video3DFormat m_video3DFormat; + QDateTime m_premiereDate; + QList m_externalUrls; + QList m_mediaSources; + float m_criticRating; + QStringList m_productionLocations; + QString m_path; + bool m_enableMediaSourceDisplay; + QString m_officialRating; + QString m_customRating; + QString m_channelId; + QString m_channelName; + QString m_overview; + QStringList m_taglines; + QStringList m_genres; + float m_communityRating; + qint64 m_cumulativeRunTimeTicks; + qint64 m_runTimeTicks; + PlayAccess m_playAccess; + QString m_aspectRatio; + qint32 m_productionYear; + bool m_isPlaceHolder; + QString m_number; + QString m_channelNumber; + qint32 m_indexNumber; + qint32 m_indexNumberEnd; + qint32 m_parentIndexNumber; + QList m_remoteTrailers; + QJsonObject m_providerIds; + bool m_isHD; + bool m_isFolder; + QString m_parentId; + QString m_type; + QList m_people; + QList m_studios; + QList m_genreItems; + QString m_parentLogoItemId; + QString m_parentBackdropItemId; + QStringList m_parentBackdropImageTags; + qint32 m_localTrailerCount; + UserItemDataDto * m_userData = nullptr; + qint32 m_recursiveItemCount; + qint32 m_childCount; + QString m_seriesName; + QString m_seriesId; + QString m_seasonId; + qint32 m_specialFeatureCount; + QString m_displayPreferencesId; + QString m_status; + QString m_airTime; + QList m_airDays; + QStringList m_tags; + double m_primaryImageAspectRatio; + QStringList m_artists; + QList m_artistItems; + QString m_album; + QString m_collectionType; + QString m_displayOrder; + QString m_albumId; + QString m_albumPrimaryImageTag; + QString m_seriesPrimaryImageTag; + QString m_albumArtist; + QList m_albumArtists; + QString m_seasonName; + QList m_mediaStreams; + VideoType m_videoType; + qint32 m_partCount; + qint32 m_mediaSourceCount; + QJsonObject m_imageTags; + QStringList m_backdropImageTags; + QStringList m_screenshotImageTags; + QString m_parentLogoImageTag; + QString m_parentArtItemId; + QString m_parentArtImageTag; + QString m_seriesThumbImageTag; + QJsonObject m_imageBlurHashes; + QString m_seriesStudio; + QString m_parentThumbItemId; + QString m_parentThumbImageTag; + QString m_parentPrimaryImageItemId; + QString m_parentPrimaryImageTag; + QList m_chapters; + LocationType m_locationType; + IsoType m_isoType; + QString m_mediaType; + QDateTime m_endDate; + QList m_lockedFields; + qint32 m_trailerCount; + qint32 m_movieCount; + qint32 m_seriesCount; + qint32 m_programCount; + qint32 m_episodeCount; + qint32 m_songCount; + qint32 m_albumCount; + qint32 m_artistCount; + qint32 m_musicVideoCount; + bool m_lockData; + qint32 m_width; + qint32 m_height; + QString m_cameraMake; + QString m_cameraModel; + QString m_software; + double m_exposureTime; + double m_focalLength; + ImageOrientation m_imageOrientation; + double m_aperture; + double m_shutterSpeed; + double m_latitude; + double m_longitude; + double m_altitude; + qint32 m_isoSpeedRating; + QString m_seriesTimerId; + QString m_programId; + QString m_channelPrimaryImageTag; + QDateTime m_startDate; + double m_completionPercentage; + bool m_isRepeat; + QString m_episodeTitle; + ChannelType m_channelType; + ProgramAudio m_audio; + bool m_isMovie; + bool m_isSports; + bool m_isSeries; + bool m_isLive; + bool m_isNews; + bool m_isKids; + bool m_isPremiere; + QString m_timerId; + BaseItemDto * m_currentProgram = nullptr; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_BASEITEMDTO_H diff --git a/core/include/JellyfinQt/DTO/baseitemdtoqueryresult.h b/core/include/JellyfinQt/DTO/baseitemdtoqueryresult.h new file mode 100644 index 0000000..cc61ca3 --- /dev/null +++ b/core/include/JellyfinQt/DTO/baseitemdtoqueryresult.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_BASEITEMDTOQUERYRESULT_H +#define JELLYFIN_DTO_BASEITEMDTOQUERYRESULT_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class BaseItemDto; + +class BaseItemDtoQueryResult : public QObject { + Q_OBJECT +public: + explicit BaseItemDtoQueryResult(QObject *parent = nullptr); + static BaseItemDtoQueryResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the items. + */ + Q_PROPERTY(QList items READ items WRITE setItems NOTIFY itemsChanged) + /** + * @brief The total number of records available. + */ + Q_PROPERTY(qint32 totalRecordCount READ totalRecordCount WRITE setTotalRecordCount NOTIFY totalRecordCountChanged) + /** + * @brief The index of the first record in Items. + */ + Q_PROPERTY(qint32 startIndex READ startIndex WRITE setStartIndex NOTIFY startIndexChanged) + + QList items() const; + void setItems(QList newItems); + + qint32 totalRecordCount() const; + void setTotalRecordCount(qint32 newTotalRecordCount); + + qint32 startIndex() const; + void setStartIndex(qint32 newStartIndex); + +signals: + void itemsChanged(QList newItems); + void totalRecordCountChanged(qint32 newTotalRecordCount); + void startIndexChanged(qint32 newStartIndex); +protected: + QList m_items; + qint32 m_totalRecordCount; + qint32 m_startIndex; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_BASEITEMDTOQUERYRESULT_H diff --git a/core/include/JellyfinQt/DTO/baseitemperson.h b/core/include/JellyfinQt/DTO/baseitemperson.h new file mode 100644 index 0000000..8bd2397 --- /dev/null +++ b/core/include/JellyfinQt/DTO/baseitemperson.h @@ -0,0 +1,110 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_BASEITEMPERSON_H +#define JELLYFIN_DTO_BASEITEMPERSON_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class BaseItemPerson : public QObject { + Q_OBJECT +public: + explicit BaseItemPerson(QObject *parent = nullptr); + static BaseItemPerson *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the identifier. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the role. + */ + Q_PROPERTY(QString role READ role WRITE setRole NOTIFY roleChanged) + /** + * @brief Gets or sets the type. + */ + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets or sets the primary image tag. + */ + Q_PROPERTY(QString primaryImageTag READ primaryImageTag WRITE setPrimaryImageTag NOTIFY primaryImageTagChanged) + /** + * @brief Gets or sets the primary image blurhash. + */ + Q_PROPERTY(QJsonObject imageBlurHashes READ imageBlurHashes WRITE setImageBlurHashes NOTIFY imageBlurHashesChanged) + + QString name() const; + void setName(QString newName); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString role() const; + void setRole(QString newRole); + + QString type() const; + void setType(QString newType); + + QString primaryImageTag() const; + void setPrimaryImageTag(QString newPrimaryImageTag); + + QJsonObject imageBlurHashes() const; + void setImageBlurHashes(QJsonObject newImageBlurHashes); + +signals: + void nameChanged(QString newName); + void jellyfinIdChanged(QString newJellyfinId); + void roleChanged(QString newRole); + void typeChanged(QString newType); + void primaryImageTagChanged(QString newPrimaryImageTag); + void imageBlurHashesChanged(QJsonObject newImageBlurHashes); +protected: + QString m_name; + QString m_jellyfinId; + QString m_role; + QString m_type; + QString m_primaryImageTag; + QJsonObject m_imageBlurHashes; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_BASEITEMPERSON_H diff --git a/core/include/JellyfinQt/DTO/basepluginconfiguration.h b/core/include/JellyfinQt/DTO/basepluginconfiguration.h new file mode 100644 index 0000000..e69de29 diff --git a/core/include/JellyfinQt/DTO/bookinfo.h b/core/include/JellyfinQt/DTO/bookinfo.h new file mode 100644 index 0000000..920321d --- /dev/null +++ b/core/include/JellyfinQt/DTO/bookinfo.h @@ -0,0 +1,141 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_BOOKINFO_H +#define JELLYFIN_DTO_BOOKINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class BookInfo : public QObject { + Q_OBJECT +public: + explicit BookInfo(QObject *parent = nullptr); + static BookInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the metadata language. + */ + Q_PROPERTY(QString metadataLanguage READ metadataLanguage WRITE setMetadataLanguage NOTIFY metadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 year READ year WRITE setYear NOTIFY yearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(bool isAutomated READ isAutomated WRITE setIsAutomated NOTIFY isAutomatedChanged) + Q_PROPERTY(QString seriesName READ seriesName WRITE setSeriesName NOTIFY seriesNameChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + QString metadataLanguage() const; + void setMetadataLanguage(QString newMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 year() const; + void setYear(qint32 newYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + bool isAutomated() const; + void setIsAutomated(bool newIsAutomated); + + QString seriesName() const; + void setSeriesName(QString newSeriesName); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void metadataLanguageChanged(QString newMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void providerIdsChanged(QJsonObject newProviderIds); + void yearChanged(qint32 newYear); + void indexNumberChanged(qint32 newIndexNumber); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void isAutomatedChanged(bool newIsAutomated); + void seriesNameChanged(QString newSeriesName); +protected: + QString m_name; + QString m_path; + QString m_metadataLanguage; + QString m_metadataCountryCode; + QJsonObject m_providerIds; + qint32 m_year; + qint32 m_indexNumber; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + bool m_isAutomated; + QString m_seriesName; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_BOOKINFO_H diff --git a/core/include/JellyfinQt/DTO/bookinforemotesearchquery.h b/core/include/JellyfinQt/DTO/bookinforemotesearchquery.h new file mode 100644 index 0000000..0e26c66 --- /dev/null +++ b/core/include/JellyfinQt/DTO/bookinforemotesearchquery.h @@ -0,0 +1,88 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_BOOKINFOREMOTESEARCHQUERY_H +#define JELLYFIN_DTO_BOOKINFOREMOTESEARCHQUERY_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class BookInfo; + +class BookInfoRemoteSearchQuery : public QObject { + Q_OBJECT +public: + explicit BookInfoRemoteSearchQuery(QObject *parent = nullptr); + static BookInfoRemoteSearchQuery *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(BookInfo * searchInfo READ searchInfo WRITE setSearchInfo NOTIFY searchInfoChanged) + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Will only search within the given provider when set. + */ + Q_PROPERTY(QString searchProviderName READ searchProviderName WRITE setSearchProviderName NOTIFY searchProviderNameChanged) + /** + * @brief Gets or sets a value indicating whether disabled providers should be included. + */ + Q_PROPERTY(bool includeDisabledProviders READ includeDisabledProviders WRITE setIncludeDisabledProviders NOTIFY includeDisabledProvidersChanged) + + BookInfo * searchInfo() const; + void setSearchInfo(BookInfo * newSearchInfo); + + QString itemId() const; + void setItemId(QString newItemId); + + QString searchProviderName() const; + void setSearchProviderName(QString newSearchProviderName); + + bool includeDisabledProviders() const; + void setIncludeDisabledProviders(bool newIncludeDisabledProviders); + +signals: + void searchInfoChanged(BookInfo * newSearchInfo); + void itemIdChanged(QString newItemId); + void searchProviderNameChanged(QString newSearchProviderName); + void includeDisabledProvidersChanged(bool newIncludeDisabledProviders); +protected: + BookInfo * m_searchInfo = nullptr; + QString m_itemId; + QString m_searchProviderName; + bool m_includeDisabledProviders; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_BOOKINFOREMOTESEARCHQUERY_H diff --git a/core/include/JellyfinQt/DTO/boxsetinfo.h b/core/include/JellyfinQt/DTO/boxsetinfo.h new file mode 100644 index 0000000..f08d424 --- /dev/null +++ b/core/include/JellyfinQt/DTO/boxsetinfo.h @@ -0,0 +1,135 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_BOXSETINFO_H +#define JELLYFIN_DTO_BOXSETINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class BoxSetInfo : public QObject { + Q_OBJECT +public: + explicit BoxSetInfo(QObject *parent = nullptr); + static BoxSetInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the metadata language. + */ + Q_PROPERTY(QString metadataLanguage READ metadataLanguage WRITE setMetadataLanguage NOTIFY metadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 year READ year WRITE setYear NOTIFY yearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(bool isAutomated READ isAutomated WRITE setIsAutomated NOTIFY isAutomatedChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + QString metadataLanguage() const; + void setMetadataLanguage(QString newMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 year() const; + void setYear(qint32 newYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + bool isAutomated() const; + void setIsAutomated(bool newIsAutomated); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void metadataLanguageChanged(QString newMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void providerIdsChanged(QJsonObject newProviderIds); + void yearChanged(qint32 newYear); + void indexNumberChanged(qint32 newIndexNumber); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void isAutomatedChanged(bool newIsAutomated); +protected: + QString m_name; + QString m_path; + QString m_metadataLanguage; + QString m_metadataCountryCode; + QJsonObject m_providerIds; + qint32 m_year; + qint32 m_indexNumber; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + bool m_isAutomated; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_BOXSETINFO_H diff --git a/core/include/JellyfinQt/DTO/boxsetinforemotesearchquery.h b/core/include/JellyfinQt/DTO/boxsetinforemotesearchquery.h new file mode 100644 index 0000000..0fa7db2 --- /dev/null +++ b/core/include/JellyfinQt/DTO/boxsetinforemotesearchquery.h @@ -0,0 +1,88 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_BOXSETINFOREMOTESEARCHQUERY_H +#define JELLYFIN_DTO_BOXSETINFOREMOTESEARCHQUERY_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class BoxSetInfo; + +class BoxSetInfoRemoteSearchQuery : public QObject { + Q_OBJECT +public: + explicit BoxSetInfoRemoteSearchQuery(QObject *parent = nullptr); + static BoxSetInfoRemoteSearchQuery *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(BoxSetInfo * searchInfo READ searchInfo WRITE setSearchInfo NOTIFY searchInfoChanged) + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Will only search within the given provider when set. + */ + Q_PROPERTY(QString searchProviderName READ searchProviderName WRITE setSearchProviderName NOTIFY searchProviderNameChanged) + /** + * @brief Gets or sets a value indicating whether disabled providers should be included. + */ + Q_PROPERTY(bool includeDisabledProviders READ includeDisabledProviders WRITE setIncludeDisabledProviders NOTIFY includeDisabledProvidersChanged) + + BoxSetInfo * searchInfo() const; + void setSearchInfo(BoxSetInfo * newSearchInfo); + + QString itemId() const; + void setItemId(QString newItemId); + + QString searchProviderName() const; + void setSearchProviderName(QString newSearchProviderName); + + bool includeDisabledProviders() const; + void setIncludeDisabledProviders(bool newIncludeDisabledProviders); + +signals: + void searchInfoChanged(BoxSetInfo * newSearchInfo); + void itemIdChanged(QString newItemId); + void searchProviderNameChanged(QString newSearchProviderName); + void includeDisabledProvidersChanged(bool newIncludeDisabledProviders); +protected: + BoxSetInfo * m_searchInfo = nullptr; + QString m_itemId; + QString m_searchProviderName; + bool m_includeDisabledProviders; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_BOXSETINFOREMOTESEARCHQUERY_H diff --git a/core/include/JellyfinQt/DTO/brandingoptions.h b/core/include/JellyfinQt/DTO/brandingoptions.h new file mode 100644 index 0000000..8a46e52 --- /dev/null +++ b/core/include/JellyfinQt/DTO/brandingoptions.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_BRANDINGOPTIONS_H +#define JELLYFIN_DTO_BRANDINGOPTIONS_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class BrandingOptions : public QObject { + Q_OBJECT +public: + explicit BrandingOptions(QObject *parent = nullptr); + static BrandingOptions *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the login disclaimer. + */ + Q_PROPERTY(QString loginDisclaimer READ loginDisclaimer WRITE setLoginDisclaimer NOTIFY loginDisclaimerChanged) + /** + * @brief Gets or sets the custom CSS. + */ + Q_PROPERTY(QString customCss READ customCss WRITE setCustomCss NOTIFY customCssChanged) + + QString loginDisclaimer() const; + void setLoginDisclaimer(QString newLoginDisclaimer); + + QString customCss() const; + void setCustomCss(QString newCustomCss); + +signals: + void loginDisclaimerChanged(QString newLoginDisclaimer); + void customCssChanged(QString newCustomCss); +protected: + QString m_loginDisclaimer; + QString m_customCss; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_BRANDINGOPTIONS_H diff --git a/core/include/JellyfinQt/DTO/bufferrequestdto.h b/core/include/JellyfinQt/DTO/bufferrequestdto.h new file mode 100644 index 0000000..c178ecd --- /dev/null +++ b/core/include/JellyfinQt/DTO/bufferrequestdto.h @@ -0,0 +1,93 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_BUFFERREQUESTDTO_H +#define JELLYFIN_DTO_BUFFERREQUESTDTO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class BufferRequestDto : public QObject { + Q_OBJECT +public: + explicit BufferRequestDto(QObject *parent = nullptr); + static BufferRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets when the request has been made by the client. + */ + Q_PROPERTY(QDateTime when READ when WRITE setWhen NOTIFY whenChanged) + /** + * @brief Gets or sets the position ticks. + */ + Q_PROPERTY(qint64 positionTicks READ positionTicks WRITE setPositionTicks NOTIFY positionTicksChanged) + /** + * @brief Gets or sets a value indicating whether the client playback is unpaused. + */ + Q_PROPERTY(bool isPlaying READ isPlaying WRITE setIsPlaying NOTIFY isPlayingChanged) + /** + * @brief Gets or sets the playlist item identifier of the playing item. + */ + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + + QDateTime when() const; + void setWhen(QDateTime newWhen); + + qint64 positionTicks() const; + void setPositionTicks(qint64 newPositionTicks); + + bool isPlaying() const; + void setIsPlaying(bool newIsPlaying); + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + +signals: + void whenChanged(QDateTime newWhen); + void positionTicksChanged(qint64 newPositionTicks); + void isPlayingChanged(bool newIsPlaying); + void playlistItemIdChanged(QString newPlaylistItemId); +protected: + QDateTime m_when; + qint64 m_positionTicks; + bool m_isPlaying; + QString m_playlistItemId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_BUFFERREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/channelfeatures.h b/core/include/JellyfinQt/DTO/channelfeatures.h new file mode 100644 index 0000000..b8f823e --- /dev/null +++ b/core/include/JellyfinQt/DTO/channelfeatures.h @@ -0,0 +1,170 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CHANNELFEATURES_H +#define JELLYFIN_DTO_CHANNELFEATURES_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/channelitemsortfield.h" +#include "JellyfinQt/DTO/channelmediacontenttype.h" +#include "JellyfinQt/DTO/channelmediatype.h" + +namespace Jellyfin { +namespace DTO { + +class ChannelFeatures : public QObject { + Q_OBJECT +public: + explicit ChannelFeatures(QObject *parent = nullptr); + static ChannelFeatures *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the identifier. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets a value indicating whether this instance can search. + */ + Q_PROPERTY(bool canSearch READ canSearch WRITE setCanSearch NOTIFY canSearchChanged) + /** + * @brief Gets or sets the media types. + */ + Q_PROPERTY(QList mediaTypes READ mediaTypes WRITE setMediaTypes NOTIFY mediaTypesChanged) + /** + * @brief Gets or sets the content types. + */ + Q_PROPERTY(QList contentTypes READ contentTypes WRITE setContentTypes NOTIFY contentTypesChanged) + /** + * @brief Represents the maximum number of records the channel allows retrieving at a time. + */ + Q_PROPERTY(qint32 maxPageSize READ maxPageSize WRITE setMaxPageSize NOTIFY maxPageSizeChanged) + /** + * @brief Gets or sets the automatic refresh levels. + */ + Q_PROPERTY(qint32 autoRefreshLevels READ autoRefreshLevels WRITE setAutoRefreshLevels NOTIFY autoRefreshLevelsChanged) + /** + * @brief Gets or sets the default sort orders. + */ + Q_PROPERTY(QList defaultSortFields READ defaultSortFields WRITE setDefaultSortFields NOTIFY defaultSortFieldsChanged) + /** + * @brief Indicates if a sort ascending/descending toggle is supported or not. + */ + Q_PROPERTY(bool supportsSortOrderToggle READ supportsSortOrderToggle WRITE setSupportsSortOrderToggle NOTIFY supportsSortOrderToggleChanged) + /** + * @brief Gets or sets a value indicating whether [supports latest media]. + */ + Q_PROPERTY(bool supportsLatestMedia READ supportsLatestMedia WRITE setSupportsLatestMedia NOTIFY supportsLatestMediaChanged) + /** + * @brief Gets or sets a value indicating whether this instance can filter. + */ + Q_PROPERTY(bool canFilter READ canFilter WRITE setCanFilter NOTIFY canFilterChanged) + /** + * @brief Gets or sets a value indicating whether [supports content downloading]. + */ + Q_PROPERTY(bool supportsContentDownloading READ supportsContentDownloading WRITE setSupportsContentDownloading NOTIFY supportsContentDownloadingChanged) + + QString name() const; + void setName(QString newName); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + bool canSearch() const; + void setCanSearch(bool newCanSearch); + + QList mediaTypes() const; + void setMediaTypes(QList newMediaTypes); + + QList contentTypes() const; + void setContentTypes(QList newContentTypes); + + qint32 maxPageSize() const; + void setMaxPageSize(qint32 newMaxPageSize); + + qint32 autoRefreshLevels() const; + void setAutoRefreshLevels(qint32 newAutoRefreshLevels); + + QList defaultSortFields() const; + void setDefaultSortFields(QList newDefaultSortFields); + + bool supportsSortOrderToggle() const; + void setSupportsSortOrderToggle(bool newSupportsSortOrderToggle); + + bool supportsLatestMedia() const; + void setSupportsLatestMedia(bool newSupportsLatestMedia); + + bool canFilter() const; + void setCanFilter(bool newCanFilter); + + bool supportsContentDownloading() const; + void setSupportsContentDownloading(bool newSupportsContentDownloading); + +signals: + void nameChanged(QString newName); + void jellyfinIdChanged(QString newJellyfinId); + void canSearchChanged(bool newCanSearch); + void mediaTypesChanged(QList newMediaTypes); + void contentTypesChanged(QList newContentTypes); + void maxPageSizeChanged(qint32 newMaxPageSize); + void autoRefreshLevelsChanged(qint32 newAutoRefreshLevels); + void defaultSortFieldsChanged(QList newDefaultSortFields); + void supportsSortOrderToggleChanged(bool newSupportsSortOrderToggle); + void supportsLatestMediaChanged(bool newSupportsLatestMedia); + void canFilterChanged(bool newCanFilter); + void supportsContentDownloadingChanged(bool newSupportsContentDownloading); +protected: + QString m_name; + QString m_jellyfinId; + bool m_canSearch; + QList m_mediaTypes; + QList m_contentTypes; + qint32 m_maxPageSize; + qint32 m_autoRefreshLevels; + QList m_defaultSortFields; + bool m_supportsSortOrderToggle; + bool m_supportsLatestMedia; + bool m_canFilter; + bool m_supportsContentDownloading; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CHANNELFEATURES_H diff --git a/core/include/JellyfinQt/DTO/channelitemsortfield.h b/core/include/JellyfinQt/DTO/channelitemsortfield.h new file mode 100644 index 0000000..aa5aec8 --- /dev/null +++ b/core/include/JellyfinQt/DTO/channelitemsortfield.h @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CHANNELITEMSORTFIELD_H +#define JELLYFIN_DTO_CHANNELITEMSORTFIELD_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ChannelItemSortFieldClass { + Q_GADGET +public: + enum Value { + Name, + CommunityRating, + PremiereDate, + DateCreated, + Runtime, + PlayCount, + CommunityPlayCount, + }; + Q_ENUM(Value) +private: + explicit ChannelItemSortFieldClass(); +}; +typedef ChannelItemSortFieldClass::Value ChannelItemSortField; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CHANNELITEMSORTFIELD_H diff --git a/core/include/JellyfinQt/DTO/channelmappingoptionsdto.h b/core/include/JellyfinQt/DTO/channelmappingoptionsdto.h new file mode 100644 index 0000000..6215f18 --- /dev/null +++ b/core/include/JellyfinQt/DTO/channelmappingoptionsdto.h @@ -0,0 +1,98 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CHANNELMAPPINGOPTIONSDTO_H +#define JELLYFIN_DTO_CHANNELMAPPINGOPTIONSDTO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class NameIdPair; +class NameValuePair; +class TunerChannelMapping; + +class ChannelMappingOptionsDto : public QObject { + Q_OBJECT +public: + explicit ChannelMappingOptionsDto(QObject *parent = nullptr); + static ChannelMappingOptionsDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets list of tuner channels. + */ + Q_PROPERTY(QList tunerChannels READ tunerChannels WRITE setTunerChannels NOTIFY tunerChannelsChanged) + /** + * @brief Gets or sets list of provider channels. + */ + Q_PROPERTY(QList providerChannels READ providerChannels WRITE setProviderChannels NOTIFY providerChannelsChanged) + /** + * @brief Gets or sets list of mappings. + */ + Q_PROPERTY(QList mappings READ mappings WRITE setMappings NOTIFY mappingsChanged) + /** + * @brief Gets or sets provider name. + */ + Q_PROPERTY(QString providerName READ providerName WRITE setProviderName NOTIFY providerNameChanged) + + QList tunerChannels() const; + void setTunerChannels(QList newTunerChannels); + + QList providerChannels() const; + void setProviderChannels(QList newProviderChannels); + + QList mappings() const; + void setMappings(QList newMappings); + + QString providerName() const; + void setProviderName(QString newProviderName); + +signals: + void tunerChannelsChanged(QList newTunerChannels); + void providerChannelsChanged(QList newProviderChannels); + void mappingsChanged(QList newMappings); + void providerNameChanged(QString newProviderName); +protected: + QList m_tunerChannels; + QList m_providerChannels; + QList m_mappings; + QString m_providerName; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CHANNELMAPPINGOPTIONSDTO_H diff --git a/core/include/JellyfinQt/DTO/channelmediacontenttype.h b/core/include/JellyfinQt/DTO/channelmediacontenttype.h new file mode 100644 index 0000000..f310729 --- /dev/null +++ b/core/include/JellyfinQt/DTO/channelmediacontenttype.h @@ -0,0 +1,60 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CHANNELMEDIACONTENTTYPE_H +#define JELLYFIN_DTO_CHANNELMEDIACONTENTTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ChannelMediaContentTypeClass { + Q_GADGET +public: + enum Value { + Clip, + Podcast, + Trailer, + Movie, + Episode, + Song, + MovieExtra, + TvExtra, + }; + Q_ENUM(Value) +private: + explicit ChannelMediaContentTypeClass(); +}; +typedef ChannelMediaContentTypeClass::Value ChannelMediaContentType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CHANNELMEDIACONTENTTYPE_H diff --git a/core/include/JellyfinQt/DTO/channelmediatype.h b/core/include/JellyfinQt/DTO/channelmediatype.h new file mode 100644 index 0000000..4913e18 --- /dev/null +++ b/core/include/JellyfinQt/DTO/channelmediatype.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CHANNELMEDIATYPE_H +#define JELLYFIN_DTO_CHANNELMEDIATYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ChannelMediaTypeClass { + Q_GADGET +public: + enum Value { + Audio, + Video, + Photo, + }; + Q_ENUM(Value) +private: + explicit ChannelMediaTypeClass(); +}; +typedef ChannelMediaTypeClass::Value ChannelMediaType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CHANNELMEDIATYPE_H diff --git a/core/include/JellyfinQt/DTO/channeltype.h b/core/include/JellyfinQt/DTO/channeltype.h new file mode 100644 index 0000000..ce11729 --- /dev/null +++ b/core/include/JellyfinQt/DTO/channeltype.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CHANNELTYPE_H +#define JELLYFIN_DTO_CHANNELTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ChannelTypeClass { + Q_GADGET +public: + enum Value { + TV, + Radio, + }; + Q_ENUM(Value) +private: + explicit ChannelTypeClass(); +}; +typedef ChannelTypeClass::Value ChannelType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CHANNELTYPE_H diff --git a/core/include/JellyfinQt/DTO/chapterinfo.h b/core/include/JellyfinQt/DTO/chapterinfo.h new file mode 100644 index 0000000..28ce872 --- /dev/null +++ b/core/include/JellyfinQt/DTO/chapterinfo.h @@ -0,0 +1,96 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CHAPTERINFO_H +#define JELLYFIN_DTO_CHAPTERINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ChapterInfo : public QObject { + Q_OBJECT +public: + explicit ChapterInfo(QObject *parent = nullptr); + static ChapterInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the start position ticks. + */ + Q_PROPERTY(qint64 startPositionTicks READ startPositionTicks WRITE setStartPositionTicks NOTIFY startPositionTicksChanged) + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the image path. + */ + Q_PROPERTY(QString imagePath READ imagePath WRITE setImagePath NOTIFY imagePathChanged) + Q_PROPERTY(QDateTime imageDateModified READ imageDateModified WRITE setImageDateModified NOTIFY imageDateModifiedChanged) + Q_PROPERTY(QString imageTag READ imageTag WRITE setImageTag NOTIFY imageTagChanged) + + qint64 startPositionTicks() const; + void setStartPositionTicks(qint64 newStartPositionTicks); + + QString name() const; + void setName(QString newName); + + QString imagePath() const; + void setImagePath(QString newImagePath); + + QDateTime imageDateModified() const; + void setImageDateModified(QDateTime newImageDateModified); + + QString imageTag() const; + void setImageTag(QString newImageTag); + +signals: + void startPositionTicksChanged(qint64 newStartPositionTicks); + void nameChanged(QString newName); + void imagePathChanged(QString newImagePath); + void imageDateModifiedChanged(QDateTime newImageDateModified); + void imageTagChanged(QString newImageTag); +protected: + qint64 m_startPositionTicks; + QString m_name; + QString m_imagePath; + QDateTime m_imageDateModified; + QString m_imageTag; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CHAPTERINFO_H diff --git a/core/include/JellyfinQt/DTO/clientcapabilities.h b/core/include/JellyfinQt/DTO/clientcapabilities.h new file mode 100644 index 0000000..5d6a398 --- /dev/null +++ b/core/include/JellyfinQt/DTO/clientcapabilities.h @@ -0,0 +1,122 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CLIENTCAPABILITIES_H +#define JELLYFIN_DTO_CLIENTCAPABILITIES_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/generalcommandtype.h" + +namespace Jellyfin { +namespace DTO { + +class DeviceProfile; + +class ClientCapabilities : public QObject { + Q_OBJECT +public: + explicit ClientCapabilities(QObject *parent = nullptr); + static ClientCapabilities *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QStringList playableMediaTypes READ playableMediaTypes WRITE setPlayableMediaTypes NOTIFY playableMediaTypesChanged) + Q_PROPERTY(QList supportedCommands READ supportedCommands WRITE setSupportedCommands NOTIFY supportedCommandsChanged) + Q_PROPERTY(bool supportsMediaControl READ supportsMediaControl WRITE setSupportsMediaControl NOTIFY supportsMediaControlChanged) + Q_PROPERTY(bool supportsContentUploading READ supportsContentUploading WRITE setSupportsContentUploading NOTIFY supportsContentUploadingChanged) + Q_PROPERTY(QString messageCallbackUrl READ messageCallbackUrl WRITE setMessageCallbackUrl NOTIFY messageCallbackUrlChanged) + Q_PROPERTY(bool supportsPersistentIdentifier READ supportsPersistentIdentifier WRITE setSupportsPersistentIdentifier NOTIFY supportsPersistentIdentifierChanged) + Q_PROPERTY(bool supportsSync READ supportsSync WRITE setSupportsSync NOTIFY supportsSyncChanged) + Q_PROPERTY(DeviceProfile * deviceProfile READ deviceProfile WRITE setDeviceProfile NOTIFY deviceProfileChanged) + Q_PROPERTY(QString appStoreUrl READ appStoreUrl WRITE setAppStoreUrl NOTIFY appStoreUrlChanged) + Q_PROPERTY(QString iconUrl READ iconUrl WRITE setIconUrl NOTIFY iconUrlChanged) + + QStringList playableMediaTypes() const; + void setPlayableMediaTypes(QStringList newPlayableMediaTypes); + + QList supportedCommands() const; + void setSupportedCommands(QList newSupportedCommands); + + bool supportsMediaControl() const; + void setSupportsMediaControl(bool newSupportsMediaControl); + + bool supportsContentUploading() const; + void setSupportsContentUploading(bool newSupportsContentUploading); + + QString messageCallbackUrl() const; + void setMessageCallbackUrl(QString newMessageCallbackUrl); + + bool supportsPersistentIdentifier() const; + void setSupportsPersistentIdentifier(bool newSupportsPersistentIdentifier); + + bool supportsSync() const; + void setSupportsSync(bool newSupportsSync); + + DeviceProfile * deviceProfile() const; + void setDeviceProfile(DeviceProfile * newDeviceProfile); + + QString appStoreUrl() const; + void setAppStoreUrl(QString newAppStoreUrl); + + QString iconUrl() const; + void setIconUrl(QString newIconUrl); + +signals: + void playableMediaTypesChanged(QStringList newPlayableMediaTypes); + void supportedCommandsChanged(QList newSupportedCommands); + void supportsMediaControlChanged(bool newSupportsMediaControl); + void supportsContentUploadingChanged(bool newSupportsContentUploading); + void messageCallbackUrlChanged(QString newMessageCallbackUrl); + void supportsPersistentIdentifierChanged(bool newSupportsPersistentIdentifier); + void supportsSyncChanged(bool newSupportsSync); + void deviceProfileChanged(DeviceProfile * newDeviceProfile); + void appStoreUrlChanged(QString newAppStoreUrl); + void iconUrlChanged(QString newIconUrl); +protected: + QStringList m_playableMediaTypes; + QList m_supportedCommands; + bool m_supportsMediaControl; + bool m_supportsContentUploading; + QString m_messageCallbackUrl; + bool m_supportsPersistentIdentifier; + bool m_supportsSync; + DeviceProfile * m_deviceProfile = nullptr; + QString m_appStoreUrl; + QString m_iconUrl; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CLIENTCAPABILITIES_H diff --git a/core/include/JellyfinQt/DTO/clientcapabilitiesdto.h b/core/include/JellyfinQt/DTO/clientcapabilitiesdto.h new file mode 100644 index 0000000..e420fbd --- /dev/null +++ b/core/include/JellyfinQt/DTO/clientcapabilitiesdto.h @@ -0,0 +1,149 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CLIENTCAPABILITIESDTO_H +#define JELLYFIN_DTO_CLIENTCAPABILITIESDTO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/generalcommandtype.h" + +namespace Jellyfin { +namespace DTO { + +class DeviceProfile; + +class ClientCapabilitiesDto : public QObject { + Q_OBJECT +public: + explicit ClientCapabilitiesDto(QObject *parent = nullptr); + static ClientCapabilitiesDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the list of playable media types. + */ + Q_PROPERTY(QStringList playableMediaTypes READ playableMediaTypes WRITE setPlayableMediaTypes NOTIFY playableMediaTypesChanged) + /** + * @brief Gets or sets the list of supported commands. + */ + Q_PROPERTY(QList supportedCommands READ supportedCommands WRITE setSupportedCommands NOTIFY supportedCommandsChanged) + /** + * @brief Gets or sets a value indicating whether session supports media control. + */ + Q_PROPERTY(bool supportsMediaControl READ supportsMediaControl WRITE setSupportsMediaControl NOTIFY supportsMediaControlChanged) + /** + * @brief Gets or sets a value indicating whether session supports content uploading. + */ + Q_PROPERTY(bool supportsContentUploading READ supportsContentUploading WRITE setSupportsContentUploading NOTIFY supportsContentUploadingChanged) + /** + * @brief Gets or sets the message callback url. + */ + Q_PROPERTY(QString messageCallbackUrl READ messageCallbackUrl WRITE setMessageCallbackUrl NOTIFY messageCallbackUrlChanged) + /** + * @brief Gets or sets a value indicating whether session supports a persistent identifier. + */ + Q_PROPERTY(bool supportsPersistentIdentifier READ supportsPersistentIdentifier WRITE setSupportsPersistentIdentifier NOTIFY supportsPersistentIdentifierChanged) + /** + * @brief Gets or sets a value indicating whether session supports sync. + */ + Q_PROPERTY(bool supportsSync READ supportsSync WRITE setSupportsSync NOTIFY supportsSyncChanged) + Q_PROPERTY(DeviceProfile * deviceProfile READ deviceProfile WRITE setDeviceProfile NOTIFY deviceProfileChanged) + /** + * @brief Gets or sets the app store url. + */ + Q_PROPERTY(QString appStoreUrl READ appStoreUrl WRITE setAppStoreUrl NOTIFY appStoreUrlChanged) + /** + * @brief Gets or sets the icon url. + */ + Q_PROPERTY(QString iconUrl READ iconUrl WRITE setIconUrl NOTIFY iconUrlChanged) + + QStringList playableMediaTypes() const; + void setPlayableMediaTypes(QStringList newPlayableMediaTypes); + + QList supportedCommands() const; + void setSupportedCommands(QList newSupportedCommands); + + bool supportsMediaControl() const; + void setSupportsMediaControl(bool newSupportsMediaControl); + + bool supportsContentUploading() const; + void setSupportsContentUploading(bool newSupportsContentUploading); + + QString messageCallbackUrl() const; + void setMessageCallbackUrl(QString newMessageCallbackUrl); + + bool supportsPersistentIdentifier() const; + void setSupportsPersistentIdentifier(bool newSupportsPersistentIdentifier); + + bool supportsSync() const; + void setSupportsSync(bool newSupportsSync); + + DeviceProfile * deviceProfile() const; + void setDeviceProfile(DeviceProfile * newDeviceProfile); + + QString appStoreUrl() const; + void setAppStoreUrl(QString newAppStoreUrl); + + QString iconUrl() const; + void setIconUrl(QString newIconUrl); + +signals: + void playableMediaTypesChanged(QStringList newPlayableMediaTypes); + void supportedCommandsChanged(QList newSupportedCommands); + void supportsMediaControlChanged(bool newSupportsMediaControl); + void supportsContentUploadingChanged(bool newSupportsContentUploading); + void messageCallbackUrlChanged(QString newMessageCallbackUrl); + void supportsPersistentIdentifierChanged(bool newSupportsPersistentIdentifier); + void supportsSyncChanged(bool newSupportsSync); + void deviceProfileChanged(DeviceProfile * newDeviceProfile); + void appStoreUrlChanged(QString newAppStoreUrl); + void iconUrlChanged(QString newIconUrl); +protected: + QStringList m_playableMediaTypes; + QList m_supportedCommands; + bool m_supportsMediaControl; + bool m_supportsContentUploading; + QString m_messageCallbackUrl; + bool m_supportsPersistentIdentifier; + bool m_supportsSync; + DeviceProfile * m_deviceProfile = nullptr; + QString m_appStoreUrl; + QString m_iconUrl; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CLIENTCAPABILITIESDTO_H diff --git a/core/include/JellyfinQt/DTO/codecprofile.h b/core/include/JellyfinQt/DTO/codecprofile.h new file mode 100644 index 0000000..94c08cb --- /dev/null +++ b/core/include/JellyfinQt/DTO/codecprofile.h @@ -0,0 +1,93 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CODECPROFILE_H +#define JELLYFIN_DTO_CODECPROFILE_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/codectype.h" + +namespace Jellyfin { +namespace DTO { + +class ProfileCondition; +class ProfileCondition; + +class CodecProfile : public QObject { + Q_OBJECT +public: + explicit CodecProfile(QObject *parent = nullptr); + static CodecProfile *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(CodecType type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QList conditions READ conditions WRITE setConditions NOTIFY conditionsChanged) + Q_PROPERTY(QList applyConditions READ applyConditions WRITE setApplyConditions NOTIFY applyConditionsChanged) + Q_PROPERTY(QString codec READ codec WRITE setCodec NOTIFY codecChanged) + Q_PROPERTY(QString container READ container WRITE setContainer NOTIFY containerChanged) + + CodecType type() const; + void setType(CodecType newType); + + QList conditions() const; + void setConditions(QList newConditions); + + QList applyConditions() const; + void setApplyConditions(QList newApplyConditions); + + QString codec() const; + void setCodec(QString newCodec); + + QString container() const; + void setContainer(QString newContainer); + +signals: + void typeChanged(CodecType newType); + void conditionsChanged(QList newConditions); + void applyConditionsChanged(QList newApplyConditions); + void codecChanged(QString newCodec); + void containerChanged(QString newContainer); +protected: + CodecType m_type; + QList m_conditions; + QList m_applyConditions; + QString m_codec; + QString m_container; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CODECPROFILE_H diff --git a/core/include/JellyfinQt/DTO/codectype.h b/core/include/JellyfinQt/DTO/codectype.h new file mode 100644 index 0000000..6f71e20 --- /dev/null +++ b/core/include/JellyfinQt/DTO/codectype.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CODECTYPE_H +#define JELLYFIN_DTO_CODECTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class CodecTypeClass { + Q_GADGET +public: + enum Value { + Video, + VideoAudio, + Audio, + }; + Q_ENUM(Value) +private: + explicit CodecTypeClass(); +}; +typedef CodecTypeClass::Value CodecType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CODECTYPE_H diff --git a/core/include/JellyfinQt/DTO/collectioncreationresult.h b/core/include/JellyfinQt/DTO/collectioncreationresult.h new file mode 100644 index 0000000..b64fc31 --- /dev/null +++ b/core/include/JellyfinQt/DTO/collectioncreationresult.h @@ -0,0 +1,62 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_COLLECTIONCREATIONRESULT_H +#define JELLYFIN_DTO_COLLECTIONCREATIONRESULT_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class CollectionCreationResult : public QObject { + Q_OBJECT +public: + explicit CollectionCreationResult(QObject *parent = nullptr); + static CollectionCreationResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + +signals: + void jellyfinIdChanged(QString newJellyfinId); +protected: + QString m_jellyfinId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_COLLECTIONCREATIONRESULT_H diff --git a/core/include/JellyfinQt/DTO/configurationpageinfo.h b/core/include/JellyfinQt/DTO/configurationpageinfo.h new file mode 100644 index 0000000..f26f6c2 --- /dev/null +++ b/core/include/JellyfinQt/DTO/configurationpageinfo.h @@ -0,0 +1,118 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CONFIGURATIONPAGEINFO_H +#define JELLYFIN_DTO_CONFIGURATIONPAGEINFO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/configurationpagetype.h" + +namespace Jellyfin { +namespace DTO { + +class ConfigurationPageInfo : public QObject { + Q_OBJECT +public: + explicit ConfigurationPageInfo(QObject *parent = nullptr); + static ConfigurationPageInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets a value indicating whether the configurations page is enabled in the main menu. + */ + Q_PROPERTY(bool enableInMainMenu READ enableInMainMenu WRITE setEnableInMainMenu NOTIFY enableInMainMenuChanged) + /** + * @brief Gets or sets the menu section. + */ + Q_PROPERTY(QString menuSection READ menuSection WRITE setMenuSection NOTIFY menuSectionChanged) + /** + * @brief Gets or sets the menu icon. + */ + Q_PROPERTY(QString menuIcon READ menuIcon WRITE setMenuIcon NOTIFY menuIconChanged) + /** + * @brief Gets or sets the display name. + */ + Q_PROPERTY(QString displayName READ displayName WRITE setDisplayName NOTIFY displayNameChanged) + Q_PROPERTY(ConfigurationPageType configurationPageType READ configurationPageType WRITE setConfigurationPageType NOTIFY configurationPageTypeChanged) + /** + * @brief Gets or sets the plugin id. + */ + Q_PROPERTY(QString pluginId READ pluginId WRITE setPluginId NOTIFY pluginIdChanged) + + QString name() const; + void setName(QString newName); + + bool enableInMainMenu() const; + void setEnableInMainMenu(bool newEnableInMainMenu); + + QString menuSection() const; + void setMenuSection(QString newMenuSection); + + QString menuIcon() const; + void setMenuIcon(QString newMenuIcon); + + QString displayName() const; + void setDisplayName(QString newDisplayName); + + ConfigurationPageType configurationPageType() const; + void setConfigurationPageType(ConfigurationPageType newConfigurationPageType); + + QString pluginId() const; + void setPluginId(QString newPluginId); + +signals: + void nameChanged(QString newName); + void enableInMainMenuChanged(bool newEnableInMainMenu); + void menuSectionChanged(QString newMenuSection); + void menuIconChanged(QString newMenuIcon); + void displayNameChanged(QString newDisplayName); + void configurationPageTypeChanged(ConfigurationPageType newConfigurationPageType); + void pluginIdChanged(QString newPluginId); +protected: + QString m_name; + bool m_enableInMainMenu; + QString m_menuSection; + QString m_menuIcon; + QString m_displayName; + ConfigurationPageType m_configurationPageType; + QString m_pluginId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CONFIGURATIONPAGEINFO_H diff --git a/core/include/JellyfinQt/DTO/configurationpagetype.h b/core/include/JellyfinQt/DTO/configurationpagetype.h new file mode 100644 index 0000000..4e1c489 --- /dev/null +++ b/core/include/JellyfinQt/DTO/configurationpagetype.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CONFIGURATIONPAGETYPE_H +#define JELLYFIN_DTO_CONFIGURATIONPAGETYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ConfigurationPageTypeClass { + Q_GADGET +public: + enum Value { + PluginConfiguration, + None, + }; + Q_ENUM(Value) +private: + explicit ConfigurationPageTypeClass(); +}; +typedef ConfigurationPageTypeClass::Value ConfigurationPageType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CONFIGURATIONPAGETYPE_H diff --git a/core/include/JellyfinQt/DTO/containerprofile.h b/core/include/JellyfinQt/DTO/containerprofile.h new file mode 100644 index 0000000..b97c696 --- /dev/null +++ b/core/include/JellyfinQt/DTO/containerprofile.h @@ -0,0 +1,80 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CONTAINERPROFILE_H +#define JELLYFIN_DTO_CONTAINERPROFILE_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/dlnaprofiletype.h" + +namespace Jellyfin { +namespace DTO { + +class ProfileCondition; + +class ContainerProfile : public QObject { + Q_OBJECT +public: + explicit ContainerProfile(QObject *parent = nullptr); + static ContainerProfile *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(DlnaProfileType type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QList conditions READ conditions WRITE setConditions NOTIFY conditionsChanged) + Q_PROPERTY(QString container READ container WRITE setContainer NOTIFY containerChanged) + + DlnaProfileType type() const; + void setType(DlnaProfileType newType); + + QList conditions() const; + void setConditions(QList newConditions); + + QString container() const; + void setContainer(QString newContainer); + +signals: + void typeChanged(DlnaProfileType newType); + void conditionsChanged(QList newConditions); + void containerChanged(QString newContainer); +protected: + DlnaProfileType m_type; + QList m_conditions; + QString m_container; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CONTAINERPROFILE_H diff --git a/core/include/JellyfinQt/DTO/controlresponse.h b/core/include/JellyfinQt/DTO/controlresponse.h new file mode 100644 index 0000000..39f6bb5 --- /dev/null +++ b/core/include/JellyfinQt/DTO/controlresponse.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CONTROLRESPONSE_H +#define JELLYFIN_DTO_CONTROLRESPONSE_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ControlResponse : public QObject { + Q_OBJECT +public: + explicit ControlResponse(QObject *parent = nullptr); + static ControlResponse *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QJsonObject headers READ headers WRITE setHeaders NOTIFY headersChanged) + Q_PROPERTY(QString xml READ xml WRITE setXml NOTIFY xmlChanged) + Q_PROPERTY(bool isSuccessful READ isSuccessful WRITE setIsSuccessful NOTIFY isSuccessfulChanged) + + QJsonObject headers() const; + void setHeaders(QJsonObject newHeaders); + + QString xml() const; + void setXml(QString newXml); + + bool isSuccessful() const; + void setIsSuccessful(bool newIsSuccessful); + +signals: + void headersChanged(QJsonObject newHeaders); + void xmlChanged(QString newXml); + void isSuccessfulChanged(bool newIsSuccessful); +protected: + QJsonObject m_headers; + QString m_xml; + bool m_isSuccessful; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CONTROLRESPONSE_H diff --git a/core/include/JellyfinQt/DTO/countryinfo.h b/core/include/JellyfinQt/DTO/countryinfo.h new file mode 100644 index 0000000..54fd6bd --- /dev/null +++ b/core/include/JellyfinQt/DTO/countryinfo.h @@ -0,0 +1,92 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_COUNTRYINFO_H +#define JELLYFIN_DTO_COUNTRYINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class CountryInfo : public QObject { + Q_OBJECT +public: + explicit CountryInfo(QObject *parent = nullptr); + static CountryInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the display name. + */ + Q_PROPERTY(QString displayName READ displayName WRITE setDisplayName NOTIFY displayNameChanged) + /** + * @brief Gets or sets the name of the two letter ISO region. + */ + Q_PROPERTY(QString twoLetterISORegionName READ twoLetterISORegionName WRITE setTwoLetterISORegionName NOTIFY twoLetterISORegionNameChanged) + /** + * @brief Gets or sets the name of the three letter ISO region. + */ + Q_PROPERTY(QString threeLetterISORegionName READ threeLetterISORegionName WRITE setThreeLetterISORegionName NOTIFY threeLetterISORegionNameChanged) + + QString name() const; + void setName(QString newName); + + QString displayName() const; + void setDisplayName(QString newDisplayName); + + QString twoLetterISORegionName() const; + void setTwoLetterISORegionName(QString newTwoLetterISORegionName); + + QString threeLetterISORegionName() const; + void setThreeLetterISORegionName(QString newThreeLetterISORegionName); + +signals: + void nameChanged(QString newName); + void displayNameChanged(QString newDisplayName); + void twoLetterISORegionNameChanged(QString newTwoLetterISORegionName); + void threeLetterISORegionNameChanged(QString newThreeLetterISORegionName); +protected: + QString m_name; + QString m_displayName; + QString m_twoLetterISORegionName; + QString m_threeLetterISORegionName; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_COUNTRYINFO_H diff --git a/core/include/JellyfinQt/DTO/createplaylistdto.h b/core/include/JellyfinQt/DTO/createplaylistdto.h new file mode 100644 index 0000000..783a5dd --- /dev/null +++ b/core/include/JellyfinQt/DTO/createplaylistdto.h @@ -0,0 +1,94 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CREATEPLAYLISTDTO_H +#define JELLYFIN_DTO_CREATEPLAYLISTDTO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class CreatePlaylistDto : public QObject { + Q_OBJECT +public: + explicit CreatePlaylistDto(QObject *parent = nullptr); + static CreatePlaylistDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name of the new playlist. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets item ids to add to the playlist. + */ + Q_PROPERTY(QStringList ids READ ids WRITE setIds NOTIFY idsChanged) + /** + * @brief Gets or sets the user id. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + /** + * @brief Gets or sets the media type. + */ + Q_PROPERTY(QString mediaType READ mediaType WRITE setMediaType NOTIFY mediaTypeChanged) + + QString name() const; + void setName(QString newName); + + QStringList ids() const; + void setIds(QStringList newIds); + + QString userId() const; + void setUserId(QString newUserId); + + QString mediaType() const; + void setMediaType(QString newMediaType); + +signals: + void nameChanged(QString newName); + void idsChanged(QStringList newIds); + void userIdChanged(QString newUserId); + void mediaTypeChanged(QString newMediaType); +protected: + QString m_name; + QStringList m_ids; + QString m_userId; + QString m_mediaType; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CREATEPLAYLISTDTO_H diff --git a/core/include/JellyfinQt/DTO/createuserbyname.h b/core/include/JellyfinQt/DTO/createuserbyname.h new file mode 100644 index 0000000..dfb5cf4 --- /dev/null +++ b/core/include/JellyfinQt/DTO/createuserbyname.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CREATEUSERBYNAME_H +#define JELLYFIN_DTO_CREATEUSERBYNAME_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class CreateUserByName : public QObject { + Q_OBJECT +public: + explicit CreateUserByName(QObject *parent = nullptr); + static CreateUserByName *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the username. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the password. + */ + Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged) + + QString name() const; + void setName(QString newName); + + QString password() const; + void setPassword(QString newPassword); + +signals: + void nameChanged(QString newName); + void passwordChanged(QString newPassword); +protected: + QString m_name; + QString m_password; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CREATEUSERBYNAME_H diff --git a/core/include/JellyfinQt/DTO/culturedto.h b/core/include/JellyfinQt/DTO/culturedto.h new file mode 100644 index 0000000..8d37650 --- /dev/null +++ b/core/include/JellyfinQt/DTO/culturedto.h @@ -0,0 +1,100 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_CULTUREDTO_H +#define JELLYFIN_DTO_CULTUREDTO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class CultureDto : public QObject { + Q_OBJECT +public: + explicit CultureDto(QObject *parent = nullptr); + static CultureDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the display name. + */ + Q_PROPERTY(QString displayName READ displayName WRITE setDisplayName NOTIFY displayNameChanged) + /** + * @brief Gets or sets the name of the two letter ISO language. + */ + Q_PROPERTY(QString twoLetterISOLanguageName READ twoLetterISOLanguageName WRITE setTwoLetterISOLanguageName NOTIFY twoLetterISOLanguageNameChanged) + /** + * @brief Gets or sets the name of the three letter ISO language. + */ + Q_PROPERTY(QString threeLetterISOLanguageName READ threeLetterISOLanguageName WRITE setThreeLetterISOLanguageName NOTIFY threeLetterISOLanguageNameChanged) + Q_PROPERTY(QStringList threeLetterISOLanguageNames READ threeLetterISOLanguageNames WRITE setThreeLetterISOLanguageNames NOTIFY threeLetterISOLanguageNamesChanged) + + QString name() const; + void setName(QString newName); + + QString displayName() const; + void setDisplayName(QString newDisplayName); + + QString twoLetterISOLanguageName() const; + void setTwoLetterISOLanguageName(QString newTwoLetterISOLanguageName); + + QString threeLetterISOLanguageName() const; + void setThreeLetterISOLanguageName(QString newThreeLetterISOLanguageName); + + QStringList threeLetterISOLanguageNames() const; + void setThreeLetterISOLanguageNames(QStringList newThreeLetterISOLanguageNames); + +signals: + void nameChanged(QString newName); + void displayNameChanged(QString newDisplayName); + void twoLetterISOLanguageNameChanged(QString newTwoLetterISOLanguageName); + void threeLetterISOLanguageNameChanged(QString newThreeLetterISOLanguageName); + void threeLetterISOLanguageNamesChanged(QStringList newThreeLetterISOLanguageNames); +protected: + QString m_name; + QString m_displayName; + QString m_twoLetterISOLanguageName; + QString m_threeLetterISOLanguageName; + QStringList m_threeLetterISOLanguageNames; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_CULTUREDTO_H diff --git a/core/include/JellyfinQt/DTO/dayofweek.h b/core/include/JellyfinQt/DTO/dayofweek.h new file mode 100644 index 0000000..3dede3e --- /dev/null +++ b/core/include/JellyfinQt/DTO/dayofweek.h @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DAYOFWEEK_H +#define JELLYFIN_DTO_DAYOFWEEK_H + +#include + +namespace Jellyfin { +namespace DTO { + +class DayOfWeekClass { + Q_GADGET +public: + enum Value { + Sunday, + Monday, + Tuesday, + Wednesday, + Thursday, + Friday, + Saturday, + }; + Q_ENUM(Value) +private: + explicit DayOfWeekClass(); +}; +typedef DayOfWeekClass::Value DayOfWeek; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DAYOFWEEK_H diff --git a/core/include/JellyfinQt/DTO/daypattern.h b/core/include/JellyfinQt/DTO/daypattern.h new file mode 100644 index 0000000..b8ee2c8 --- /dev/null +++ b/core/include/JellyfinQt/DTO/daypattern.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DAYPATTERN_H +#define JELLYFIN_DTO_DAYPATTERN_H + +#include + +namespace Jellyfin { +namespace DTO { + +class DayPatternClass { + Q_GADGET +public: + enum Value { + Daily, + Weekdays, + Weekends, + }; + Q_ENUM(Value) +private: + explicit DayPatternClass(); +}; +typedef DayPatternClass::Value DayPattern; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DAYPATTERN_H diff --git a/core/include/JellyfinQt/DTO/defaultdirectorybrowserinfodto.h b/core/include/JellyfinQt/DTO/defaultdirectorybrowserinfodto.h new file mode 100644 index 0000000..7521995 --- /dev/null +++ b/core/include/JellyfinQt/DTO/defaultdirectorybrowserinfodto.h @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DEFAULTDIRECTORYBROWSERINFODTO_H +#define JELLYFIN_DTO_DEFAULTDIRECTORYBROWSERINFODTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class DefaultDirectoryBrowserInfoDto : public QObject { + Q_OBJECT +public: + explicit DefaultDirectoryBrowserInfoDto(QObject *parent = nullptr); + static DefaultDirectoryBrowserInfoDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + + QString path() const; + void setPath(QString newPath); + +signals: + void pathChanged(QString newPath); +protected: + QString m_path; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DEFAULTDIRECTORYBROWSERINFODTO_H diff --git a/core/include/JellyfinQt/DTO/deviceidentification.h b/core/include/JellyfinQt/DTO/deviceidentification.h new file mode 100644 index 0000000..a012516 --- /dev/null +++ b/core/include/JellyfinQt/DTO/deviceidentification.h @@ -0,0 +1,141 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DEVICEIDENTIFICATION_H +#define JELLYFIN_DTO_DEVICEIDENTIFICATION_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class HttpHeaderInfo; + +class DeviceIdentification : public QObject { + Q_OBJECT +public: + explicit DeviceIdentification(QObject *parent = nullptr); + static DeviceIdentification *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name of the friendly. + */ + Q_PROPERTY(QString friendlyName READ friendlyName WRITE setFriendlyName NOTIFY friendlyNameChanged) + /** + * @brief Gets or sets the model number. + */ + Q_PROPERTY(QString modelNumber READ modelNumber WRITE setModelNumber NOTIFY modelNumberChanged) + /** + * @brief Gets or sets the serial number. + */ + Q_PROPERTY(QString serialNumber READ serialNumber WRITE setSerialNumber NOTIFY serialNumberChanged) + /** + * @brief Gets or sets the name of the model. + */ + Q_PROPERTY(QString modelName READ modelName WRITE setModelName NOTIFY modelNameChanged) + /** + * @brief Gets or sets the model description. + */ + Q_PROPERTY(QString modelDescription READ modelDescription WRITE setModelDescription NOTIFY modelDescriptionChanged) + /** + * @brief Gets or sets the model URL. + */ + Q_PROPERTY(QString modelUrl READ modelUrl WRITE setModelUrl NOTIFY modelUrlChanged) + /** + * @brief Gets or sets the manufacturer. + */ + Q_PROPERTY(QString manufacturer READ manufacturer WRITE setManufacturer NOTIFY manufacturerChanged) + /** + * @brief Gets or sets the manufacturer URL. + */ + Q_PROPERTY(QString manufacturerUrl READ manufacturerUrl WRITE setManufacturerUrl NOTIFY manufacturerUrlChanged) + /** + * @brief Gets or sets the headers. + */ + Q_PROPERTY(QList headers READ headers WRITE setHeaders NOTIFY headersChanged) + + QString friendlyName() const; + void setFriendlyName(QString newFriendlyName); + + QString modelNumber() const; + void setModelNumber(QString newModelNumber); + + QString serialNumber() const; + void setSerialNumber(QString newSerialNumber); + + QString modelName() const; + void setModelName(QString newModelName); + + QString modelDescription() const; + void setModelDescription(QString newModelDescription); + + QString modelUrl() const; + void setModelUrl(QString newModelUrl); + + QString manufacturer() const; + void setManufacturer(QString newManufacturer); + + QString manufacturerUrl() const; + void setManufacturerUrl(QString newManufacturerUrl); + + QList headers() const; + void setHeaders(QList newHeaders); + +signals: + void friendlyNameChanged(QString newFriendlyName); + void modelNumberChanged(QString newModelNumber); + void serialNumberChanged(QString newSerialNumber); + void modelNameChanged(QString newModelName); + void modelDescriptionChanged(QString newModelDescription); + void modelUrlChanged(QString newModelUrl); + void manufacturerChanged(QString newManufacturer); + void manufacturerUrlChanged(QString newManufacturerUrl); + void headersChanged(QList newHeaders); +protected: + QString m_friendlyName; + QString m_modelNumber; + QString m_serialNumber; + QString m_modelName; + QString m_modelDescription; + QString m_modelUrl; + QString m_manufacturer; + QString m_manufacturerUrl; + QList m_headers; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DEVICEIDENTIFICATION_H diff --git a/core/include/JellyfinQt/DTO/deviceinfo.h b/core/include/JellyfinQt/DTO/deviceinfo.h new file mode 100644 index 0000000..dc540e3 --- /dev/null +++ b/core/include/JellyfinQt/DTO/deviceinfo.h @@ -0,0 +1,131 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DEVICEINFO_H +#define JELLYFIN_DTO_DEVICEINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ClientCapabilities; + +class DeviceInfo : public QObject { + Q_OBJECT +public: + explicit DeviceInfo(QObject *parent = nullptr); + static DeviceInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the identifier. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the last name of the user. + */ + Q_PROPERTY(QString lastUserName READ lastUserName WRITE setLastUserName NOTIFY lastUserNameChanged) + /** + * @brief Gets or sets the name of the application. + */ + Q_PROPERTY(QString appName READ appName WRITE setAppName NOTIFY appNameChanged) + /** + * @brief Gets or sets the application version. + */ + Q_PROPERTY(QString appVersion READ appVersion WRITE setAppVersion NOTIFY appVersionChanged) + /** + * @brief Gets or sets the last user identifier. + */ + Q_PROPERTY(QString lastUserId READ lastUserId WRITE setLastUserId NOTIFY lastUserIdChanged) + /** + * @brief Gets or sets the date last modified. + */ + Q_PROPERTY(QDateTime dateLastActivity READ dateLastActivity WRITE setDateLastActivity NOTIFY dateLastActivityChanged) + Q_PROPERTY(ClientCapabilities * capabilities READ capabilities WRITE setCapabilities NOTIFY capabilitiesChanged) + Q_PROPERTY(QString iconUrl READ iconUrl WRITE setIconUrl NOTIFY iconUrlChanged) + + QString name() const; + void setName(QString newName); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString lastUserName() const; + void setLastUserName(QString newLastUserName); + + QString appName() const; + void setAppName(QString newAppName); + + QString appVersion() const; + void setAppVersion(QString newAppVersion); + + QString lastUserId() const; + void setLastUserId(QString newLastUserId); + + QDateTime dateLastActivity() const; + void setDateLastActivity(QDateTime newDateLastActivity); + + ClientCapabilities * capabilities() const; + void setCapabilities(ClientCapabilities * newCapabilities); + + QString iconUrl() const; + void setIconUrl(QString newIconUrl); + +signals: + void nameChanged(QString newName); + void jellyfinIdChanged(QString newJellyfinId); + void lastUserNameChanged(QString newLastUserName); + void appNameChanged(QString newAppName); + void appVersionChanged(QString newAppVersion); + void lastUserIdChanged(QString newLastUserId); + void dateLastActivityChanged(QDateTime newDateLastActivity); + void capabilitiesChanged(ClientCapabilities * newCapabilities); + void iconUrlChanged(QString newIconUrl); +protected: + QString m_name; + QString m_jellyfinId; + QString m_lastUserName; + QString m_appName; + QString m_appVersion; + QString m_lastUserId; + QDateTime m_dateLastActivity; + ClientCapabilities * m_capabilities = nullptr; + QString m_iconUrl; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DEVICEINFO_H diff --git a/core/include/JellyfinQt/DTO/deviceinfoqueryresult.h b/core/include/JellyfinQt/DTO/deviceinfoqueryresult.h new file mode 100644 index 0000000..23b3441 --- /dev/null +++ b/core/include/JellyfinQt/DTO/deviceinfoqueryresult.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DEVICEINFOQUERYRESULT_H +#define JELLYFIN_DTO_DEVICEINFOQUERYRESULT_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class DeviceInfo; + +class DeviceInfoQueryResult : public QObject { + Q_OBJECT +public: + explicit DeviceInfoQueryResult(QObject *parent = nullptr); + static DeviceInfoQueryResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the items. + */ + Q_PROPERTY(QList items READ items WRITE setItems NOTIFY itemsChanged) + /** + * @brief The total number of records available. + */ + Q_PROPERTY(qint32 totalRecordCount READ totalRecordCount WRITE setTotalRecordCount NOTIFY totalRecordCountChanged) + /** + * @brief The index of the first record in Items. + */ + Q_PROPERTY(qint32 startIndex READ startIndex WRITE setStartIndex NOTIFY startIndexChanged) + + QList items() const; + void setItems(QList newItems); + + qint32 totalRecordCount() const; + void setTotalRecordCount(qint32 newTotalRecordCount); + + qint32 startIndex() const; + void setStartIndex(qint32 newStartIndex); + +signals: + void itemsChanged(QList newItems); + void totalRecordCountChanged(qint32 newTotalRecordCount); + void startIndexChanged(qint32 newStartIndex); +protected: + QList m_items; + qint32 m_totalRecordCount; + qint32 m_startIndex; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DEVICEINFOQUERYRESULT_H diff --git a/core/include/JellyfinQt/DTO/deviceoptions.h b/core/include/JellyfinQt/DTO/deviceoptions.h new file mode 100644 index 0000000..6a5ef02 --- /dev/null +++ b/core/include/JellyfinQt/DTO/deviceoptions.h @@ -0,0 +1,62 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DEVICEOPTIONS_H +#define JELLYFIN_DTO_DEVICEOPTIONS_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class DeviceOptions : public QObject { + Q_OBJECT +public: + explicit DeviceOptions(QObject *parent = nullptr); + static DeviceOptions *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString customName READ customName WRITE setCustomName NOTIFY customNameChanged) + + QString customName() const; + void setCustomName(QString newCustomName); + +signals: + void customNameChanged(QString newCustomName); +protected: + QString m_customName; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DEVICEOPTIONS_H diff --git a/core/include/JellyfinQt/DTO/deviceprofile.h b/core/include/JellyfinQt/DTO/deviceprofile.h new file mode 100644 index 0000000..5569b4f --- /dev/null +++ b/core/include/JellyfinQt/DTO/deviceprofile.h @@ -0,0 +1,415 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DEVICEPROFILE_H +#define JELLYFIN_DTO_DEVICEPROFILE_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class CodecProfile; +class ContainerProfile; +class DeviceIdentification; +class DirectPlayProfile; +class ResponseProfile; +class SubtitleProfile; +class TranscodingProfile; +class XmlAttribute; + +class DeviceProfile : public QObject { + Q_OBJECT +public: + explicit DeviceProfile(QObject *parent = nullptr); + static DeviceProfile *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the Name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the Id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(DeviceIdentification * identification READ identification WRITE setIdentification NOTIFY identificationChanged) + /** + * @brief Gets or sets the FriendlyName. + */ + Q_PROPERTY(QString friendlyName READ friendlyName WRITE setFriendlyName NOTIFY friendlyNameChanged) + /** + * @brief Gets or sets the Manufacturer. + */ + Q_PROPERTY(QString manufacturer READ manufacturer WRITE setManufacturer NOTIFY manufacturerChanged) + /** + * @brief Gets or sets the ManufacturerUrl. + */ + Q_PROPERTY(QString manufacturerUrl READ manufacturerUrl WRITE setManufacturerUrl NOTIFY manufacturerUrlChanged) + /** + * @brief Gets or sets the ModelName. + */ + Q_PROPERTY(QString modelName READ modelName WRITE setModelName NOTIFY modelNameChanged) + /** + * @brief Gets or sets the ModelDescription. + */ + Q_PROPERTY(QString modelDescription READ modelDescription WRITE setModelDescription NOTIFY modelDescriptionChanged) + /** + * @brief Gets or sets the ModelNumber. + */ + Q_PROPERTY(QString modelNumber READ modelNumber WRITE setModelNumber NOTIFY modelNumberChanged) + /** + * @brief Gets or sets the ModelUrl. + */ + Q_PROPERTY(QString modelUrl READ modelUrl WRITE setModelUrl NOTIFY modelUrlChanged) + /** + * @brief Gets or sets the SerialNumber. + */ + Q_PROPERTY(QString serialNumber READ serialNumber WRITE setSerialNumber NOTIFY serialNumberChanged) + /** + * @brief Gets or sets a value indicating whether EnableAlbumArtInDidl. + */ + Q_PROPERTY(bool enableAlbumArtInDidl READ enableAlbumArtInDidl WRITE setEnableAlbumArtInDidl NOTIFY enableAlbumArtInDidlChanged) + /** + * @brief Gets or sets a value indicating whether EnableSingleAlbumArtLimit. + */ + Q_PROPERTY(bool enableSingleAlbumArtLimit READ enableSingleAlbumArtLimit WRITE setEnableSingleAlbumArtLimit NOTIFY enableSingleAlbumArtLimitChanged) + /** + * @brief Gets or sets a value indicating whether EnableSingleSubtitleLimit. + */ + Q_PROPERTY(bool enableSingleSubtitleLimit READ enableSingleSubtitleLimit WRITE setEnableSingleSubtitleLimit NOTIFY enableSingleSubtitleLimitChanged) + /** + * @brief Gets or sets the SupportedMediaTypes. + */ + Q_PROPERTY(QString supportedMediaTypes READ supportedMediaTypes WRITE setSupportedMediaTypes NOTIFY supportedMediaTypesChanged) + /** + * @brief Gets or sets the UserId. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + /** + * @brief Gets or sets the AlbumArtPn. + */ + Q_PROPERTY(QString albumArtPn READ albumArtPn WRITE setAlbumArtPn NOTIFY albumArtPnChanged) + /** + * @brief Gets or sets the MaxAlbumArtWidth. + */ + Q_PROPERTY(qint32 maxAlbumArtWidth READ maxAlbumArtWidth WRITE setMaxAlbumArtWidth NOTIFY maxAlbumArtWidthChanged) + /** + * @brief Gets or sets the MaxAlbumArtHeight. + */ + Q_PROPERTY(qint32 maxAlbumArtHeight READ maxAlbumArtHeight WRITE setMaxAlbumArtHeight NOTIFY maxAlbumArtHeightChanged) + /** + * @brief Gets or sets the MaxIconWidth. + */ + Q_PROPERTY(qint32 maxIconWidth READ maxIconWidth WRITE setMaxIconWidth NOTIFY maxIconWidthChanged) + /** + * @brief Gets or sets the MaxIconHeight. + */ + Q_PROPERTY(qint32 maxIconHeight READ maxIconHeight WRITE setMaxIconHeight NOTIFY maxIconHeightChanged) + /** + * @brief Gets or sets the MaxStreamingBitrate. + */ + Q_PROPERTY(qint32 maxStreamingBitrate READ maxStreamingBitrate WRITE setMaxStreamingBitrate NOTIFY maxStreamingBitrateChanged) + /** + * @brief Gets or sets the MaxStaticBitrate. + */ + Q_PROPERTY(qint32 maxStaticBitrate READ maxStaticBitrate WRITE setMaxStaticBitrate NOTIFY maxStaticBitrateChanged) + /** + * @brief Gets or sets the MusicStreamingTranscodingBitrate. + */ + Q_PROPERTY(qint32 musicStreamingTranscodingBitrate READ musicStreamingTranscodingBitrate WRITE setMusicStreamingTranscodingBitrate NOTIFY musicStreamingTranscodingBitrateChanged) + /** + * @brief Gets or sets the MaxStaticMusicBitrate. + */ + Q_PROPERTY(qint32 maxStaticMusicBitrate READ maxStaticMusicBitrate WRITE setMaxStaticMusicBitrate NOTIFY maxStaticMusicBitrateChanged) + /** + * @brief Gets or sets the content of the aggregationFlags element in the urn:schemas-sonycom:av namespace. + */ + Q_PROPERTY(QString sonyAggregationFlags READ sonyAggregationFlags WRITE setSonyAggregationFlags NOTIFY sonyAggregationFlagsChanged) + /** + * @brief Gets or sets the ProtocolInfo. + */ + Q_PROPERTY(QString protocolInfo READ protocolInfo WRITE setProtocolInfo NOTIFY protocolInfoChanged) + /** + * @brief Gets or sets the TimelineOffsetSeconds. + */ + Q_PROPERTY(qint32 timelineOffsetSeconds READ timelineOffsetSeconds WRITE setTimelineOffsetSeconds NOTIFY timelineOffsetSecondsChanged) + /** + * @brief Gets or sets a value indicating whether RequiresPlainVideoItems. + */ + Q_PROPERTY(bool requiresPlainVideoItems READ requiresPlainVideoItems WRITE setRequiresPlainVideoItems NOTIFY requiresPlainVideoItemsChanged) + /** + * @brief Gets or sets a value indicating whether RequiresPlainFolders. + */ + Q_PROPERTY(bool requiresPlainFolders READ requiresPlainFolders WRITE setRequiresPlainFolders NOTIFY requiresPlainFoldersChanged) + /** + * @brief Gets or sets a value indicating whether EnableMSMediaReceiverRegistrar. + */ + Q_PROPERTY(bool enableMSMediaReceiverRegistrar READ enableMSMediaReceiverRegistrar WRITE setEnableMSMediaReceiverRegistrar NOTIFY enableMSMediaReceiverRegistrarChanged) + /** + * @brief Gets or sets a value indicating whether IgnoreTranscodeByteRangeRequests. + */ + Q_PROPERTY(bool ignoreTranscodeByteRangeRequests READ ignoreTranscodeByteRangeRequests WRITE setIgnoreTranscodeByteRangeRequests NOTIFY ignoreTranscodeByteRangeRequestsChanged) + /** + * @brief Gets or sets the XmlRootAttributes. + */ + Q_PROPERTY(QList xmlRootAttributes READ xmlRootAttributes WRITE setXmlRootAttributes NOTIFY xmlRootAttributesChanged) + /** + * @brief Gets or sets the direct play profiles. + */ + Q_PROPERTY(QList directPlayProfiles READ directPlayProfiles WRITE setDirectPlayProfiles NOTIFY directPlayProfilesChanged) + /** + * @brief Gets or sets the transcoding profiles. + */ + Q_PROPERTY(QList transcodingProfiles READ transcodingProfiles WRITE setTranscodingProfiles NOTIFY transcodingProfilesChanged) + /** + * @brief Gets or sets the ContainerProfiles. + */ + Q_PROPERTY(QList containerProfiles READ containerProfiles WRITE setContainerProfiles NOTIFY containerProfilesChanged) + /** + * @brief Gets or sets the CodecProfiles. + */ + Q_PROPERTY(QList codecProfiles READ codecProfiles WRITE setCodecProfiles NOTIFY codecProfilesChanged) + /** + * @brief Gets or sets the ResponseProfiles. + */ + Q_PROPERTY(QList responseProfiles READ responseProfiles WRITE setResponseProfiles NOTIFY responseProfilesChanged) + /** + * @brief Gets or sets the SubtitleProfiles. + */ + Q_PROPERTY(QList subtitleProfiles READ subtitleProfiles WRITE setSubtitleProfiles NOTIFY subtitleProfilesChanged) + + QString name() const; + void setName(QString newName); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + DeviceIdentification * identification() const; + void setIdentification(DeviceIdentification * newIdentification); + + QString friendlyName() const; + void setFriendlyName(QString newFriendlyName); + + QString manufacturer() const; + void setManufacturer(QString newManufacturer); + + QString manufacturerUrl() const; + void setManufacturerUrl(QString newManufacturerUrl); + + QString modelName() const; + void setModelName(QString newModelName); + + QString modelDescription() const; + void setModelDescription(QString newModelDescription); + + QString modelNumber() const; + void setModelNumber(QString newModelNumber); + + QString modelUrl() const; + void setModelUrl(QString newModelUrl); + + QString serialNumber() const; + void setSerialNumber(QString newSerialNumber); + + bool enableAlbumArtInDidl() const; + void setEnableAlbumArtInDidl(bool newEnableAlbumArtInDidl); + + bool enableSingleAlbumArtLimit() const; + void setEnableSingleAlbumArtLimit(bool newEnableSingleAlbumArtLimit); + + bool enableSingleSubtitleLimit() const; + void setEnableSingleSubtitleLimit(bool newEnableSingleSubtitleLimit); + + QString supportedMediaTypes() const; + void setSupportedMediaTypes(QString newSupportedMediaTypes); + + QString userId() const; + void setUserId(QString newUserId); + + QString albumArtPn() const; + void setAlbumArtPn(QString newAlbumArtPn); + + qint32 maxAlbumArtWidth() const; + void setMaxAlbumArtWidth(qint32 newMaxAlbumArtWidth); + + qint32 maxAlbumArtHeight() const; + void setMaxAlbumArtHeight(qint32 newMaxAlbumArtHeight); + + qint32 maxIconWidth() const; + void setMaxIconWidth(qint32 newMaxIconWidth); + + qint32 maxIconHeight() const; + void setMaxIconHeight(qint32 newMaxIconHeight); + + qint32 maxStreamingBitrate() const; + void setMaxStreamingBitrate(qint32 newMaxStreamingBitrate); + + qint32 maxStaticBitrate() const; + void setMaxStaticBitrate(qint32 newMaxStaticBitrate); + + qint32 musicStreamingTranscodingBitrate() const; + void setMusicStreamingTranscodingBitrate(qint32 newMusicStreamingTranscodingBitrate); + + qint32 maxStaticMusicBitrate() const; + void setMaxStaticMusicBitrate(qint32 newMaxStaticMusicBitrate); + + QString sonyAggregationFlags() const; + void setSonyAggregationFlags(QString newSonyAggregationFlags); + + QString protocolInfo() const; + void setProtocolInfo(QString newProtocolInfo); + + qint32 timelineOffsetSeconds() const; + void setTimelineOffsetSeconds(qint32 newTimelineOffsetSeconds); + + bool requiresPlainVideoItems() const; + void setRequiresPlainVideoItems(bool newRequiresPlainVideoItems); + + bool requiresPlainFolders() const; + void setRequiresPlainFolders(bool newRequiresPlainFolders); + + bool enableMSMediaReceiverRegistrar() const; + void setEnableMSMediaReceiverRegistrar(bool newEnableMSMediaReceiverRegistrar); + + bool ignoreTranscodeByteRangeRequests() const; + void setIgnoreTranscodeByteRangeRequests(bool newIgnoreTranscodeByteRangeRequests); + + QList xmlRootAttributes() const; + void setXmlRootAttributes(QList newXmlRootAttributes); + + QList directPlayProfiles() const; + void setDirectPlayProfiles(QList newDirectPlayProfiles); + + QList transcodingProfiles() const; + void setTranscodingProfiles(QList newTranscodingProfiles); + + QList containerProfiles() const; + void setContainerProfiles(QList newContainerProfiles); + + QList codecProfiles() const; + void setCodecProfiles(QList newCodecProfiles); + + QList responseProfiles() const; + void setResponseProfiles(QList newResponseProfiles); + + QList subtitleProfiles() const; + void setSubtitleProfiles(QList newSubtitleProfiles); + +signals: + void nameChanged(QString newName); + void jellyfinIdChanged(QString newJellyfinId); + void identificationChanged(DeviceIdentification * newIdentification); + void friendlyNameChanged(QString newFriendlyName); + void manufacturerChanged(QString newManufacturer); + void manufacturerUrlChanged(QString newManufacturerUrl); + void modelNameChanged(QString newModelName); + void modelDescriptionChanged(QString newModelDescription); + void modelNumberChanged(QString newModelNumber); + void modelUrlChanged(QString newModelUrl); + void serialNumberChanged(QString newSerialNumber); + void enableAlbumArtInDidlChanged(bool newEnableAlbumArtInDidl); + void enableSingleAlbumArtLimitChanged(bool newEnableSingleAlbumArtLimit); + void enableSingleSubtitleLimitChanged(bool newEnableSingleSubtitleLimit); + void supportedMediaTypesChanged(QString newSupportedMediaTypes); + void userIdChanged(QString newUserId); + void albumArtPnChanged(QString newAlbumArtPn); + void maxAlbumArtWidthChanged(qint32 newMaxAlbumArtWidth); + void maxAlbumArtHeightChanged(qint32 newMaxAlbumArtHeight); + void maxIconWidthChanged(qint32 newMaxIconWidth); + void maxIconHeightChanged(qint32 newMaxIconHeight); + void maxStreamingBitrateChanged(qint32 newMaxStreamingBitrate); + void maxStaticBitrateChanged(qint32 newMaxStaticBitrate); + void musicStreamingTranscodingBitrateChanged(qint32 newMusicStreamingTranscodingBitrate); + void maxStaticMusicBitrateChanged(qint32 newMaxStaticMusicBitrate); + void sonyAggregationFlagsChanged(QString newSonyAggregationFlags); + void protocolInfoChanged(QString newProtocolInfo); + void timelineOffsetSecondsChanged(qint32 newTimelineOffsetSeconds); + void requiresPlainVideoItemsChanged(bool newRequiresPlainVideoItems); + void requiresPlainFoldersChanged(bool newRequiresPlainFolders); + void enableMSMediaReceiverRegistrarChanged(bool newEnableMSMediaReceiverRegistrar); + void ignoreTranscodeByteRangeRequestsChanged(bool newIgnoreTranscodeByteRangeRequests); + void xmlRootAttributesChanged(QList newXmlRootAttributes); + void directPlayProfilesChanged(QList newDirectPlayProfiles); + void transcodingProfilesChanged(QList newTranscodingProfiles); + void containerProfilesChanged(QList newContainerProfiles); + void codecProfilesChanged(QList newCodecProfiles); + void responseProfilesChanged(QList newResponseProfiles); + void subtitleProfilesChanged(QList newSubtitleProfiles); +protected: + QString m_name; + QString m_jellyfinId; + DeviceIdentification * m_identification = nullptr; + QString m_friendlyName; + QString m_manufacturer; + QString m_manufacturerUrl; + QString m_modelName; + QString m_modelDescription; + QString m_modelNumber; + QString m_modelUrl; + QString m_serialNumber; + bool m_enableAlbumArtInDidl; + bool m_enableSingleAlbumArtLimit; + bool m_enableSingleSubtitleLimit; + QString m_supportedMediaTypes; + QString m_userId; + QString m_albumArtPn; + qint32 m_maxAlbumArtWidth; + qint32 m_maxAlbumArtHeight; + qint32 m_maxIconWidth; + qint32 m_maxIconHeight; + qint32 m_maxStreamingBitrate; + qint32 m_maxStaticBitrate; + qint32 m_musicStreamingTranscodingBitrate; + qint32 m_maxStaticMusicBitrate; + QString m_sonyAggregationFlags; + QString m_protocolInfo; + qint32 m_timelineOffsetSeconds; + bool m_requiresPlainVideoItems; + bool m_requiresPlainFolders; + bool m_enableMSMediaReceiverRegistrar; + bool m_ignoreTranscodeByteRangeRequests; + QList m_xmlRootAttributes; + QList m_directPlayProfiles; + QList m_transcodingProfiles; + QList m_containerProfiles; + QList m_codecProfiles; + QList m_responseProfiles; + QList m_subtitleProfiles; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DEVICEPROFILE_H diff --git a/core/include/JellyfinQt/DTO/deviceprofileinfo.h b/core/include/JellyfinQt/DTO/deviceprofileinfo.h new file mode 100644 index 0000000..52198aa --- /dev/null +++ b/core/include/JellyfinQt/DTO/deviceprofileinfo.h @@ -0,0 +1,82 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DEVICEPROFILEINFO_H +#define JELLYFIN_DTO_DEVICEPROFILEINFO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/deviceprofiletype.h" + +namespace Jellyfin { +namespace DTO { + +class DeviceProfileInfo : public QObject { + Q_OBJECT +public: + explicit DeviceProfileInfo(QObject *parent = nullptr); + static DeviceProfileInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the identifier. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(DeviceProfileType type READ type WRITE setType NOTIFY typeChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString name() const; + void setName(QString newName); + + DeviceProfileType type() const; + void setType(DeviceProfileType newType); + +signals: + void jellyfinIdChanged(QString newJellyfinId); + void nameChanged(QString newName); + void typeChanged(DeviceProfileType newType); +protected: + QString m_jellyfinId; + QString m_name; + DeviceProfileType m_type; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DEVICEPROFILEINFO_H diff --git a/core/include/JellyfinQt/DTO/deviceprofiletype.h b/core/include/JellyfinQt/DTO/deviceprofiletype.h new file mode 100644 index 0000000..255004a --- /dev/null +++ b/core/include/JellyfinQt/DTO/deviceprofiletype.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DEVICEPROFILETYPE_H +#define JELLYFIN_DTO_DEVICEPROFILETYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class DeviceProfileTypeClass { + Q_GADGET +public: + enum Value { + System, + User, + }; + Q_ENUM(Value) +private: + explicit DeviceProfileTypeClass(); +}; +typedef DeviceProfileTypeClass::Value DeviceProfileType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DEVICEPROFILETYPE_H diff --git a/core/include/JellyfinQt/DTO/directplayprofile.h b/core/include/JellyfinQt/DTO/directplayprofile.h new file mode 100644 index 0000000..f254c16 --- /dev/null +++ b/core/include/JellyfinQt/DTO/directplayprofile.h @@ -0,0 +1,82 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DIRECTPLAYPROFILE_H +#define JELLYFIN_DTO_DIRECTPLAYPROFILE_H + +#include +#include +#include + +#include "JellyfinQt/DTO/dlnaprofiletype.h" + +namespace Jellyfin { +namespace DTO { + +class DirectPlayProfile : public QObject { + Q_OBJECT +public: + explicit DirectPlayProfile(QObject *parent = nullptr); + static DirectPlayProfile *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString container READ container WRITE setContainer NOTIFY containerChanged) + Q_PROPERTY(QString audioCodec READ audioCodec WRITE setAudioCodec NOTIFY audioCodecChanged) + Q_PROPERTY(QString videoCodec READ videoCodec WRITE setVideoCodec NOTIFY videoCodecChanged) + Q_PROPERTY(DlnaProfileType type READ type WRITE setType NOTIFY typeChanged) + + QString container() const; + void setContainer(QString newContainer); + + QString audioCodec() const; + void setAudioCodec(QString newAudioCodec); + + QString videoCodec() const; + void setVideoCodec(QString newVideoCodec); + + DlnaProfileType type() const; + void setType(DlnaProfileType newType); + +signals: + void containerChanged(QString newContainer); + void audioCodecChanged(QString newAudioCodec); + void videoCodecChanged(QString newVideoCodec); + void typeChanged(DlnaProfileType newType); +protected: + QString m_container; + QString m_audioCodec; + QString m_videoCodec; + DlnaProfileType m_type; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DIRECTPLAYPROFILE_H diff --git a/core/include/JellyfinQt/DTO/displaypreferencesdto.h b/core/include/JellyfinQt/DTO/displaypreferencesdto.h new file mode 100644 index 0000000..83b84f8 --- /dev/null +++ b/core/include/JellyfinQt/DTO/displaypreferencesdto.h @@ -0,0 +1,179 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DISPLAYPREFERENCESDTO_H +#define JELLYFIN_DTO_DISPLAYPREFERENCESDTO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/scrolldirection.h" +#include "JellyfinQt/DTO/sortorder.h" + +namespace Jellyfin { +namespace DTO { + +class DisplayPreferencesDto : public QObject { + Q_OBJECT +public: + explicit DisplayPreferencesDto(QObject *parent = nullptr); + static DisplayPreferencesDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the user id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the type of the view. + */ + Q_PROPERTY(QString viewType READ viewType WRITE setViewType NOTIFY viewTypeChanged) + /** + * @brief Gets or sets the sort by. + */ + Q_PROPERTY(QString sortBy READ sortBy WRITE setSortBy NOTIFY sortByChanged) + /** + * @brief Gets or sets the index by. + */ + Q_PROPERTY(QString indexBy READ indexBy WRITE setIndexBy NOTIFY indexByChanged) + /** + * @brief Gets or sets a value indicating whether [remember indexing]. + */ + Q_PROPERTY(bool rememberIndexing READ rememberIndexing WRITE setRememberIndexing NOTIFY rememberIndexingChanged) + /** + * @brief Gets or sets the height of the primary image. + */ + Q_PROPERTY(qint32 primaryImageHeight READ primaryImageHeight WRITE setPrimaryImageHeight NOTIFY primaryImageHeightChanged) + /** + * @brief Gets or sets the width of the primary image. + */ + Q_PROPERTY(qint32 primaryImageWidth READ primaryImageWidth WRITE setPrimaryImageWidth NOTIFY primaryImageWidthChanged) + /** + * @brief Gets or sets the custom prefs. + */ + Q_PROPERTY(QJsonObject customPrefs READ customPrefs WRITE setCustomPrefs NOTIFY customPrefsChanged) + Q_PROPERTY(ScrollDirection scrollDirection READ scrollDirection WRITE setScrollDirection NOTIFY scrollDirectionChanged) + /** + * @brief Gets or sets a value indicating whether to show backdrops on this item. + */ + Q_PROPERTY(bool showBackdrop READ showBackdrop WRITE setShowBackdrop NOTIFY showBackdropChanged) + /** + * @brief Gets or sets a value indicating whether [remember sorting]. + */ + Q_PROPERTY(bool rememberSorting READ rememberSorting WRITE setRememberSorting NOTIFY rememberSortingChanged) + Q_PROPERTY(SortOrder sortOrder READ sortOrder WRITE setSortOrder NOTIFY sortOrderChanged) + /** + * @brief Gets or sets a value indicating whether [show sidebar]. + */ + Q_PROPERTY(bool showSidebar READ showSidebar WRITE setShowSidebar NOTIFY showSidebarChanged) + /** + * @brief Gets or sets the client. + */ + Q_PROPERTY(QString client READ client WRITE setClient NOTIFY clientChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString viewType() const; + void setViewType(QString newViewType); + + QString sortBy() const; + void setSortBy(QString newSortBy); + + QString indexBy() const; + void setIndexBy(QString newIndexBy); + + bool rememberIndexing() const; + void setRememberIndexing(bool newRememberIndexing); + + qint32 primaryImageHeight() const; + void setPrimaryImageHeight(qint32 newPrimaryImageHeight); + + qint32 primaryImageWidth() const; + void setPrimaryImageWidth(qint32 newPrimaryImageWidth); + + QJsonObject customPrefs() const; + void setCustomPrefs(QJsonObject newCustomPrefs); + + ScrollDirection scrollDirection() const; + void setScrollDirection(ScrollDirection newScrollDirection); + + bool showBackdrop() const; + void setShowBackdrop(bool newShowBackdrop); + + bool rememberSorting() const; + void setRememberSorting(bool newRememberSorting); + + SortOrder sortOrder() const; + void setSortOrder(SortOrder newSortOrder); + + bool showSidebar() const; + void setShowSidebar(bool newShowSidebar); + + QString client() const; + void setClient(QString newClient); + +signals: + void jellyfinIdChanged(QString newJellyfinId); + void viewTypeChanged(QString newViewType); + void sortByChanged(QString newSortBy); + void indexByChanged(QString newIndexBy); + void rememberIndexingChanged(bool newRememberIndexing); + void primaryImageHeightChanged(qint32 newPrimaryImageHeight); + void primaryImageWidthChanged(qint32 newPrimaryImageWidth); + void customPrefsChanged(QJsonObject newCustomPrefs); + void scrollDirectionChanged(ScrollDirection newScrollDirection); + void showBackdropChanged(bool newShowBackdrop); + void rememberSortingChanged(bool newRememberSorting); + void sortOrderChanged(SortOrder newSortOrder); + void showSidebarChanged(bool newShowSidebar); + void clientChanged(QString newClient); +protected: + QString m_jellyfinId; + QString m_viewType; + QString m_sortBy; + QString m_indexBy; + bool m_rememberIndexing; + qint32 m_primaryImageHeight; + qint32 m_primaryImageWidth; + QJsonObject m_customPrefs; + ScrollDirection m_scrollDirection; + bool m_showBackdrop; + bool m_rememberSorting; + SortOrder m_sortOrder; + bool m_showSidebar; + QString m_client; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DISPLAYPREFERENCESDTO_H diff --git a/core/include/JellyfinQt/DTO/dlnaprofiletype.h b/core/include/JellyfinQt/DTO/dlnaprofiletype.h new file mode 100644 index 0000000..899d23f --- /dev/null +++ b/core/include/JellyfinQt/DTO/dlnaprofiletype.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DLNAPROFILETYPE_H +#define JELLYFIN_DTO_DLNAPROFILETYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class DlnaProfileTypeClass { + Q_GADGET +public: + enum Value { + Audio, + Video, + Photo, + }; + Q_ENUM(Value) +private: + explicit DlnaProfileTypeClass(); +}; +typedef DlnaProfileTypeClass::Value DlnaProfileType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DLNAPROFILETYPE_H diff --git a/core/include/JellyfinQt/DTO/dynamicdayofweek.h b/core/include/JellyfinQt/DTO/dynamicdayofweek.h new file mode 100644 index 0000000..7a0dc28 --- /dev/null +++ b/core/include/JellyfinQt/DTO/dynamicdayofweek.h @@ -0,0 +1,62 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_DYNAMICDAYOFWEEK_H +#define JELLYFIN_DTO_DYNAMICDAYOFWEEK_H + +#include + +namespace Jellyfin { +namespace DTO { + +class DynamicDayOfWeekClass { + Q_GADGET +public: + enum Value { + Sunday, + Monday, + Tuesday, + Wednesday, + Thursday, + Friday, + Saturday, + Everyday, + Weekday, + Weekend, + }; + Q_ENUM(Value) +private: + explicit DynamicDayOfWeekClass(); +}; +typedef DynamicDayOfWeekClass::Value DynamicDayOfWeek; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_DYNAMICDAYOFWEEK_H diff --git a/core/include/JellyfinQt/DTO/encodingcontext.h b/core/include/JellyfinQt/DTO/encodingcontext.h new file mode 100644 index 0000000..1bf486d --- /dev/null +++ b/core/include/JellyfinQt/DTO/encodingcontext.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ENCODINGCONTEXT_H +#define JELLYFIN_DTO_ENCODINGCONTEXT_H + +#include + +namespace Jellyfin { +namespace DTO { + +class EncodingContextClass { + Q_GADGET +public: + enum Value { + Streaming, + Static, + }; + Q_ENUM(Value) +private: + explicit EncodingContextClass(); +}; +typedef EncodingContextClass::Value EncodingContext; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ENCODINGCONTEXT_H diff --git a/core/include/JellyfinQt/DTO/endpointinfo.h b/core/include/JellyfinQt/DTO/endpointinfo.h new file mode 100644 index 0000000..cabb2bb --- /dev/null +++ b/core/include/JellyfinQt/DTO/endpointinfo.h @@ -0,0 +1,67 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ENDPOINTINFO_H +#define JELLYFIN_DTO_ENDPOINTINFO_H + +#include +#include + +namespace Jellyfin { +namespace DTO { + +class EndPointInfo : public QObject { + Q_OBJECT +public: + explicit EndPointInfo(QObject *parent = nullptr); + static EndPointInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(bool isLocal READ isLocal WRITE setIsLocal NOTIFY isLocalChanged) + Q_PROPERTY(bool isInNetwork READ isInNetwork WRITE setIsInNetwork NOTIFY isInNetworkChanged) + + bool isLocal() const; + void setIsLocal(bool newIsLocal); + + bool isInNetwork() const; + void setIsInNetwork(bool newIsInNetwork); + +signals: + void isLocalChanged(bool newIsLocal); + void isInNetworkChanged(bool newIsInNetwork); +protected: + bool m_isLocal; + bool m_isInNetwork; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ENDPOINTINFO_H diff --git a/core/include/JellyfinQt/DTO/externalidinfo.h b/core/include/JellyfinQt/DTO/externalidinfo.h new file mode 100644 index 0000000..5990258 --- /dev/null +++ b/core/include/JellyfinQt/DTO/externalidinfo.h @@ -0,0 +1,91 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_EXTERNALIDINFO_H +#define JELLYFIN_DTO_EXTERNALIDINFO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/externalidmediatype.h" + +namespace Jellyfin { +namespace DTO { + +class ExternalIdInfo : public QObject { + Q_OBJECT +public: + explicit ExternalIdInfo(QObject *parent = nullptr); + static ExternalIdInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the display name of the external id provider (IE: IMDB, MusicBrainz, etc). + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the unique key for this id. This key should be unique across all providers. + */ + Q_PROPERTY(QString key READ key WRITE setKey NOTIFY keyChanged) + Q_PROPERTY(ExternalIdMediaType type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets or sets the URL format string. + */ + Q_PROPERTY(QString urlFormatString READ urlFormatString WRITE setUrlFormatString NOTIFY urlFormatStringChanged) + + QString name() const; + void setName(QString newName); + + QString key() const; + void setKey(QString newKey); + + ExternalIdMediaType type() const; + void setType(ExternalIdMediaType newType); + + QString urlFormatString() const; + void setUrlFormatString(QString newUrlFormatString); + +signals: + void nameChanged(QString newName); + void keyChanged(QString newKey); + void typeChanged(ExternalIdMediaType newType); + void urlFormatStringChanged(QString newUrlFormatString); +protected: + QString m_name; + QString m_key; + ExternalIdMediaType m_type; + QString m_urlFormatString; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_EXTERNALIDINFO_H diff --git a/core/include/JellyfinQt/DTO/externalidmediatype.h b/core/include/JellyfinQt/DTO/externalidmediatype.h new file mode 100644 index 0000000..4344912 --- /dev/null +++ b/core/include/JellyfinQt/DTO/externalidmediatype.h @@ -0,0 +1,64 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_EXTERNALIDMEDIATYPE_H +#define JELLYFIN_DTO_EXTERNALIDMEDIATYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ExternalIdMediaTypeClass { + Q_GADGET +public: + enum Value { + Album, + AlbumArtist, + Artist, + BoxSet, + Episode, + Movie, + OtherArtist, + Person, + ReleaseGroup, + Season, + Series, + Track, + }; + Q_ENUM(Value) +private: + explicit ExternalIdMediaTypeClass(); +}; +typedef ExternalIdMediaTypeClass::Value ExternalIdMediaType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_EXTERNALIDMEDIATYPE_H diff --git a/core/include/JellyfinQt/DTO/externalurl.h b/core/include/JellyfinQt/DTO/externalurl.h new file mode 100644 index 0000000..804e898 --- /dev/null +++ b/core/include/JellyfinQt/DTO/externalurl.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_EXTERNALURL_H +#define JELLYFIN_DTO_EXTERNALURL_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ExternalUrl : public QObject { + Q_OBJECT +public: + explicit ExternalUrl(QObject *parent = nullptr); + static ExternalUrl *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the type of the item. + */ + Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY urlChanged) + + QString name() const; + void setName(QString newName); + + QString url() const; + void setUrl(QString newUrl); + +signals: + void nameChanged(QString newName); + void urlChanged(QString newUrl); +protected: + QString m_name; + QString m_url; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_EXTERNALURL_H diff --git a/core/include/JellyfinQt/DTO/ffmpeglocation.h b/core/include/JellyfinQt/DTO/ffmpeglocation.h new file mode 100644 index 0000000..f57f3b7 --- /dev/null +++ b/core/include/JellyfinQt/DTO/ffmpeglocation.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_FFMPEGLOCATION_H +#define JELLYFIN_DTO_FFMPEGLOCATION_H + +#include + +namespace Jellyfin { +namespace DTO { + +class FFmpegLocationClass { + Q_GADGET +public: + enum Value { + NotFound, + SetByArgument, + Custom, + System, + }; + Q_ENUM(Value) +private: + explicit FFmpegLocationClass(); +}; +typedef FFmpegLocationClass::Value FFmpegLocation; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_FFMPEGLOCATION_H diff --git a/core/include/JellyfinQt/DTO/filesystementryinfo.h b/core/include/JellyfinQt/DTO/filesystementryinfo.h new file mode 100644 index 0000000..ef25e1c --- /dev/null +++ b/core/include/JellyfinQt/DTO/filesystementryinfo.h @@ -0,0 +1,82 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_FILESYSTEMENTRYINFO_H +#define JELLYFIN_DTO_FILESYSTEMENTRYINFO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/filesystementrytype.h" + +namespace Jellyfin { +namespace DTO { + +class FileSystemEntryInfo : public QObject { + Q_OBJECT +public: + explicit FileSystemEntryInfo(QObject *parent = nullptr); + static FileSystemEntryInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + Q_PROPERTY(FileSystemEntryType type READ type WRITE setType NOTIFY typeChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + FileSystemEntryType type() const; + void setType(FileSystemEntryType newType); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void typeChanged(FileSystemEntryType newType); +protected: + QString m_name; + QString m_path; + FileSystemEntryType m_type; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_FILESYSTEMENTRYINFO_H diff --git a/core/include/JellyfinQt/DTO/filesystementrytype.h b/core/include/JellyfinQt/DTO/filesystementrytype.h new file mode 100644 index 0000000..bb68521 --- /dev/null +++ b/core/include/JellyfinQt/DTO/filesystementrytype.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_FILESYSTEMENTRYTYPE_H +#define JELLYFIN_DTO_FILESYSTEMENTRYTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class FileSystemEntryTypeClass { + Q_GADGET +public: + enum Value { + File, + Directory, + NetworkComputer, + NetworkShare, + }; + Q_ENUM(Value) +private: + explicit FileSystemEntryTypeClass(); +}; +typedef FileSystemEntryTypeClass::Value FileSystemEntryType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_FILESYSTEMENTRYTYPE_H diff --git a/core/include/JellyfinQt/DTO/fontfile.h b/core/include/JellyfinQt/DTO/fontfile.h new file mode 100644 index 0000000..5f4ef8c --- /dev/null +++ b/core/include/JellyfinQt/DTO/fontfile.h @@ -0,0 +1,93 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_FONTFILE_H +#define JELLYFIN_DTO_FONTFILE_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class FontFile : public QObject { + Q_OBJECT +public: + explicit FontFile(QObject *parent = nullptr); + static FontFile *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the size. + */ + Q_PROPERTY(qint64 size READ size WRITE setSize NOTIFY sizeChanged) + /** + * @brief Gets or sets the date created. + */ + Q_PROPERTY(QDateTime dateCreated READ dateCreated WRITE setDateCreated NOTIFY dateCreatedChanged) + /** + * @brief Gets or sets the date modified. + */ + Q_PROPERTY(QDateTime dateModified READ dateModified WRITE setDateModified NOTIFY dateModifiedChanged) + + QString name() const; + void setName(QString newName); + + qint64 size() const; + void setSize(qint64 newSize); + + QDateTime dateCreated() const; + void setDateCreated(QDateTime newDateCreated); + + QDateTime dateModified() const; + void setDateModified(QDateTime newDateModified); + +signals: + void nameChanged(QString newName); + void sizeChanged(qint64 newSize); + void dateCreatedChanged(QDateTime newDateCreated); + void dateModifiedChanged(QDateTime newDateModified); +protected: + QString m_name; + qint64 m_size; + QDateTime m_dateCreated; + QDateTime m_dateModified; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_FONTFILE_H diff --git a/core/include/JellyfinQt/DTO/forgotpasswordaction.h b/core/include/JellyfinQt/DTO/forgotpasswordaction.h new file mode 100644 index 0000000..85c1c21 --- /dev/null +++ b/core/include/JellyfinQt/DTO/forgotpasswordaction.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_FORGOTPASSWORDACTION_H +#define JELLYFIN_DTO_FORGOTPASSWORDACTION_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ForgotPasswordActionClass { + Q_GADGET +public: + enum Value { + ContactAdmin, + PinCode, + InNetworkRequired, + }; + Q_ENUM(Value) +private: + explicit ForgotPasswordActionClass(); +}; +typedef ForgotPasswordActionClass::Value ForgotPasswordAction; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_FORGOTPASSWORDACTION_H diff --git a/core/include/JellyfinQt/DTO/forgotpassworddto.h b/core/include/JellyfinQt/DTO/forgotpassworddto.h new file mode 100644 index 0000000..1cd5dc4 --- /dev/null +++ b/core/include/JellyfinQt/DTO/forgotpassworddto.h @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_FORGOTPASSWORDDTO_H +#define JELLYFIN_DTO_FORGOTPASSWORDDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ForgotPasswordDto : public QObject { + Q_OBJECT +public: + explicit ForgotPasswordDto(QObject *parent = nullptr); + static ForgotPasswordDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the entered username to have its password reset. + */ + Q_PROPERTY(QString enteredUsername READ enteredUsername WRITE setEnteredUsername NOTIFY enteredUsernameChanged) + + QString enteredUsername() const; + void setEnteredUsername(QString newEnteredUsername); + +signals: + void enteredUsernameChanged(QString newEnteredUsername); +protected: + QString m_enteredUsername; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_FORGOTPASSWORDDTO_H diff --git a/core/include/JellyfinQt/DTO/forgotpasswordresult.h b/core/include/JellyfinQt/DTO/forgotpasswordresult.h new file mode 100644 index 0000000..a4cd079 --- /dev/null +++ b/core/include/JellyfinQt/DTO/forgotpasswordresult.h @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_FORGOTPASSWORDRESULT_H +#define JELLYFIN_DTO_FORGOTPASSWORDRESULT_H + +#include +#include +#include +#include + +#include "JellyfinQt/DTO/forgotpasswordaction.h" + +namespace Jellyfin { +namespace DTO { + +class ForgotPasswordResult : public QObject { + Q_OBJECT +public: + explicit ForgotPasswordResult(QObject *parent = nullptr); + static ForgotPasswordResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(ForgotPasswordAction action READ action WRITE setAction NOTIFY actionChanged) + /** + * @brief Gets or sets the pin file. + */ + Q_PROPERTY(QString pinFile READ pinFile WRITE setPinFile NOTIFY pinFileChanged) + /** + * @brief Gets or sets the pin expiration date. + */ + Q_PROPERTY(QDateTime pinExpirationDate READ pinExpirationDate WRITE setPinExpirationDate NOTIFY pinExpirationDateChanged) + + ForgotPasswordAction action() const; + void setAction(ForgotPasswordAction newAction); + + QString pinFile() const; + void setPinFile(QString newPinFile); + + QDateTime pinExpirationDate() const; + void setPinExpirationDate(QDateTime newPinExpirationDate); + +signals: + void actionChanged(ForgotPasswordAction newAction); + void pinFileChanged(QString newPinFile); + void pinExpirationDateChanged(QDateTime newPinExpirationDate); +protected: + ForgotPasswordAction m_action; + QString m_pinFile; + QDateTime m_pinExpirationDate; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_FORGOTPASSWORDRESULT_H diff --git a/core/include/JellyfinQt/DTO/generalcommand.h b/core/include/JellyfinQt/DTO/generalcommand.h new file mode 100644 index 0000000..06aabaa --- /dev/null +++ b/core/include/JellyfinQt/DTO/generalcommand.h @@ -0,0 +1,76 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_GENERALCOMMAND_H +#define JELLYFIN_DTO_GENERALCOMMAND_H + +#include +#include +#include + +#include "JellyfinQt/DTO/generalcommandtype.h" + +namespace Jellyfin { +namespace DTO { + +class GeneralCommand : public QObject { + Q_OBJECT +public: + explicit GeneralCommand(QObject *parent = nullptr); + static GeneralCommand *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(GeneralCommandType name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString controllingUserId READ controllingUserId WRITE setControllingUserId NOTIFY controllingUserIdChanged) + Q_PROPERTY(QJsonObject arguments READ arguments WRITE setArguments NOTIFY argumentsChanged) + + GeneralCommandType name() const; + void setName(GeneralCommandType newName); + + QString controllingUserId() const; + void setControllingUserId(QString newControllingUserId); + + QJsonObject arguments() const; + void setArguments(QJsonObject newArguments); + +signals: + void nameChanged(GeneralCommandType newName); + void controllingUserIdChanged(QString newControllingUserId); + void argumentsChanged(QJsonObject newArguments); +protected: + GeneralCommandType m_name; + QString m_controllingUserId; + QJsonObject m_arguments; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_GENERALCOMMAND_H diff --git a/core/include/JellyfinQt/DTO/generalcommandtype.h b/core/include/JellyfinQt/DTO/generalcommandtype.h new file mode 100644 index 0000000..f27bb3a --- /dev/null +++ b/core/include/JellyfinQt/DTO/generalcommandtype.h @@ -0,0 +1,93 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_GENERALCOMMANDTYPE_H +#define JELLYFIN_DTO_GENERALCOMMANDTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class GeneralCommandTypeClass { + Q_GADGET +public: + enum Value { + MoveUp, + MoveDown, + MoveLeft, + MoveRight, + PageUp, + PageDown, + PreviousLetter, + NextLetter, + ToggleOsd, + ToggleContextMenu, + Select, + Back, + TakeScreenshot, + SendKey, + SendString, + GoHome, + GoToSettings, + VolumeUp, + VolumeDown, + Mute, + Unmute, + ToggleMute, + SetVolume, + SetAudioStreamIndex, + SetSubtitleStreamIndex, + ToggleFullscreen, + DisplayContent, + GoToSearch, + DisplayMessage, + SetRepeatMode, + ChannelUp, + ChannelDown, + Guide, + ToggleStats, + PlayMediaSource, + PlayTrailers, + SetShuffleQueue, + PlayState, + PlayNext, + ToggleOsdMenu, + Play, + }; + Q_ENUM(Value) +private: + explicit GeneralCommandTypeClass(); +}; +typedef GeneralCommandTypeClass::Value GeneralCommandType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_GENERALCOMMANDTYPE_H diff --git a/core/include/JellyfinQt/DTO/getprogramsdto.h b/core/include/JellyfinQt/DTO/getprogramsdto.h new file mode 100644 index 0000000..defd4ff --- /dev/null +++ b/core/include/JellyfinQt/DTO/getprogramsdto.h @@ -0,0 +1,326 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_GETPROGRAMSDTO_H +#define JELLYFIN_DTO_GETPROGRAMSDTO_H + +#include +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/imagetype.h" +#include "JellyfinQt/DTO/itemfields.h" + +namespace Jellyfin { +namespace DTO { + +class GetProgramsDto : public QObject { + Q_OBJECT +public: + explicit GetProgramsDto(QObject *parent = nullptr); + static GetProgramsDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the channels to return guide information for. + */ + Q_PROPERTY(QStringList channelIds READ channelIds WRITE setChannelIds NOTIFY channelIdsChanged) + /** + * @brief Gets or sets optional. Filter by user id. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + /** + * @brief Gets or sets the minimum premiere start date. +Optional. + */ + Q_PROPERTY(QDateTime minStartDate READ minStartDate WRITE setMinStartDate NOTIFY minStartDateChanged) + /** + * @brief Gets or sets filter by programs that have completed airing, or not. +Optional. + */ + Q_PROPERTY(bool hasAired READ hasAired WRITE setHasAired NOTIFY hasAiredChanged) + /** + * @brief Gets or sets filter by programs that are currently airing, or not. +Optional. + */ + Q_PROPERTY(bool isAiring READ isAiring WRITE setIsAiring NOTIFY isAiringChanged) + /** + * @brief Gets or sets the maximum premiere start date. +Optional. + */ + Q_PROPERTY(QDateTime maxStartDate READ maxStartDate WRITE setMaxStartDate NOTIFY maxStartDateChanged) + /** + * @brief Gets or sets the minimum premiere end date. +Optional. + */ + Q_PROPERTY(QDateTime minEndDate READ minEndDate WRITE setMinEndDate NOTIFY minEndDateChanged) + /** + * @brief Gets or sets the maximum premiere end date. +Optional. + */ + Q_PROPERTY(QDateTime maxEndDate READ maxEndDate WRITE setMaxEndDate NOTIFY maxEndDateChanged) + /** + * @brief Gets or sets filter for movies. +Optional. + */ + Q_PROPERTY(bool isMovie READ isMovie WRITE setIsMovie NOTIFY isMovieChanged) + /** + * @brief Gets or sets filter for series. +Optional. + */ + Q_PROPERTY(bool isSeries READ isSeries WRITE setIsSeries NOTIFY isSeriesChanged) + /** + * @brief Gets or sets filter for news. +Optional. + */ + Q_PROPERTY(bool isNews READ isNews WRITE setIsNews NOTIFY isNewsChanged) + /** + * @brief Gets or sets filter for kids. +Optional. + */ + Q_PROPERTY(bool isKids READ isKids WRITE setIsKids NOTIFY isKidsChanged) + /** + * @brief Gets or sets filter for sports. +Optional. + */ + Q_PROPERTY(bool isSports READ isSports WRITE setIsSports NOTIFY isSportsChanged) + /** + * @brief Gets or sets the record index to start at. All items with a lower index will be dropped from the results. +Optional. + */ + Q_PROPERTY(qint32 startIndex READ startIndex WRITE setStartIndex NOTIFY startIndexChanged) + /** + * @brief Gets or sets the maximum number of records to return. +Optional. + */ + Q_PROPERTY(qint32 limit READ limit WRITE setLimit NOTIFY limitChanged) + /** + * @brief Gets or sets specify one or more sort orders, comma delimited. Options: Name, StartDate. +Optional. + */ + Q_PROPERTY(QString sortBy READ sortBy WRITE setSortBy NOTIFY sortByChanged) + /** + * @brief Gets or sets sort Order - Ascending,Descending. + */ + Q_PROPERTY(QString sortOrder READ sortOrder WRITE setSortOrder NOTIFY sortOrderChanged) + /** + * @brief Gets or sets the genres to return guide information for. + */ + Q_PROPERTY(QStringList genres READ genres WRITE setGenres NOTIFY genresChanged) + /** + * @brief Gets or sets the genre ids to return guide information for. + */ + Q_PROPERTY(QStringList genreIds READ genreIds WRITE setGenreIds NOTIFY genreIdsChanged) + /** + * @brief Gets or sets include image information in output. +Optional. + */ + Q_PROPERTY(bool enableImages READ enableImages WRITE setEnableImages NOTIFY enableImagesChanged) + /** + * @brief Gets or sets a value indicating whether retrieve total record count. + */ + Q_PROPERTY(bool enableTotalRecordCount READ enableTotalRecordCount WRITE setEnableTotalRecordCount NOTIFY enableTotalRecordCountChanged) + /** + * @brief Gets or sets the max number of images to return, per image type. +Optional. + */ + Q_PROPERTY(qint32 imageTypeLimit READ imageTypeLimit WRITE setImageTypeLimit NOTIFY imageTypeLimitChanged) + /** + * @brief Gets or sets the image types to include in the output. +Optional. + */ + Q_PROPERTY(QList enableImageTypes READ enableImageTypes WRITE setEnableImageTypes NOTIFY enableImageTypesChanged) + /** + * @brief Gets or sets include user data. +Optional. + */ + Q_PROPERTY(bool enableUserData READ enableUserData WRITE setEnableUserData NOTIFY enableUserDataChanged) + /** + * @brief Gets or sets filter by series timer id. +Optional. + */ + Q_PROPERTY(QString seriesTimerId READ seriesTimerId WRITE setSeriesTimerId NOTIFY seriesTimerIdChanged) + /** + * @brief Gets or sets filter by library series id. +Optional. + */ + Q_PROPERTY(QString librarySeriesId READ librarySeriesId WRITE setLibrarySeriesId NOTIFY librarySeriesIdChanged) + /** + * @brief Gets or sets specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines. +Optional. + */ + Q_PROPERTY(QList fields READ fields WRITE setFields NOTIFY fieldsChanged) + + QStringList channelIds() const; + void setChannelIds(QStringList newChannelIds); + + QString userId() const; + void setUserId(QString newUserId); + + QDateTime minStartDate() const; + void setMinStartDate(QDateTime newMinStartDate); + + bool hasAired() const; + void setHasAired(bool newHasAired); + + bool isAiring() const; + void setIsAiring(bool newIsAiring); + + QDateTime maxStartDate() const; + void setMaxStartDate(QDateTime newMaxStartDate); + + QDateTime minEndDate() const; + void setMinEndDate(QDateTime newMinEndDate); + + QDateTime maxEndDate() const; + void setMaxEndDate(QDateTime newMaxEndDate); + + bool isMovie() const; + void setIsMovie(bool newIsMovie); + + bool isSeries() const; + void setIsSeries(bool newIsSeries); + + bool isNews() const; + void setIsNews(bool newIsNews); + + bool isKids() const; + void setIsKids(bool newIsKids); + + bool isSports() const; + void setIsSports(bool newIsSports); + + qint32 startIndex() const; + void setStartIndex(qint32 newStartIndex); + + qint32 limit() const; + void setLimit(qint32 newLimit); + + QString sortBy() const; + void setSortBy(QString newSortBy); + + QString sortOrder() const; + void setSortOrder(QString newSortOrder); + + QStringList genres() const; + void setGenres(QStringList newGenres); + + QStringList genreIds() const; + void setGenreIds(QStringList newGenreIds); + + bool enableImages() const; + void setEnableImages(bool newEnableImages); + + bool enableTotalRecordCount() const; + void setEnableTotalRecordCount(bool newEnableTotalRecordCount); + + qint32 imageTypeLimit() const; + void setImageTypeLimit(qint32 newImageTypeLimit); + + QList enableImageTypes() const; + void setEnableImageTypes(QList newEnableImageTypes); + + bool enableUserData() const; + void setEnableUserData(bool newEnableUserData); + + QString seriesTimerId() const; + void setSeriesTimerId(QString newSeriesTimerId); + + QString librarySeriesId() const; + void setLibrarySeriesId(QString newLibrarySeriesId); + + QList fields() const; + void setFields(QList newFields); + +signals: + void channelIdsChanged(QStringList newChannelIds); + void userIdChanged(QString newUserId); + void minStartDateChanged(QDateTime newMinStartDate); + void hasAiredChanged(bool newHasAired); + void isAiringChanged(bool newIsAiring); + void maxStartDateChanged(QDateTime newMaxStartDate); + void minEndDateChanged(QDateTime newMinEndDate); + void maxEndDateChanged(QDateTime newMaxEndDate); + void isMovieChanged(bool newIsMovie); + void isSeriesChanged(bool newIsSeries); + void isNewsChanged(bool newIsNews); + void isKidsChanged(bool newIsKids); + void isSportsChanged(bool newIsSports); + void startIndexChanged(qint32 newStartIndex); + void limitChanged(qint32 newLimit); + void sortByChanged(QString newSortBy); + void sortOrderChanged(QString newSortOrder); + void genresChanged(QStringList newGenres); + void genreIdsChanged(QStringList newGenreIds); + void enableImagesChanged(bool newEnableImages); + void enableTotalRecordCountChanged(bool newEnableTotalRecordCount); + void imageTypeLimitChanged(qint32 newImageTypeLimit); + void enableImageTypesChanged(QList newEnableImageTypes); + void enableUserDataChanged(bool newEnableUserData); + void seriesTimerIdChanged(QString newSeriesTimerId); + void librarySeriesIdChanged(QString newLibrarySeriesId); + void fieldsChanged(QList newFields); +protected: + QStringList m_channelIds; + QString m_userId; + QDateTime m_minStartDate; + bool m_hasAired; + bool m_isAiring; + QDateTime m_maxStartDate; + QDateTime m_minEndDate; + QDateTime m_maxEndDate; + bool m_isMovie; + bool m_isSeries; + bool m_isNews; + bool m_isKids; + bool m_isSports; + qint32 m_startIndex; + qint32 m_limit; + QString m_sortBy; + QString m_sortOrder; + QStringList m_genres; + QStringList m_genreIds; + bool m_enableImages; + bool m_enableTotalRecordCount; + qint32 m_imageTypeLimit; + QList m_enableImageTypes; + bool m_enableUserData; + QString m_seriesTimerId; + QString m_librarySeriesId; + QList m_fields; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_GETPROGRAMSDTO_H diff --git a/core/include/JellyfinQt/DTO/groupinfodto.h b/core/include/JellyfinQt/DTO/groupinfodto.h new file mode 100644 index 0000000..0c35099 --- /dev/null +++ b/core/include/JellyfinQt/DTO/groupinfodto.h @@ -0,0 +1,103 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_GROUPINFODTO_H +#define JELLYFIN_DTO_GROUPINFODTO_H + +#include +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/groupstatetype.h" + +namespace Jellyfin { +namespace DTO { + +class GroupInfoDto : public QObject { + Q_OBJECT +public: + explicit GroupInfoDto(QObject *parent = nullptr); + static GroupInfoDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets the group identifier. + */ + Q_PROPERTY(QString groupId READ groupId WRITE setGroupId NOTIFY groupIdChanged) + /** + * @brief Gets the group name. + */ + Q_PROPERTY(QString groupName READ groupName WRITE setGroupName NOTIFY groupNameChanged) + Q_PROPERTY(GroupStateType state READ state WRITE setState NOTIFY stateChanged) + /** + * @brief Gets the participants. + */ + Q_PROPERTY(QStringList participants READ participants WRITE setParticipants NOTIFY participantsChanged) + /** + * @brief Gets the date when this DTO has been created. + */ + Q_PROPERTY(QDateTime lastUpdatedAt READ lastUpdatedAt WRITE setLastUpdatedAt NOTIFY lastUpdatedAtChanged) + + QString groupId() const; + void setGroupId(QString newGroupId); + + QString groupName() const; + void setGroupName(QString newGroupName); + + GroupStateType state() const; + void setState(GroupStateType newState); + + QStringList participants() const; + void setParticipants(QStringList newParticipants); + + QDateTime lastUpdatedAt() const; + void setLastUpdatedAt(QDateTime newLastUpdatedAt); + +signals: + void groupIdChanged(QString newGroupId); + void groupNameChanged(QString newGroupName); + void stateChanged(GroupStateType newState); + void participantsChanged(QStringList newParticipants); + void lastUpdatedAtChanged(QDateTime newLastUpdatedAt); +protected: + QString m_groupId; + QString m_groupName; + GroupStateType m_state; + QStringList m_participants; + QDateTime m_lastUpdatedAt; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_GROUPINFODTO_H diff --git a/core/include/JellyfinQt/DTO/groupqueuemode.h b/core/include/JellyfinQt/DTO/groupqueuemode.h new file mode 100644 index 0000000..b4c3ff7 --- /dev/null +++ b/core/include/JellyfinQt/DTO/groupqueuemode.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_GROUPQUEUEMODE_H +#define JELLYFIN_DTO_GROUPQUEUEMODE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class GroupQueueModeClass { + Q_GADGET +public: + enum Value { + Queue, + QueueNext, + }; + Q_ENUM(Value) +private: + explicit GroupQueueModeClass(); +}; +typedef GroupQueueModeClass::Value GroupQueueMode; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_GROUPQUEUEMODE_H diff --git a/core/include/JellyfinQt/DTO/grouprepeatmode.h b/core/include/JellyfinQt/DTO/grouprepeatmode.h new file mode 100644 index 0000000..6ca08c5 --- /dev/null +++ b/core/include/JellyfinQt/DTO/grouprepeatmode.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_GROUPREPEATMODE_H +#define JELLYFIN_DTO_GROUPREPEATMODE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class GroupRepeatModeClass { + Q_GADGET +public: + enum Value { + RepeatOne, + RepeatAll, + RepeatNone, + }; + Q_ENUM(Value) +private: + explicit GroupRepeatModeClass(); +}; +typedef GroupRepeatModeClass::Value GroupRepeatMode; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_GROUPREPEATMODE_H diff --git a/core/include/JellyfinQt/DTO/groupshufflemode.h b/core/include/JellyfinQt/DTO/groupshufflemode.h new file mode 100644 index 0000000..e5f72d4 --- /dev/null +++ b/core/include/JellyfinQt/DTO/groupshufflemode.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_GROUPSHUFFLEMODE_H +#define JELLYFIN_DTO_GROUPSHUFFLEMODE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class GroupShuffleModeClass { + Q_GADGET +public: + enum Value { + Sorted, + Shuffle, + }; + Q_ENUM(Value) +private: + explicit GroupShuffleModeClass(); +}; +typedef GroupShuffleModeClass::Value GroupShuffleMode; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_GROUPSHUFFLEMODE_H diff --git a/core/include/JellyfinQt/DTO/groupstatetype.h b/core/include/JellyfinQt/DTO/groupstatetype.h new file mode 100644 index 0000000..4fbea5c --- /dev/null +++ b/core/include/JellyfinQt/DTO/groupstatetype.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_GROUPSTATETYPE_H +#define JELLYFIN_DTO_GROUPSTATETYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class GroupStateTypeClass { + Q_GADGET +public: + enum Value { + Idle, + Waiting, + Paused, + Playing, + }; + Q_ENUM(Value) +private: + explicit GroupStateTypeClass(); +}; +typedef GroupStateTypeClass::Value GroupStateType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_GROUPSTATETYPE_H diff --git a/core/include/JellyfinQt/DTO/groupupdatetype.h b/core/include/JellyfinQt/DTO/groupupdatetype.h new file mode 100644 index 0000000..b4bb281 --- /dev/null +++ b/core/include/JellyfinQt/DTO/groupupdatetype.h @@ -0,0 +1,63 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_GROUPUPDATETYPE_H +#define JELLYFIN_DTO_GROUPUPDATETYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class GroupUpdateTypeClass { + Q_GADGET +public: + enum Value { + UserJoined, + UserLeft, + GroupJoined, + GroupLeft, + StateUpdate, + PlayQueue, + NotInGroup, + GroupDoesNotExist, + CreateGroupDenied, + JoinGroupDenied, + LibraryAccessDenied, + }; + Q_ENUM(Value) +private: + explicit GroupUpdateTypeClass(); +}; +typedef GroupUpdateTypeClass::Value GroupUpdateType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_GROUPUPDATETYPE_H diff --git a/core/include/JellyfinQt/DTO/guideinfo.h b/core/include/JellyfinQt/DTO/guideinfo.h new file mode 100644 index 0000000..06f341f --- /dev/null +++ b/core/include/JellyfinQt/DTO/guideinfo.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_GUIDEINFO_H +#define JELLYFIN_DTO_GUIDEINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class GuideInfo : public QObject { + Q_OBJECT +public: + explicit GuideInfo(QObject *parent = nullptr); + static GuideInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the start date. + */ + Q_PROPERTY(QDateTime startDate READ startDate WRITE setStartDate NOTIFY startDateChanged) + /** + * @brief Gets or sets the end date. + */ + Q_PROPERTY(QDateTime endDate READ endDate WRITE setEndDate NOTIFY endDateChanged) + + QDateTime startDate() const; + void setStartDate(QDateTime newStartDate); + + QDateTime endDate() const; + void setEndDate(QDateTime newEndDate); + +signals: + void startDateChanged(QDateTime newStartDate); + void endDateChanged(QDateTime newEndDate); +protected: + QDateTime m_startDate; + QDateTime m_endDate; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_GUIDEINFO_H diff --git a/core/include/JellyfinQt/DTO/headermatchtype.h b/core/include/JellyfinQt/DTO/headermatchtype.h new file mode 100644 index 0000000..1d11e29 --- /dev/null +++ b/core/include/JellyfinQt/DTO/headermatchtype.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_HEADERMATCHTYPE_H +#define JELLYFIN_DTO_HEADERMATCHTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class HeaderMatchTypeClass { + Q_GADGET +public: + enum Value { + Equals, + Regex, + Substring, + }; + Q_ENUM(Value) +private: + explicit HeaderMatchTypeClass(); +}; +typedef HeaderMatchTypeClass::Value HeaderMatchType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_HEADERMATCHTYPE_H diff --git a/core/include/JellyfinQt/DTO/httpheaderinfo.h b/core/include/JellyfinQt/DTO/httpheaderinfo.h new file mode 100644 index 0000000..bc9f3cb --- /dev/null +++ b/core/include/JellyfinQt/DTO/httpheaderinfo.h @@ -0,0 +1,76 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_HTTPHEADERINFO_H +#define JELLYFIN_DTO_HTTPHEADERINFO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/headermatchtype.h" + +namespace Jellyfin { +namespace DTO { + +class HttpHeaderInfo : public QObject { + Q_OBJECT +public: + explicit HttpHeaderInfo(QObject *parent = nullptr); + static HttpHeaderInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString value READ value WRITE setValue NOTIFY valueChanged) + Q_PROPERTY(HeaderMatchType match READ match WRITE setMatch NOTIFY matchChanged) + + QString name() const; + void setName(QString newName); + + QString value() const; + void setValue(QString newValue); + + HeaderMatchType match() const; + void setMatch(HeaderMatchType newMatch); + +signals: + void nameChanged(QString newName); + void valueChanged(QString newValue); + void matchChanged(HeaderMatchType newMatch); +protected: + QString m_name; + QString m_value; + HeaderMatchType m_match; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_HTTPHEADERINFO_H diff --git a/core/include/JellyfinQt/DTO/ignorewaitrequestdto.h b/core/include/JellyfinQt/DTO/ignorewaitrequestdto.h new file mode 100644 index 0000000..3cf1937 --- /dev/null +++ b/core/include/JellyfinQt/DTO/ignorewaitrequestdto.h @@ -0,0 +1,64 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_IGNOREWAITREQUESTDTO_H +#define JELLYFIN_DTO_IGNOREWAITREQUESTDTO_H + +#include +#include + +namespace Jellyfin { +namespace DTO { + +class IgnoreWaitRequestDto : public QObject { + Q_OBJECT +public: + explicit IgnoreWaitRequestDto(QObject *parent = nullptr); + static IgnoreWaitRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets a value indicating whether the client should be ignored. + */ + Q_PROPERTY(bool ignoreWait READ ignoreWait WRITE setIgnoreWait NOTIFY ignoreWaitChanged) + + bool ignoreWait() const; + void setIgnoreWait(bool newIgnoreWait); + +signals: + void ignoreWaitChanged(bool newIgnoreWait); +protected: + bool m_ignoreWait; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_IGNOREWAITREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/imagebynameinfo.h b/core/include/JellyfinQt/DTO/imagebynameinfo.h new file mode 100644 index 0000000..2d3c859 --- /dev/null +++ b/core/include/JellyfinQt/DTO/imagebynameinfo.h @@ -0,0 +1,101 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_IMAGEBYNAMEINFO_H +#define JELLYFIN_DTO_IMAGEBYNAMEINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ImageByNameInfo : public QObject { + Q_OBJECT +public: + explicit ImageByNameInfo(QObject *parent = nullptr); + static ImageByNameInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the theme. + */ + Q_PROPERTY(QString theme READ theme WRITE setTheme NOTIFY themeChanged) + /** + * @brief Gets or sets the context. + */ + Q_PROPERTY(QString context READ context WRITE setContext NOTIFY contextChanged) + /** + * @brief Gets or sets the length of the file. + */ + Q_PROPERTY(qint64 fileLength READ fileLength WRITE setFileLength NOTIFY fileLengthChanged) + /** + * @brief Gets or sets the format. + */ + Q_PROPERTY(QString format READ format WRITE setFormat NOTIFY formatChanged) + + QString name() const; + void setName(QString newName); + + QString theme() const; + void setTheme(QString newTheme); + + QString context() const; + void setContext(QString newContext); + + qint64 fileLength() const; + void setFileLength(qint64 newFileLength); + + QString format() const; + void setFormat(QString newFormat); + +signals: + void nameChanged(QString newName); + void themeChanged(QString newTheme); + void contextChanged(QString newContext); + void fileLengthChanged(qint64 newFileLength); + void formatChanged(QString newFormat); +protected: + QString m_name; + QString m_theme; + QString m_context; + qint64 m_fileLength; + QString m_format; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_IMAGEBYNAMEINFO_H diff --git a/core/include/JellyfinQt/DTO/imageformat.h b/core/include/JellyfinQt/DTO/imageformat.h new file mode 100644 index 0000000..e637715 --- /dev/null +++ b/core/include/JellyfinQt/DTO/imageformat.h @@ -0,0 +1,57 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_IMAGEFORMAT_H +#define JELLYFIN_DTO_IMAGEFORMAT_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ImageFormatClass { + Q_GADGET +public: + enum Value { + Bmp, + Gif, + Jpg, + Png, + Webp, + }; + Q_ENUM(Value) +private: + explicit ImageFormatClass(); +}; +typedef ImageFormatClass::Value ImageFormat; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_IMAGEFORMAT_H diff --git a/core/include/JellyfinQt/DTO/imageinfo.h b/core/include/JellyfinQt/DTO/imageinfo.h new file mode 100644 index 0000000..34da077 --- /dev/null +++ b/core/include/JellyfinQt/DTO/imageinfo.h @@ -0,0 +1,127 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_IMAGEINFO_H +#define JELLYFIN_DTO_IMAGEINFO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/imagetype.h" + +namespace Jellyfin { +namespace DTO { + +class ImageInfo : public QObject { + Q_OBJECT +public: + explicit ImageInfo(QObject *parent = nullptr); + static ImageInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(ImageType imageType READ imageType WRITE setImageType NOTIFY imageTypeChanged) + /** + * @brief Gets or sets the index of the image. + */ + Q_PROPERTY(qint32 imageIndex READ imageIndex WRITE setImageIndex NOTIFY imageIndexChanged) + /** + * @brief Gets or sets the image tag. + */ + Q_PROPERTY(QString imageTag READ imageTag WRITE setImageTag NOTIFY imageTagChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the blurhash. + */ + Q_PROPERTY(QString blurHash READ blurHash WRITE setBlurHash NOTIFY blurHashChanged) + /** + * @brief Gets or sets the height. + */ + Q_PROPERTY(qint32 height READ height WRITE setHeight NOTIFY heightChanged) + /** + * @brief Gets or sets the width. + */ + Q_PROPERTY(qint32 width READ width WRITE setWidth NOTIFY widthChanged) + /** + * @brief Gets or sets the size. + */ + Q_PROPERTY(qint64 size READ size WRITE setSize NOTIFY sizeChanged) + + ImageType imageType() const; + void setImageType(ImageType newImageType); + + qint32 imageIndex() const; + void setImageIndex(qint32 newImageIndex); + + QString imageTag() const; + void setImageTag(QString newImageTag); + + QString path() const; + void setPath(QString newPath); + + QString blurHash() const; + void setBlurHash(QString newBlurHash); + + qint32 height() const; + void setHeight(qint32 newHeight); + + qint32 width() const; + void setWidth(qint32 newWidth); + + qint64 size() const; + void setSize(qint64 newSize); + +signals: + void imageTypeChanged(ImageType newImageType); + void imageIndexChanged(qint32 newImageIndex); + void imageTagChanged(QString newImageTag); + void pathChanged(QString newPath); + void blurHashChanged(QString newBlurHash); + void heightChanged(qint32 newHeight); + void widthChanged(qint32 newWidth); + void sizeChanged(qint64 newSize); +protected: + ImageType m_imageType; + qint32 m_imageIndex; + QString m_imageTag; + QString m_path; + QString m_blurHash; + qint32 m_height; + qint32 m_width; + qint64 m_size; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_IMAGEINFO_H diff --git a/core/include/JellyfinQt/DTO/imageoption.h b/core/include/JellyfinQt/DTO/imageoption.h new file mode 100644 index 0000000..26effec --- /dev/null +++ b/core/include/JellyfinQt/DTO/imageoption.h @@ -0,0 +1,81 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_IMAGEOPTION_H +#define JELLYFIN_DTO_IMAGEOPTION_H + +#include +#include + +#include "JellyfinQt/DTO/imagetype.h" + +namespace Jellyfin { +namespace DTO { + +class ImageOption : public QObject { + Q_OBJECT +public: + explicit ImageOption(QObject *parent = nullptr); + static ImageOption *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(ImageType type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets or sets the limit. + */ + Q_PROPERTY(qint32 limit READ limit WRITE setLimit NOTIFY limitChanged) + /** + * @brief Gets or sets the minimum width. + */ + Q_PROPERTY(qint32 minWidth READ minWidth WRITE setMinWidth NOTIFY minWidthChanged) + + ImageType type() const; + void setType(ImageType newType); + + qint32 limit() const; + void setLimit(qint32 newLimit); + + qint32 minWidth() const; + void setMinWidth(qint32 newMinWidth); + +signals: + void typeChanged(ImageType newType); + void limitChanged(qint32 newLimit); + void minWidthChanged(qint32 newMinWidth); +protected: + ImageType m_type; + qint32 m_limit; + qint32 m_minWidth; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_IMAGEOPTION_H diff --git a/core/include/JellyfinQt/DTO/imageorientation.h b/core/include/JellyfinQt/DTO/imageorientation.h new file mode 100644 index 0000000..2532777 --- /dev/null +++ b/core/include/JellyfinQt/DTO/imageorientation.h @@ -0,0 +1,60 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_IMAGEORIENTATION_H +#define JELLYFIN_DTO_IMAGEORIENTATION_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ImageOrientationClass { + Q_GADGET +public: + enum Value { + TopLeft, + TopRight, + BottomRight, + BottomLeft, + LeftTop, + RightTop, + RightBottom, + LeftBottom, + }; + Q_ENUM(Value) +private: + explicit ImageOrientationClass(); +}; +typedef ImageOrientationClass::Value ImageOrientation; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_IMAGEORIENTATION_H diff --git a/core/include/JellyfinQt/DTO/imageproviderinfo.h b/core/include/JellyfinQt/DTO/imageproviderinfo.h new file mode 100644 index 0000000..3a97ad6 --- /dev/null +++ b/core/include/JellyfinQt/DTO/imageproviderinfo.h @@ -0,0 +1,78 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_IMAGEPROVIDERINFO_H +#define JELLYFIN_DTO_IMAGEPROVIDERINFO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/imagetype.h" + +namespace Jellyfin { +namespace DTO { + +class ImageProviderInfo : public QObject { + Q_OBJECT +public: + explicit ImageProviderInfo(QObject *parent = nullptr); + static ImageProviderInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets the supported image types. + */ + Q_PROPERTY(QList supportedImages READ supportedImages WRITE setSupportedImages NOTIFY supportedImagesChanged) + + QString name() const; + void setName(QString newName); + + QList supportedImages() const; + void setSupportedImages(QList newSupportedImages); + +signals: + void nameChanged(QString newName); + void supportedImagesChanged(QList newSupportedImages); +protected: + QString m_name; + QList m_supportedImages; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_IMAGEPROVIDERINFO_H diff --git a/core/include/JellyfinQt/DTO/imagesavingconvention.h b/core/include/JellyfinQt/DTO/imagesavingconvention.h new file mode 100644 index 0000000..40121f2 --- /dev/null +++ b/core/include/JellyfinQt/DTO/imagesavingconvention.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_IMAGESAVINGCONVENTION_H +#define JELLYFIN_DTO_IMAGESAVINGCONVENTION_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ImageSavingConventionClass { + Q_GADGET +public: + enum Value { + Legacy, + Compatible, + }; + Q_ENUM(Value) +private: + explicit ImageSavingConventionClass(); +}; +typedef ImageSavingConventionClass::Value ImageSavingConvention; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_IMAGESAVINGCONVENTION_H diff --git a/core/include/JellyfinQt/DTO/imagetype.h b/core/include/JellyfinQt/DTO/imagetype.h new file mode 100644 index 0000000..992d995 --- /dev/null +++ b/core/include/JellyfinQt/DTO/imagetype.h @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_IMAGETYPE_H +#define JELLYFIN_DTO_IMAGETYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ImageTypeClass { + Q_GADGET +public: + enum Value { + Primary, + Art, + Backdrop, + Banner, + Logo, + Thumb, + Disc, + Box, + Screenshot, + Menu, + Chapter, + BoxRear, + Profile, + }; + Q_ENUM(Value) +private: + explicit ImageTypeClass(); +}; +typedef ImageTypeClass::Value ImageType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_IMAGETYPE_H diff --git a/core/include/JellyfinQt/DTO/installationinfo.h b/core/include/JellyfinQt/DTO/installationinfo.h new file mode 100644 index 0000000..1e1e353 --- /dev/null +++ b/core/include/JellyfinQt/DTO/installationinfo.h @@ -0,0 +1,109 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_INSTALLATIONINFO_H +#define JELLYFIN_DTO_INSTALLATIONINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class Version; + +class InstallationInfo : public QObject { + Q_OBJECT +public: + explicit InstallationInfo(QObject *parent = nullptr); + static InstallationInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the Id. + */ + Q_PROPERTY(QString guid READ guid WRITE setGuid NOTIFY guidChanged) + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(Version * version READ version WRITE setVersion NOTIFY versionChanged) + /** + * @brief Gets or sets the changelog for this version. + */ + Q_PROPERTY(QString changelog READ changelog WRITE setChangelog NOTIFY changelogChanged) + /** + * @brief Gets or sets the source URL. + */ + Q_PROPERTY(QString sourceUrl READ sourceUrl WRITE setSourceUrl NOTIFY sourceUrlChanged) + /** + * @brief Gets or sets a checksum for the binary. + */ + Q_PROPERTY(QString checksum READ checksum WRITE setChecksum NOTIFY checksumChanged) + + QString guid() const; + void setGuid(QString newGuid); + + QString name() const; + void setName(QString newName); + + Version * version() const; + void setVersion(Version * newVersion); + + QString changelog() const; + void setChangelog(QString newChangelog); + + QString sourceUrl() const; + void setSourceUrl(QString newSourceUrl); + + QString checksum() const; + void setChecksum(QString newChecksum); + +signals: + void guidChanged(QString newGuid); + void nameChanged(QString newName); + void versionChanged(Version * newVersion); + void changelogChanged(QString newChangelog); + void sourceUrlChanged(QString newSourceUrl); + void checksumChanged(QString newChecksum); +protected: + QString m_guid; + QString m_name; + Version * m_version = nullptr; + QString m_changelog; + QString m_sourceUrl; + QString m_checksum; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_INSTALLATIONINFO_H diff --git a/core/include/JellyfinQt/DTO/iplugin.h b/core/include/JellyfinQt/DTO/iplugin.h new file mode 100644 index 0000000..4d96075 --- /dev/null +++ b/core/include/JellyfinQt/DTO/iplugin.h @@ -0,0 +1,118 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_IPLUGIN_H +#define JELLYFIN_DTO_IPLUGIN_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class Version; + +class IPlugin : public QObject { + Q_OBJECT +public: + explicit IPlugin(QObject *parent = nullptr); + static IPlugin *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets the name of the plugin. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets the Description. + */ + Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY descriptionChanged) + /** + * @brief Gets the unique id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(Version * version READ version WRITE setVersion NOTIFY versionChanged) + /** + * @brief Gets the path to the assembly file. + */ + Q_PROPERTY(QString assemblyFilePath READ assemblyFilePath WRITE setAssemblyFilePath NOTIFY assemblyFilePathChanged) + /** + * @brief Gets a value indicating whether the plugin can be uninstalled. + */ + Q_PROPERTY(bool canUninstall READ canUninstall WRITE setCanUninstall NOTIFY canUninstallChanged) + /** + * @brief Gets the full path to the data folder, where the plugin can store any miscellaneous files needed. + */ + Q_PROPERTY(QString dataFolderPath READ dataFolderPath WRITE setDataFolderPath NOTIFY dataFolderPathChanged) + + QString name() const; + void setName(QString newName); + + QString description() const; + void setDescription(QString newDescription); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + Version * version() const; + void setVersion(Version * newVersion); + + QString assemblyFilePath() const; + void setAssemblyFilePath(QString newAssemblyFilePath); + + bool canUninstall() const; + void setCanUninstall(bool newCanUninstall); + + QString dataFolderPath() const; + void setDataFolderPath(QString newDataFolderPath); + +signals: + void nameChanged(QString newName); + void descriptionChanged(QString newDescription); + void jellyfinIdChanged(QString newJellyfinId); + void versionChanged(Version * newVersion); + void assemblyFilePathChanged(QString newAssemblyFilePath); + void canUninstallChanged(bool newCanUninstall); + void dataFolderPathChanged(QString newDataFolderPath); +protected: + QString m_name; + QString m_description; + QString m_jellyfinId; + Version * m_version = nullptr; + QString m_assemblyFilePath; + bool m_canUninstall; + QString m_dataFolderPath; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_IPLUGIN_H diff --git a/core/include/JellyfinQt/DTO/isotype.h b/core/include/JellyfinQt/DTO/isotype.h new file mode 100644 index 0000000..ea5f8e8 --- /dev/null +++ b/core/include/JellyfinQt/DTO/isotype.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ISOTYPE_H +#define JELLYFIN_DTO_ISOTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class IsoTypeClass { + Q_GADGET +public: + enum Value { + Dvd, + BluRay, + }; + Q_ENUM(Value) +private: + explicit IsoTypeClass(); +}; +typedef IsoTypeClass::Value IsoType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ISOTYPE_H diff --git a/core/include/JellyfinQt/DTO/item.h b/core/include/JellyfinQt/DTO/item.h new file mode 100644 index 0000000..b9ddd93 --- /dev/null +++ b/core/include/JellyfinQt/DTO/item.h @@ -0,0 +1,43 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ITEM_H +#define JELLYFIN_DTO_ITEM_H + +#include "JellyfinQt/DTO/baseitemdto.h" + +namespace Jellyfin { +namespace DTO { + +using Item = BaseItemDto; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ITEM_H diff --git a/core/include/JellyfinQt/DTO/itemcounts.h b/core/include/JellyfinQt/DTO/itemcounts.h new file mode 100644 index 0000000..2a23846 --- /dev/null +++ b/core/include/JellyfinQt/DTO/itemcounts.h @@ -0,0 +1,163 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ITEMCOUNTS_H +#define JELLYFIN_DTO_ITEMCOUNTS_H + +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ItemCounts : public QObject { + Q_OBJECT +public: + explicit ItemCounts(QObject *parent = nullptr); + static ItemCounts *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the movie count. + */ + Q_PROPERTY(qint32 movieCount READ movieCount WRITE setMovieCount NOTIFY movieCountChanged) + /** + * @brief Gets or sets the series count. + */ + Q_PROPERTY(qint32 seriesCount READ seriesCount WRITE setSeriesCount NOTIFY seriesCountChanged) + /** + * @brief Gets or sets the episode count. + */ + Q_PROPERTY(qint32 episodeCount READ episodeCount WRITE setEpisodeCount NOTIFY episodeCountChanged) + /** + * @brief Gets or sets the artist count. + */ + Q_PROPERTY(qint32 artistCount READ artistCount WRITE setArtistCount NOTIFY artistCountChanged) + /** + * @brief Gets or sets the program count. + */ + Q_PROPERTY(qint32 programCount READ programCount WRITE setProgramCount NOTIFY programCountChanged) + /** + * @brief Gets or sets the trailer count. + */ + Q_PROPERTY(qint32 trailerCount READ trailerCount WRITE setTrailerCount NOTIFY trailerCountChanged) + /** + * @brief Gets or sets the song count. + */ + Q_PROPERTY(qint32 songCount READ songCount WRITE setSongCount NOTIFY songCountChanged) + /** + * @brief Gets or sets the album count. + */ + Q_PROPERTY(qint32 albumCount READ albumCount WRITE setAlbumCount NOTIFY albumCountChanged) + /** + * @brief Gets or sets the music video count. + */ + Q_PROPERTY(qint32 musicVideoCount READ musicVideoCount WRITE setMusicVideoCount NOTIFY musicVideoCountChanged) + /** + * @brief Gets or sets the box set count. + */ + Q_PROPERTY(qint32 boxSetCount READ boxSetCount WRITE setBoxSetCount NOTIFY boxSetCountChanged) + /** + * @brief Gets or sets the book count. + */ + Q_PROPERTY(qint32 bookCount READ bookCount WRITE setBookCount NOTIFY bookCountChanged) + /** + * @brief Gets or sets the item count. + */ + Q_PROPERTY(qint32 itemCount READ itemCount WRITE setItemCount NOTIFY itemCountChanged) + + qint32 movieCount() const; + void setMovieCount(qint32 newMovieCount); + + qint32 seriesCount() const; + void setSeriesCount(qint32 newSeriesCount); + + qint32 episodeCount() const; + void setEpisodeCount(qint32 newEpisodeCount); + + qint32 artistCount() const; + void setArtistCount(qint32 newArtistCount); + + qint32 programCount() const; + void setProgramCount(qint32 newProgramCount); + + qint32 trailerCount() const; + void setTrailerCount(qint32 newTrailerCount); + + qint32 songCount() const; + void setSongCount(qint32 newSongCount); + + qint32 albumCount() const; + void setAlbumCount(qint32 newAlbumCount); + + qint32 musicVideoCount() const; + void setMusicVideoCount(qint32 newMusicVideoCount); + + qint32 boxSetCount() const; + void setBoxSetCount(qint32 newBoxSetCount); + + qint32 bookCount() const; + void setBookCount(qint32 newBookCount); + + qint32 itemCount() const; + void setItemCount(qint32 newItemCount); + +signals: + void movieCountChanged(qint32 newMovieCount); + void seriesCountChanged(qint32 newSeriesCount); + void episodeCountChanged(qint32 newEpisodeCount); + void artistCountChanged(qint32 newArtistCount); + void programCountChanged(qint32 newProgramCount); + void trailerCountChanged(qint32 newTrailerCount); + void songCountChanged(qint32 newSongCount); + void albumCountChanged(qint32 newAlbumCount); + void musicVideoCountChanged(qint32 newMusicVideoCount); + void boxSetCountChanged(qint32 newBoxSetCount); + void bookCountChanged(qint32 newBookCount); + void itemCountChanged(qint32 newItemCount); +protected: + qint32 m_movieCount; + qint32 m_seriesCount; + qint32 m_episodeCount; + qint32 m_artistCount; + qint32 m_programCount; + qint32 m_trailerCount; + qint32 m_songCount; + qint32 m_albumCount; + qint32 m_musicVideoCount; + qint32 m_boxSetCount; + qint32 m_bookCount; + qint32 m_itemCount; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ITEMCOUNTS_H diff --git a/core/include/JellyfinQt/DTO/itemfields.h b/core/include/JellyfinQt/DTO/itemfields.h new file mode 100644 index 0000000..2186093 --- /dev/null +++ b/core/include/JellyfinQt/DTO/itemfields.h @@ -0,0 +1,113 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ITEMFIELDS_H +#define JELLYFIN_DTO_ITEMFIELDS_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ItemFieldsClass { + Q_GADGET +public: + enum Value { + AirTime, + CanDelete, + CanDownload, + ChannelInfo, + Chapters, + ChildCount, + CumulativeRunTimeTicks, + CustomRating, + DateCreated, + DateLastMediaAdded, + DisplayPreferencesId, + Etag, + ExternalUrls, + Genres, + HomePageUrl, + ItemCounts, + MediaSourceCount, + MediaSources, + OriginalTitle, + Overview, + ParentId, + Path, + People, + PlayAccess, + ProductionLocations, + ProviderIds, + PrimaryImageAspectRatio, + RecursiveItemCount, + Settings, + ScreenshotImageTags, + SeriesPrimaryImage, + SeriesStudio, + SortName, + SpecialEpisodeNumbers, + Studios, + BasicSyncInfo, + SyncInfo, + Taglines, + Tags, + RemoteTrailers, + MediaStreams, + SeasonUserData, + ServiceName, + ThemeSongIds, + ThemeVideoIds, + ExternalEtag, + PresentationUniqueKey, + InheritedParentalRatingValue, + ExternalSeriesId, + SeriesPresentationUniqueKey, + DateLastRefreshed, + DateLastSaved, + RefreshState, + ChannelImage, + EnableMediaSourceDisplay, + Width, + Height, + ExtraIds, + LocalTrailerCount, + IsHD, + SpecialFeatureCount, + }; + Q_ENUM(Value) +private: + explicit ItemFieldsClass(); +}; +typedef ItemFieldsClass::Value ItemFields; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ITEMFIELDS_H diff --git a/core/include/JellyfinQt/DTO/itemfilter.h b/core/include/JellyfinQt/DTO/itemfilter.h new file mode 100644 index 0000000..af89fab --- /dev/null +++ b/core/include/JellyfinQt/DTO/itemfilter.h @@ -0,0 +1,61 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_ITEMFILTER_H +#define JELLYFIN_DTO_ITEMFILTER_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ItemFilterClass { + Q_GADGET +public: + enum Value { + IsFolder, + IsNotFolder, + IsUnplayed, + IsPlayed, + IsFavorite, + IsResumable, + Likes, + Dislikes, + IsFavoriteOrLikes, + }; + Q_ENUM(Value) +private: + explicit ItemFilterClass(); +}; +typedef ItemFilterClass::Value ItemFilter; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_ITEMFILTER_H diff --git a/core/include/JellyfinQt/DTO/joingrouprequestdto.h b/core/include/JellyfinQt/DTO/joingrouprequestdto.h new file mode 100644 index 0000000..26dd7cc --- /dev/null +++ b/core/include/JellyfinQt/DTO/joingrouprequestdto.h @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_JOINGROUPREQUESTDTO_H +#define JELLYFIN_DTO_JOINGROUPREQUESTDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class JoinGroupRequestDto : public QObject { + Q_OBJECT +public: + explicit JoinGroupRequestDto(QObject *parent = nullptr); + static JoinGroupRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the group identifier. + */ + Q_PROPERTY(QString groupId READ groupId WRITE setGroupId NOTIFY groupIdChanged) + + QString groupId() const; + void setGroupId(QString newGroupId); + +signals: + void groupIdChanged(QString newGroupId); +protected: + QString m_groupId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_JOINGROUPREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/keepuntil.h b/core/include/JellyfinQt/DTO/keepuntil.h new file mode 100644 index 0000000..0ae8d9c --- /dev/null +++ b/core/include/JellyfinQt/DTO/keepuntil.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_KEEPUNTIL_H +#define JELLYFIN_DTO_KEEPUNTIL_H + +#include + +namespace Jellyfin { +namespace DTO { + +class KeepUntilClass { + Q_GADGET +public: + enum Value { + UntilDeleted, + UntilSpaceNeeded, + UntilWatched, + UntilDate, + }; + Q_ENUM(Value) +private: + explicit KeepUntilClass(); +}; +typedef KeepUntilClass::Value KeepUntil; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_KEEPUNTIL_H diff --git a/core/include/JellyfinQt/DTO/libraryoptioninfodto.h b/core/include/JellyfinQt/DTO/libraryoptioninfodto.h new file mode 100644 index 0000000..de3a17f --- /dev/null +++ b/core/include/JellyfinQt/DTO/libraryoptioninfodto.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LIBRARYOPTIONINFODTO_H +#define JELLYFIN_DTO_LIBRARYOPTIONINFODTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class LibraryOptionInfoDto : public QObject { + Q_OBJECT +public: + explicit LibraryOptionInfoDto(QObject *parent = nullptr); + static LibraryOptionInfoDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets a value indicating whether default enabled. + */ + Q_PROPERTY(bool defaultEnabled READ defaultEnabled WRITE setDefaultEnabled NOTIFY defaultEnabledChanged) + + QString name() const; + void setName(QString newName); + + bool defaultEnabled() const; + void setDefaultEnabled(bool newDefaultEnabled); + +signals: + void nameChanged(QString newName); + void defaultEnabledChanged(bool newDefaultEnabled); +protected: + QString m_name; + bool m_defaultEnabled; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LIBRARYOPTIONINFODTO_H diff --git a/core/include/JellyfinQt/DTO/libraryoptions.h b/core/include/JellyfinQt/DTO/libraryoptions.h new file mode 100644 index 0000000..dd6386c --- /dev/null +++ b/core/include/JellyfinQt/DTO/libraryoptions.h @@ -0,0 +1,217 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LIBRARYOPTIONS_H +#define JELLYFIN_DTO_LIBRARYOPTIONS_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MediaPathInfo; +class TypeOptions; + +class LibraryOptions : public QObject { + Q_OBJECT +public: + explicit LibraryOptions(QObject *parent = nullptr); + static LibraryOptions *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(bool enablePhotos READ enablePhotos WRITE setEnablePhotos NOTIFY enablePhotosChanged) + Q_PROPERTY(bool enableRealtimeMonitor READ enableRealtimeMonitor WRITE setEnableRealtimeMonitor NOTIFY enableRealtimeMonitorChanged) + Q_PROPERTY(bool enableChapterImageExtraction READ enableChapterImageExtraction WRITE setEnableChapterImageExtraction NOTIFY enableChapterImageExtractionChanged) + Q_PROPERTY(bool extractChapterImagesDuringLibraryScan READ extractChapterImagesDuringLibraryScan WRITE setExtractChapterImagesDuringLibraryScan NOTIFY extractChapterImagesDuringLibraryScanChanged) + Q_PROPERTY(QList pathInfos READ pathInfos WRITE setPathInfos NOTIFY pathInfosChanged) + Q_PROPERTY(bool saveLocalMetadata READ saveLocalMetadata WRITE setSaveLocalMetadata NOTIFY saveLocalMetadataChanged) + Q_PROPERTY(bool enableInternetProviders READ enableInternetProviders WRITE setEnableInternetProviders NOTIFY enableInternetProvidersChanged) + Q_PROPERTY(bool enableAutomaticSeriesGrouping READ enableAutomaticSeriesGrouping WRITE setEnableAutomaticSeriesGrouping NOTIFY enableAutomaticSeriesGroupingChanged) + Q_PROPERTY(bool enableEmbeddedTitles READ enableEmbeddedTitles WRITE setEnableEmbeddedTitles NOTIFY enableEmbeddedTitlesChanged) + Q_PROPERTY(bool enableEmbeddedEpisodeInfos READ enableEmbeddedEpisodeInfos WRITE setEnableEmbeddedEpisodeInfos NOTIFY enableEmbeddedEpisodeInfosChanged) + Q_PROPERTY(qint32 automaticRefreshIntervalDays READ automaticRefreshIntervalDays WRITE setAutomaticRefreshIntervalDays NOTIFY automaticRefreshIntervalDaysChanged) + /** + * @brief Gets or sets the preferred metadata language. + */ + Q_PROPERTY(QString preferredMetadataLanguage READ preferredMetadataLanguage WRITE setPreferredMetadataLanguage NOTIFY preferredMetadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + Q_PROPERTY(QString seasonZeroDisplayName READ seasonZeroDisplayName WRITE setSeasonZeroDisplayName NOTIFY seasonZeroDisplayNameChanged) + Q_PROPERTY(QStringList metadataSavers READ metadataSavers WRITE setMetadataSavers NOTIFY metadataSaversChanged) + Q_PROPERTY(QStringList disabledLocalMetadataReaders READ disabledLocalMetadataReaders WRITE setDisabledLocalMetadataReaders NOTIFY disabledLocalMetadataReadersChanged) + Q_PROPERTY(QStringList localMetadataReaderOrder READ localMetadataReaderOrder WRITE setLocalMetadataReaderOrder NOTIFY localMetadataReaderOrderChanged) + Q_PROPERTY(QStringList disabledSubtitleFetchers READ disabledSubtitleFetchers WRITE setDisabledSubtitleFetchers NOTIFY disabledSubtitleFetchersChanged) + Q_PROPERTY(QStringList subtitleFetcherOrder READ subtitleFetcherOrder WRITE setSubtitleFetcherOrder NOTIFY subtitleFetcherOrderChanged) + Q_PROPERTY(bool skipSubtitlesIfEmbeddedSubtitlesPresent READ skipSubtitlesIfEmbeddedSubtitlesPresent WRITE setSkipSubtitlesIfEmbeddedSubtitlesPresent NOTIFY skipSubtitlesIfEmbeddedSubtitlesPresentChanged) + Q_PROPERTY(bool skipSubtitlesIfAudioTrackMatches READ skipSubtitlesIfAudioTrackMatches WRITE setSkipSubtitlesIfAudioTrackMatches NOTIFY skipSubtitlesIfAudioTrackMatchesChanged) + Q_PROPERTY(QStringList subtitleDownloadLanguages READ subtitleDownloadLanguages WRITE setSubtitleDownloadLanguages NOTIFY subtitleDownloadLanguagesChanged) + Q_PROPERTY(bool requirePerfectSubtitleMatch READ requirePerfectSubtitleMatch WRITE setRequirePerfectSubtitleMatch NOTIFY requirePerfectSubtitleMatchChanged) + Q_PROPERTY(bool saveSubtitlesWithMedia READ saveSubtitlesWithMedia WRITE setSaveSubtitlesWithMedia NOTIFY saveSubtitlesWithMediaChanged) + Q_PROPERTY(QList typeOptions READ typeOptions WRITE setTypeOptions NOTIFY typeOptionsChanged) + + bool enablePhotos() const; + void setEnablePhotos(bool newEnablePhotos); + + bool enableRealtimeMonitor() const; + void setEnableRealtimeMonitor(bool newEnableRealtimeMonitor); + + bool enableChapterImageExtraction() const; + void setEnableChapterImageExtraction(bool newEnableChapterImageExtraction); + + bool extractChapterImagesDuringLibraryScan() const; + void setExtractChapterImagesDuringLibraryScan(bool newExtractChapterImagesDuringLibraryScan); + + QList pathInfos() const; + void setPathInfos(QList newPathInfos); + + bool saveLocalMetadata() const; + void setSaveLocalMetadata(bool newSaveLocalMetadata); + + bool enableInternetProviders() const; + void setEnableInternetProviders(bool newEnableInternetProviders); + + bool enableAutomaticSeriesGrouping() const; + void setEnableAutomaticSeriesGrouping(bool newEnableAutomaticSeriesGrouping); + + bool enableEmbeddedTitles() const; + void setEnableEmbeddedTitles(bool newEnableEmbeddedTitles); + + bool enableEmbeddedEpisodeInfos() const; + void setEnableEmbeddedEpisodeInfos(bool newEnableEmbeddedEpisodeInfos); + + qint32 automaticRefreshIntervalDays() const; + void setAutomaticRefreshIntervalDays(qint32 newAutomaticRefreshIntervalDays); + + QString preferredMetadataLanguage() const; + void setPreferredMetadataLanguage(QString newPreferredMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QString seasonZeroDisplayName() const; + void setSeasonZeroDisplayName(QString newSeasonZeroDisplayName); + + QStringList metadataSavers() const; + void setMetadataSavers(QStringList newMetadataSavers); + + QStringList disabledLocalMetadataReaders() const; + void setDisabledLocalMetadataReaders(QStringList newDisabledLocalMetadataReaders); + + QStringList localMetadataReaderOrder() const; + void setLocalMetadataReaderOrder(QStringList newLocalMetadataReaderOrder); + + QStringList disabledSubtitleFetchers() const; + void setDisabledSubtitleFetchers(QStringList newDisabledSubtitleFetchers); + + QStringList subtitleFetcherOrder() const; + void setSubtitleFetcherOrder(QStringList newSubtitleFetcherOrder); + + bool skipSubtitlesIfEmbeddedSubtitlesPresent() const; + void setSkipSubtitlesIfEmbeddedSubtitlesPresent(bool newSkipSubtitlesIfEmbeddedSubtitlesPresent); + + bool skipSubtitlesIfAudioTrackMatches() const; + void setSkipSubtitlesIfAudioTrackMatches(bool newSkipSubtitlesIfAudioTrackMatches); + + QStringList subtitleDownloadLanguages() const; + void setSubtitleDownloadLanguages(QStringList newSubtitleDownloadLanguages); + + bool requirePerfectSubtitleMatch() const; + void setRequirePerfectSubtitleMatch(bool newRequirePerfectSubtitleMatch); + + bool saveSubtitlesWithMedia() const; + void setSaveSubtitlesWithMedia(bool newSaveSubtitlesWithMedia); + + QList typeOptions() const; + void setTypeOptions(QList newTypeOptions); + +signals: + void enablePhotosChanged(bool newEnablePhotos); + void enableRealtimeMonitorChanged(bool newEnableRealtimeMonitor); + void enableChapterImageExtractionChanged(bool newEnableChapterImageExtraction); + void extractChapterImagesDuringLibraryScanChanged(bool newExtractChapterImagesDuringLibraryScan); + void pathInfosChanged(QList newPathInfos); + void saveLocalMetadataChanged(bool newSaveLocalMetadata); + void enableInternetProvidersChanged(bool newEnableInternetProviders); + void enableAutomaticSeriesGroupingChanged(bool newEnableAutomaticSeriesGrouping); + void enableEmbeddedTitlesChanged(bool newEnableEmbeddedTitles); + void enableEmbeddedEpisodeInfosChanged(bool newEnableEmbeddedEpisodeInfos); + void automaticRefreshIntervalDaysChanged(qint32 newAutomaticRefreshIntervalDays); + void preferredMetadataLanguageChanged(QString newPreferredMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void seasonZeroDisplayNameChanged(QString newSeasonZeroDisplayName); + void metadataSaversChanged(QStringList newMetadataSavers); + void disabledLocalMetadataReadersChanged(QStringList newDisabledLocalMetadataReaders); + void localMetadataReaderOrderChanged(QStringList newLocalMetadataReaderOrder); + void disabledSubtitleFetchersChanged(QStringList newDisabledSubtitleFetchers); + void subtitleFetcherOrderChanged(QStringList newSubtitleFetcherOrder); + void skipSubtitlesIfEmbeddedSubtitlesPresentChanged(bool newSkipSubtitlesIfEmbeddedSubtitlesPresent); + void skipSubtitlesIfAudioTrackMatchesChanged(bool newSkipSubtitlesIfAudioTrackMatches); + void subtitleDownloadLanguagesChanged(QStringList newSubtitleDownloadLanguages); + void requirePerfectSubtitleMatchChanged(bool newRequirePerfectSubtitleMatch); + void saveSubtitlesWithMediaChanged(bool newSaveSubtitlesWithMedia); + void typeOptionsChanged(QList newTypeOptions); +protected: + bool m_enablePhotos; + bool m_enableRealtimeMonitor; + bool m_enableChapterImageExtraction; + bool m_extractChapterImagesDuringLibraryScan; + QList m_pathInfos; + bool m_saveLocalMetadata; + bool m_enableInternetProviders; + bool m_enableAutomaticSeriesGrouping; + bool m_enableEmbeddedTitles; + bool m_enableEmbeddedEpisodeInfos; + qint32 m_automaticRefreshIntervalDays; + QString m_preferredMetadataLanguage; + QString m_metadataCountryCode; + QString m_seasonZeroDisplayName; + QStringList m_metadataSavers; + QStringList m_disabledLocalMetadataReaders; + QStringList m_localMetadataReaderOrder; + QStringList m_disabledSubtitleFetchers; + QStringList m_subtitleFetcherOrder; + bool m_skipSubtitlesIfEmbeddedSubtitlesPresent; + bool m_skipSubtitlesIfAudioTrackMatches; + QStringList m_subtitleDownloadLanguages; + bool m_requirePerfectSubtitleMatch; + bool m_saveSubtitlesWithMedia; + QList m_typeOptions; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LIBRARYOPTIONS_H diff --git a/core/include/JellyfinQt/DTO/libraryoptionsresultdto.h b/core/include/JellyfinQt/DTO/libraryoptionsresultdto.h new file mode 100644 index 0000000..3aed72d --- /dev/null +++ b/core/include/JellyfinQt/DTO/libraryoptionsresultdto.h @@ -0,0 +1,98 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LIBRARYOPTIONSRESULTDTO_H +#define JELLYFIN_DTO_LIBRARYOPTIONSRESULTDTO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class LibraryOptionInfoDto; +class LibraryOptionInfoDto; +class LibraryOptionInfoDto; +class LibraryTypeOptionsDto; + +class LibraryOptionsResultDto : public QObject { + Q_OBJECT +public: + explicit LibraryOptionsResultDto(QObject *parent = nullptr); + static LibraryOptionsResultDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the metadata savers. + */ + Q_PROPERTY(QList metadataSavers READ metadataSavers WRITE setMetadataSavers NOTIFY metadataSaversChanged) + /** + * @brief Gets or sets the metadata readers. + */ + Q_PROPERTY(QList metadataReaders READ metadataReaders WRITE setMetadataReaders NOTIFY metadataReadersChanged) + /** + * @brief Gets or sets the subtitle fetchers. + */ + Q_PROPERTY(QList subtitleFetchers READ subtitleFetchers WRITE setSubtitleFetchers NOTIFY subtitleFetchersChanged) + /** + * @brief Gets or sets the type options. + */ + Q_PROPERTY(QList typeOptions READ typeOptions WRITE setTypeOptions NOTIFY typeOptionsChanged) + + QList metadataSavers() const; + void setMetadataSavers(QList newMetadataSavers); + + QList metadataReaders() const; + void setMetadataReaders(QList newMetadataReaders); + + QList subtitleFetchers() const; + void setSubtitleFetchers(QList newSubtitleFetchers); + + QList typeOptions() const; + void setTypeOptions(QList newTypeOptions); + +signals: + void metadataSaversChanged(QList newMetadataSavers); + void metadataReadersChanged(QList newMetadataReaders); + void subtitleFetchersChanged(QList newSubtitleFetchers); + void typeOptionsChanged(QList newTypeOptions); +protected: + QList m_metadataSavers; + QList m_metadataReaders; + QList m_subtitleFetchers; + QList m_typeOptions; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LIBRARYOPTIONSRESULTDTO_H diff --git a/core/include/JellyfinQt/DTO/librarytypeoptionsdto.h b/core/include/JellyfinQt/DTO/librarytypeoptionsdto.h new file mode 100644 index 0000000..c859769 --- /dev/null +++ b/core/include/JellyfinQt/DTO/librarytypeoptionsdto.h @@ -0,0 +1,109 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LIBRARYTYPEOPTIONSDTO_H +#define JELLYFIN_DTO_LIBRARYTYPEOPTIONSDTO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/imagetype.h" + +namespace Jellyfin { +namespace DTO { + +class ImageOption; +class LibraryOptionInfoDto; +class LibraryOptionInfoDto; + +class LibraryTypeOptionsDto : public QObject { + Q_OBJECT +public: + explicit LibraryTypeOptionsDto(QObject *parent = nullptr); + static LibraryTypeOptionsDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the type. + */ + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets or sets the metadata fetchers. + */ + Q_PROPERTY(QList metadataFetchers READ metadataFetchers WRITE setMetadataFetchers NOTIFY metadataFetchersChanged) + /** + * @brief Gets or sets the image fetchers. + */ + Q_PROPERTY(QList imageFetchers READ imageFetchers WRITE setImageFetchers NOTIFY imageFetchersChanged) + /** + * @brief Gets or sets the supported image types. + */ + Q_PROPERTY(QList supportedImageTypes READ supportedImageTypes WRITE setSupportedImageTypes NOTIFY supportedImageTypesChanged) + /** + * @brief Gets or sets the default image options. + */ + Q_PROPERTY(QList defaultImageOptions READ defaultImageOptions WRITE setDefaultImageOptions NOTIFY defaultImageOptionsChanged) + + QString type() const; + void setType(QString newType); + + QList metadataFetchers() const; + void setMetadataFetchers(QList newMetadataFetchers); + + QList imageFetchers() const; + void setImageFetchers(QList newImageFetchers); + + QList supportedImageTypes() const; + void setSupportedImageTypes(QList newSupportedImageTypes); + + QList defaultImageOptions() const; + void setDefaultImageOptions(QList newDefaultImageOptions); + +signals: + void typeChanged(QString newType); + void metadataFetchersChanged(QList newMetadataFetchers); + void imageFetchersChanged(QList newImageFetchers); + void supportedImageTypesChanged(QList newSupportedImageTypes); + void defaultImageOptionsChanged(QList newDefaultImageOptions); +protected: + QString m_type; + QList m_metadataFetchers; + QList m_imageFetchers; + QList m_supportedImageTypes; + QList m_defaultImageOptions; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LIBRARYTYPEOPTIONSDTO_H diff --git a/core/include/JellyfinQt/DTO/libraryupdateinfo.h b/core/include/JellyfinQt/DTO/libraryupdateinfo.h new file mode 100644 index 0000000..bb3a406 --- /dev/null +++ b/core/include/JellyfinQt/DTO/libraryupdateinfo.h @@ -0,0 +1,115 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LIBRARYUPDATEINFO_H +#define JELLYFIN_DTO_LIBRARYUPDATEINFO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class LibraryUpdateInfo : public QObject { + Q_OBJECT +public: + explicit LibraryUpdateInfo(QObject *parent = nullptr); + static LibraryUpdateInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the folders added to. + */ + Q_PROPERTY(QStringList foldersAddedTo READ foldersAddedTo WRITE setFoldersAddedTo NOTIFY foldersAddedToChanged) + /** + * @brief Gets or sets the folders removed from. + */ + Q_PROPERTY(QStringList foldersRemovedFrom READ foldersRemovedFrom WRITE setFoldersRemovedFrom NOTIFY foldersRemovedFromChanged) + /** + * @brief Gets or sets the items added. + */ + Q_PROPERTY(QStringList itemsAdded READ itemsAdded WRITE setItemsAdded NOTIFY itemsAddedChanged) + /** + * @brief Gets or sets the items removed. + */ + Q_PROPERTY(QStringList itemsRemoved READ itemsRemoved WRITE setItemsRemoved NOTIFY itemsRemovedChanged) + /** + * @brief Gets or sets the items updated. + */ + Q_PROPERTY(QStringList itemsUpdated READ itemsUpdated WRITE setItemsUpdated NOTIFY itemsUpdatedChanged) + Q_PROPERTY(QStringList collectionFolders READ collectionFolders WRITE setCollectionFolders NOTIFY collectionFoldersChanged) + Q_PROPERTY(bool isEmpty READ isEmpty WRITE setIsEmpty NOTIFY isEmptyChanged) + + QStringList foldersAddedTo() const; + void setFoldersAddedTo(QStringList newFoldersAddedTo); + + QStringList foldersRemovedFrom() const; + void setFoldersRemovedFrom(QStringList newFoldersRemovedFrom); + + QStringList itemsAdded() const; + void setItemsAdded(QStringList newItemsAdded); + + QStringList itemsRemoved() const; + void setItemsRemoved(QStringList newItemsRemoved); + + QStringList itemsUpdated() const; + void setItemsUpdated(QStringList newItemsUpdated); + + QStringList collectionFolders() const; + void setCollectionFolders(QStringList newCollectionFolders); + + bool isEmpty() const; + void setIsEmpty(bool newIsEmpty); + +signals: + void foldersAddedToChanged(QStringList newFoldersAddedTo); + void foldersRemovedFromChanged(QStringList newFoldersRemovedFrom); + void itemsAddedChanged(QStringList newItemsAdded); + void itemsRemovedChanged(QStringList newItemsRemoved); + void itemsUpdatedChanged(QStringList newItemsUpdated); + void collectionFoldersChanged(QStringList newCollectionFolders); + void isEmptyChanged(bool newIsEmpty); +protected: + QStringList m_foldersAddedTo; + QStringList m_foldersRemovedFrom; + QStringList m_itemsAdded; + QStringList m_itemsRemoved; + QStringList m_itemsUpdated; + QStringList m_collectionFolders; + bool m_isEmpty; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LIBRARYUPDATEINFO_H diff --git a/core/include/JellyfinQt/DTO/listingsproviderinfo.h b/core/include/JellyfinQt/DTO/listingsproviderinfo.h new file mode 100644 index 0000000..b12a8a1 --- /dev/null +++ b/core/include/JellyfinQt/DTO/listingsproviderinfo.h @@ -0,0 +1,168 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LISTINGSPROVIDERINFO_H +#define JELLYFIN_DTO_LISTINGSPROVIDERINFO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class NameValuePair; + +class ListingsProviderInfo : public QObject { + Q_OBJECT +public: + explicit ListingsProviderInfo(QObject *parent = nullptr); + static ListingsProviderInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QString username READ username WRITE setUsername NOTIFY usernameChanged) + Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged) + Q_PROPERTY(QString listingsId READ listingsId WRITE setListingsId NOTIFY listingsIdChanged) + Q_PROPERTY(QString zipCode READ zipCode WRITE setZipCode NOTIFY zipCodeChanged) + Q_PROPERTY(QString country READ country WRITE setCountry NOTIFY countryChanged) + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + Q_PROPERTY(QStringList enabledTuners READ enabledTuners WRITE setEnabledTuners NOTIFY enabledTunersChanged) + Q_PROPERTY(bool enableAllTuners READ enableAllTuners WRITE setEnableAllTuners NOTIFY enableAllTunersChanged) + Q_PROPERTY(QStringList newsCategories READ newsCategories WRITE setNewsCategories NOTIFY newsCategoriesChanged) + Q_PROPERTY(QStringList sportsCategories READ sportsCategories WRITE setSportsCategories NOTIFY sportsCategoriesChanged) + Q_PROPERTY(QStringList kidsCategories READ kidsCategories WRITE setKidsCategories NOTIFY kidsCategoriesChanged) + Q_PROPERTY(QStringList movieCategories READ movieCategories WRITE setMovieCategories NOTIFY movieCategoriesChanged) + Q_PROPERTY(QList channelMappings READ channelMappings WRITE setChannelMappings NOTIFY channelMappingsChanged) + Q_PROPERTY(QString moviePrefix READ moviePrefix WRITE setMoviePrefix NOTIFY moviePrefixChanged) + Q_PROPERTY(QString preferredLanguage READ preferredLanguage WRITE setPreferredLanguage NOTIFY preferredLanguageChanged) + Q_PROPERTY(QString userAgent READ userAgent WRITE setUserAgent NOTIFY userAgentChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString type() const; + void setType(QString newType); + + QString username() const; + void setUsername(QString newUsername); + + QString password() const; + void setPassword(QString newPassword); + + QString listingsId() const; + void setListingsId(QString newListingsId); + + QString zipCode() const; + void setZipCode(QString newZipCode); + + QString country() const; + void setCountry(QString newCountry); + + QString path() const; + void setPath(QString newPath); + + QStringList enabledTuners() const; + void setEnabledTuners(QStringList newEnabledTuners); + + bool enableAllTuners() const; + void setEnableAllTuners(bool newEnableAllTuners); + + QStringList newsCategories() const; + void setNewsCategories(QStringList newNewsCategories); + + QStringList sportsCategories() const; + void setSportsCategories(QStringList newSportsCategories); + + QStringList kidsCategories() const; + void setKidsCategories(QStringList newKidsCategories); + + QStringList movieCategories() const; + void setMovieCategories(QStringList newMovieCategories); + + QList channelMappings() const; + void setChannelMappings(QList newChannelMappings); + + QString moviePrefix() const; + void setMoviePrefix(QString newMoviePrefix); + + QString preferredLanguage() const; + void setPreferredLanguage(QString newPreferredLanguage); + + QString userAgent() const; + void setUserAgent(QString newUserAgent); + +signals: + void jellyfinIdChanged(QString newJellyfinId); + void typeChanged(QString newType); + void usernameChanged(QString newUsername); + void passwordChanged(QString newPassword); + void listingsIdChanged(QString newListingsId); + void zipCodeChanged(QString newZipCode); + void countryChanged(QString newCountry); + void pathChanged(QString newPath); + void enabledTunersChanged(QStringList newEnabledTuners); + void enableAllTunersChanged(bool newEnableAllTuners); + void newsCategoriesChanged(QStringList newNewsCategories); + void sportsCategoriesChanged(QStringList newSportsCategories); + void kidsCategoriesChanged(QStringList newKidsCategories); + void movieCategoriesChanged(QStringList newMovieCategories); + void channelMappingsChanged(QList newChannelMappings); + void moviePrefixChanged(QString newMoviePrefix); + void preferredLanguageChanged(QString newPreferredLanguage); + void userAgentChanged(QString newUserAgent); +protected: + QString m_jellyfinId; + QString m_type; + QString m_username; + QString m_password; + QString m_listingsId; + QString m_zipCode; + QString m_country; + QString m_path; + QStringList m_enabledTuners; + bool m_enableAllTuners; + QStringList m_newsCategories; + QStringList m_sportsCategories; + QStringList m_kidsCategories; + QStringList m_movieCategories; + QList m_channelMappings; + QString m_moviePrefix; + QString m_preferredLanguage; + QString m_userAgent; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LISTINGSPROVIDERINFO_H diff --git a/core/include/JellyfinQt/DTO/livestreamresponse.h b/core/include/JellyfinQt/DTO/livestreamresponse.h new file mode 100644 index 0000000..8dae092 --- /dev/null +++ b/core/include/JellyfinQt/DTO/livestreamresponse.h @@ -0,0 +1,63 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LIVESTREAMRESPONSE_H +#define JELLYFIN_DTO_LIVESTREAMRESPONSE_H + +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MediaSourceInfo; + +class LiveStreamResponse : public QObject { + Q_OBJECT +public: + explicit LiveStreamResponse(QObject *parent = nullptr); + static LiveStreamResponse *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(MediaSourceInfo * mediaSource READ mediaSource WRITE setMediaSource NOTIFY mediaSourceChanged) + + MediaSourceInfo * mediaSource() const; + void setMediaSource(MediaSourceInfo * newMediaSource); + +signals: + void mediaSourceChanged(MediaSourceInfo * newMediaSource); +protected: + MediaSourceInfo * m_mediaSource = nullptr; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LIVESTREAMRESPONSE_H diff --git a/core/include/JellyfinQt/DTO/livetvinfo.h b/core/include/JellyfinQt/DTO/livetvinfo.h new file mode 100644 index 0000000..684d8e5 --- /dev/null +++ b/core/include/JellyfinQt/DTO/livetvinfo.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LIVETVINFO_H +#define JELLYFIN_DTO_LIVETVINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class LiveTvServiceInfo; + +class LiveTvInfo : public QObject { + Q_OBJECT +public: + explicit LiveTvInfo(QObject *parent = nullptr); + static LiveTvInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the services. + */ + Q_PROPERTY(QList services READ services WRITE setServices NOTIFY servicesChanged) + /** + * @brief Gets or sets a value indicating whether this instance is enabled. + */ + Q_PROPERTY(bool isEnabled READ isEnabled WRITE setIsEnabled NOTIFY isEnabledChanged) + /** + * @brief Gets or sets the enabled users. + */ + Q_PROPERTY(QStringList enabledUsers READ enabledUsers WRITE setEnabledUsers NOTIFY enabledUsersChanged) + + QList services() const; + void setServices(QList newServices); + + bool isEnabled() const; + void setIsEnabled(bool newIsEnabled); + + QStringList enabledUsers() const; + void setEnabledUsers(QStringList newEnabledUsers); + +signals: + void servicesChanged(QList newServices); + void isEnabledChanged(bool newIsEnabled); + void enabledUsersChanged(QStringList newEnabledUsers); +protected: + QList m_services; + bool m_isEnabled; + QStringList m_enabledUsers; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LIVETVINFO_H diff --git a/core/include/JellyfinQt/DTO/livetvserviceinfo.h b/core/include/JellyfinQt/DTO/livetvserviceinfo.h new file mode 100644 index 0000000..11198eb --- /dev/null +++ b/core/include/JellyfinQt/DTO/livetvserviceinfo.h @@ -0,0 +1,126 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LIVETVSERVICEINFO_H +#define JELLYFIN_DTO_LIVETVSERVICEINFO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/livetvservicestatus.h" + +namespace Jellyfin { +namespace DTO { + +class LiveTvServiceInfo : public QObject { + Q_OBJECT +public: + explicit LiveTvServiceInfo(QObject *parent = nullptr); + static LiveTvServiceInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the home page URL. + */ + Q_PROPERTY(QString homePageUrl READ homePageUrl WRITE setHomePageUrl NOTIFY homePageUrlChanged) + Q_PROPERTY(LiveTvServiceStatus status READ status WRITE setStatus NOTIFY statusChanged) + /** + * @brief Gets or sets the status message. + */ + Q_PROPERTY(QString statusMessage READ statusMessage WRITE setStatusMessage NOTIFY statusMessageChanged) + /** + * @brief Gets or sets the version. + */ + Q_PROPERTY(QString version READ version WRITE setVersion NOTIFY versionChanged) + /** + * @brief Gets or sets a value indicating whether this instance has update available. + */ + Q_PROPERTY(bool hasUpdateAvailable READ hasUpdateAvailable WRITE setHasUpdateAvailable NOTIFY hasUpdateAvailableChanged) + /** + * @brief Gets or sets a value indicating whether this instance is visible. + */ + Q_PROPERTY(bool isVisible READ isVisible WRITE setIsVisible NOTIFY isVisibleChanged) + Q_PROPERTY(QStringList tuners READ tuners WRITE setTuners NOTIFY tunersChanged) + + QString name() const; + void setName(QString newName); + + QString homePageUrl() const; + void setHomePageUrl(QString newHomePageUrl); + + LiveTvServiceStatus status() const; + void setStatus(LiveTvServiceStatus newStatus); + + QString statusMessage() const; + void setStatusMessage(QString newStatusMessage); + + QString version() const; + void setVersion(QString newVersion); + + bool hasUpdateAvailable() const; + void setHasUpdateAvailable(bool newHasUpdateAvailable); + + bool isVisible() const; + void setIsVisible(bool newIsVisible); + + QStringList tuners() const; + void setTuners(QStringList newTuners); + +signals: + void nameChanged(QString newName); + void homePageUrlChanged(QString newHomePageUrl); + void statusChanged(LiveTvServiceStatus newStatus); + void statusMessageChanged(QString newStatusMessage); + void versionChanged(QString newVersion); + void hasUpdateAvailableChanged(bool newHasUpdateAvailable); + void isVisibleChanged(bool newIsVisible); + void tunersChanged(QStringList newTuners); +protected: + QString m_name; + QString m_homePageUrl; + LiveTvServiceStatus m_status; + QString m_statusMessage; + QString m_version; + bool m_hasUpdateAvailable; + bool m_isVisible; + QStringList m_tuners; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LIVETVSERVICEINFO_H diff --git a/core/include/JellyfinQt/DTO/livetvservicestatus.h b/core/include/JellyfinQt/DTO/livetvservicestatus.h new file mode 100644 index 0000000..6b70092 --- /dev/null +++ b/core/include/JellyfinQt/DTO/livetvservicestatus.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LIVETVSERVICESTATUS_H +#define JELLYFIN_DTO_LIVETVSERVICESTATUS_H + +#include + +namespace Jellyfin { +namespace DTO { + +class LiveTvServiceStatusClass { + Q_GADGET +public: + enum Value { + Ok, + Unavailable, + }; + Q_ENUM(Value) +private: + explicit LiveTvServiceStatusClass(); +}; +typedef LiveTvServiceStatusClass::Value LiveTvServiceStatus; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LIVETVSERVICESTATUS_H diff --git a/core/include/JellyfinQt/DTO/localizationoption.h b/core/include/JellyfinQt/DTO/localizationoption.h new file mode 100644 index 0000000..6b46b95 --- /dev/null +++ b/core/include/JellyfinQt/DTO/localizationoption.h @@ -0,0 +1,68 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LOCALIZATIONOPTION_H +#define JELLYFIN_DTO_LOCALIZATIONOPTION_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class LocalizationOption : public QObject { + Q_OBJECT +public: + explicit LocalizationOption(QObject *parent = nullptr); + static LocalizationOption *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString value READ value WRITE setValue NOTIFY valueChanged) + + QString name() const; + void setName(QString newName); + + QString value() const; + void setValue(QString newValue); + +signals: + void nameChanged(QString newName); + void valueChanged(QString newValue); +protected: + QString m_name; + QString m_value; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LOCALIZATIONOPTION_H diff --git a/core/include/JellyfinQt/DTO/locationtype.h b/core/include/JellyfinQt/DTO/locationtype.h new file mode 100644 index 0000000..59498f7 --- /dev/null +++ b/core/include/JellyfinQt/DTO/locationtype.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LOCATIONTYPE_H +#define JELLYFIN_DTO_LOCATIONTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class LocationTypeClass { + Q_GADGET +public: + enum Value { + FileSystem, + Remote, + Virtual, + Offline, + }; + Q_ENUM(Value) +private: + explicit LocationTypeClass(); +}; +typedef LocationTypeClass::Value LocationType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LOCATIONTYPE_H diff --git a/core/include/JellyfinQt/DTO/logfile.h b/core/include/JellyfinQt/DTO/logfile.h new file mode 100644 index 0000000..39616c7 --- /dev/null +++ b/core/include/JellyfinQt/DTO/logfile.h @@ -0,0 +1,93 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LOGFILE_H +#define JELLYFIN_DTO_LOGFILE_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class LogFile : public QObject { + Q_OBJECT +public: + explicit LogFile(QObject *parent = nullptr); + static LogFile *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the date created. + */ + Q_PROPERTY(QDateTime dateCreated READ dateCreated WRITE setDateCreated NOTIFY dateCreatedChanged) + /** + * @brief Gets or sets the date modified. + */ + Q_PROPERTY(QDateTime dateModified READ dateModified WRITE setDateModified NOTIFY dateModifiedChanged) + /** + * @brief Gets or sets the size. + */ + Q_PROPERTY(qint64 size READ size WRITE setSize NOTIFY sizeChanged) + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + + QDateTime dateCreated() const; + void setDateCreated(QDateTime newDateCreated); + + QDateTime dateModified() const; + void setDateModified(QDateTime newDateModified); + + qint64 size() const; + void setSize(qint64 newSize); + + QString name() const; + void setName(QString newName); + +signals: + void dateCreatedChanged(QDateTime newDateCreated); + void dateModifiedChanged(QDateTime newDateModified); + void sizeChanged(qint64 newSize); + void nameChanged(QString newName); +protected: + QDateTime m_dateCreated; + QDateTime m_dateModified; + qint64 m_size; + QString m_name; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LOGFILE_H diff --git a/core/include/JellyfinQt/DTO/loglevel.h b/core/include/JellyfinQt/DTO/loglevel.h new file mode 100644 index 0000000..1e86022 --- /dev/null +++ b/core/include/JellyfinQt/DTO/loglevel.h @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_LOGLEVEL_H +#define JELLYFIN_DTO_LOGLEVEL_H + +#include + +namespace Jellyfin { +namespace DTO { + +class LogLevelClass { + Q_GADGET +public: + enum Value { + Trace, + Debug, + Information, + Warning, + Error, + Critical, + None, + }; + Q_ENUM(Value) +private: + explicit LogLevelClass(); +}; +typedef LogLevelClass::Value LogLevel; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_LOGLEVEL_H diff --git a/core/include/JellyfinQt/DTO/mediaattachment.h b/core/include/JellyfinQt/DTO/mediaattachment.h new file mode 100644 index 0000000..687ad76 --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediaattachment.h @@ -0,0 +1,119 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIAATTACHMENT_H +#define JELLYFIN_DTO_MEDIAATTACHMENT_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MediaAttachment : public QObject { + Q_OBJECT +public: + explicit MediaAttachment(QObject *parent = nullptr); + static MediaAttachment *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the codec. + */ + Q_PROPERTY(QString codec READ codec WRITE setCodec NOTIFY codecChanged) + /** + * @brief Gets or sets the codec tag. + */ + Q_PROPERTY(QString codecTag READ codecTag WRITE setCodecTag NOTIFY codecTagChanged) + /** + * @brief Gets or sets the comment. + */ + Q_PROPERTY(QString comment READ comment WRITE setComment NOTIFY commentChanged) + /** + * @brief Gets or sets the index. + */ + Q_PROPERTY(qint32 index READ index WRITE setIndex NOTIFY indexChanged) + /** + * @brief Gets or sets the filename. + */ + Q_PROPERTY(QString fileName READ fileName WRITE setFileName NOTIFY fileNameChanged) + /** + * @brief Gets or sets the MIME type. + */ + Q_PROPERTY(QString mimeType READ mimeType WRITE setMimeType NOTIFY mimeTypeChanged) + /** + * @brief Gets or sets the delivery URL. + */ + Q_PROPERTY(QString deliveryUrl READ deliveryUrl WRITE setDeliveryUrl NOTIFY deliveryUrlChanged) + + QString codec() const; + void setCodec(QString newCodec); + + QString codecTag() const; + void setCodecTag(QString newCodecTag); + + QString comment() const; + void setComment(QString newComment); + + qint32 index() const; + void setIndex(qint32 newIndex); + + QString fileName() const; + void setFileName(QString newFileName); + + QString mimeType() const; + void setMimeType(QString newMimeType); + + QString deliveryUrl() const; + void setDeliveryUrl(QString newDeliveryUrl); + +signals: + void codecChanged(QString newCodec); + void codecTagChanged(QString newCodecTag); + void commentChanged(QString newComment); + void indexChanged(qint32 newIndex); + void fileNameChanged(QString newFileName); + void mimeTypeChanged(QString newMimeType); + void deliveryUrlChanged(QString newDeliveryUrl); +protected: + QString m_codec; + QString m_codecTag; + QString m_comment; + qint32 m_index; + QString m_fileName; + QString m_mimeType; + QString m_deliveryUrl; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIAATTACHMENT_H diff --git a/core/include/JellyfinQt/DTO/mediaencoderpathdto.h b/core/include/JellyfinQt/DTO/mediaencoderpathdto.h new file mode 100644 index 0000000..5e1575b --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediaencoderpathdto.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIAENCODERPATHDTO_H +#define JELLYFIN_DTO_MEDIAENCODERPATHDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MediaEncoderPathDto : public QObject { + Q_OBJECT +public: + explicit MediaEncoderPathDto(QObject *parent = nullptr); + static MediaEncoderPathDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets media encoder path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets media encoder path type. + */ + Q_PROPERTY(QString pathType READ pathType WRITE setPathType NOTIFY pathTypeChanged) + + QString path() const; + void setPath(QString newPath); + + QString pathType() const; + void setPathType(QString newPathType); + +signals: + void pathChanged(QString newPath); + void pathTypeChanged(QString newPathType); +protected: + QString m_path; + QString m_pathType; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIAENCODERPATHDTO_H diff --git a/core/include/JellyfinQt/DTO/mediapathdto.h b/core/include/JellyfinQt/DTO/mediapathdto.h new file mode 100644 index 0000000..cbdfc14 --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediapathdto.h @@ -0,0 +1,82 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIAPATHDTO_H +#define JELLYFIN_DTO_MEDIAPATHDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MediaPathInfo; + +class MediaPathDto : public QObject { + Q_OBJECT +public: + explicit MediaPathDto(QObject *parent = nullptr); + static MediaPathDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name of the library. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path to add. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + Q_PROPERTY(MediaPathInfo * pathInfo READ pathInfo WRITE setPathInfo NOTIFY pathInfoChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + MediaPathInfo * pathInfo() const; + void setPathInfo(MediaPathInfo * newPathInfo); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void pathInfoChanged(MediaPathInfo * newPathInfo); +protected: + QString m_name; + QString m_path; + MediaPathInfo * m_pathInfo = nullptr; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIAPATHDTO_H diff --git a/core/include/JellyfinQt/DTO/mediapathinfo.h b/core/include/JellyfinQt/DTO/mediapathinfo.h new file mode 100644 index 0000000..d7ba25e --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediapathinfo.h @@ -0,0 +1,68 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIAPATHINFO_H +#define JELLYFIN_DTO_MEDIAPATHINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MediaPathInfo : public QObject { + Q_OBJECT +public: + explicit MediaPathInfo(QObject *parent = nullptr); + static MediaPathInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + Q_PROPERTY(QString networkPath READ networkPath WRITE setNetworkPath NOTIFY networkPathChanged) + + QString path() const; + void setPath(QString newPath); + + QString networkPath() const; + void setNetworkPath(QString newNetworkPath); + +signals: + void pathChanged(QString newPath); + void networkPathChanged(QString newNetworkPath); +protected: + QString m_path; + QString m_networkPath; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIAPATHINFO_H diff --git a/core/include/JellyfinQt/DTO/mediaprotocol.h b/core/include/JellyfinQt/DTO/mediaprotocol.h new file mode 100644 index 0000000..fc77c6c --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediaprotocol.h @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIAPROTOCOL_H +#define JELLYFIN_DTO_MEDIAPROTOCOL_H + +#include + +namespace Jellyfin { +namespace DTO { + +class MediaProtocolClass { + Q_GADGET +public: + enum Value { + File, + Http, + Rtmp, + Rtsp, + Udp, + Rtp, + Ftp, + }; + Q_ENUM(Value) +private: + explicit MediaProtocolClass(); +}; +typedef MediaProtocolClass::Value MediaProtocol; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIAPROTOCOL_H diff --git a/core/include/JellyfinQt/DTO/mediasourceinfo.h b/core/include/JellyfinQt/DTO/mediasourceinfo.h new file mode 100644 index 0000000..346cbee --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediasourceinfo.h @@ -0,0 +1,323 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIASOURCEINFO_H +#define JELLYFIN_DTO_MEDIASOURCEINFO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/isotype.h" +#include "JellyfinQt/DTO/mediaprotocol.h" +#include "JellyfinQt/DTO/mediasourcetype.h" +#include "JellyfinQt/DTO/transportstreamtimestamp.h" +#include "JellyfinQt/DTO/video3dformat.h" +#include "JellyfinQt/DTO/videotype.h" + +namespace Jellyfin { +namespace DTO { + +class MediaAttachment; +class MediaStream; + +class MediaSourceInfo : public QObject { + Q_OBJECT +public: + explicit MediaSourceInfo(QObject *parent = nullptr); + static MediaSourceInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(MediaProtocol protocol READ protocol WRITE setProtocol NOTIFY protocolChanged) + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + Q_PROPERTY(QString encoderPath READ encoderPath WRITE setEncoderPath NOTIFY encoderPathChanged) + Q_PROPERTY(MediaProtocol encoderProtocol READ encoderProtocol WRITE setEncoderProtocol NOTIFY encoderProtocolChanged) + Q_PROPERTY(MediaSourceType type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QString container READ container WRITE setContainer NOTIFY containerChanged) + Q_PROPERTY(qint64 size READ size WRITE setSize NOTIFY sizeChanged) + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Differentiate internet url vs local network. + */ + Q_PROPERTY(bool isRemote READ isRemote WRITE setIsRemote NOTIFY isRemoteChanged) + Q_PROPERTY(QString eTag READ eTag WRITE setETag NOTIFY eTagChanged) + Q_PROPERTY(qint64 runTimeTicks READ runTimeTicks WRITE setRunTimeTicks NOTIFY runTimeTicksChanged) + Q_PROPERTY(bool readAtNativeFramerate READ readAtNativeFramerate WRITE setReadAtNativeFramerate NOTIFY readAtNativeFramerateChanged) + Q_PROPERTY(bool ignoreDts READ ignoreDts WRITE setIgnoreDts NOTIFY ignoreDtsChanged) + Q_PROPERTY(bool ignoreIndex READ ignoreIndex WRITE setIgnoreIndex NOTIFY ignoreIndexChanged) + Q_PROPERTY(bool genPtsInput READ genPtsInput WRITE setGenPtsInput NOTIFY genPtsInputChanged) + Q_PROPERTY(bool supportsTranscoding READ supportsTranscoding WRITE setSupportsTranscoding NOTIFY supportsTranscodingChanged) + Q_PROPERTY(bool supportsDirectStream READ supportsDirectStream WRITE setSupportsDirectStream NOTIFY supportsDirectStreamChanged) + Q_PROPERTY(bool supportsDirectPlay READ supportsDirectPlay WRITE setSupportsDirectPlay NOTIFY supportsDirectPlayChanged) + Q_PROPERTY(bool isInfiniteStream READ isInfiniteStream WRITE setIsInfiniteStream NOTIFY isInfiniteStreamChanged) + Q_PROPERTY(bool requiresOpening READ requiresOpening WRITE setRequiresOpening NOTIFY requiresOpeningChanged) + Q_PROPERTY(QString openToken READ openToken WRITE setOpenToken NOTIFY openTokenChanged) + Q_PROPERTY(bool requiresClosing READ requiresClosing WRITE setRequiresClosing NOTIFY requiresClosingChanged) + Q_PROPERTY(QString liveStreamId READ liveStreamId WRITE setLiveStreamId NOTIFY liveStreamIdChanged) + Q_PROPERTY(qint32 bufferMs READ bufferMs WRITE setBufferMs NOTIFY bufferMsChanged) + Q_PROPERTY(bool requiresLooping READ requiresLooping WRITE setRequiresLooping NOTIFY requiresLoopingChanged) + Q_PROPERTY(bool supportsProbing READ supportsProbing WRITE setSupportsProbing NOTIFY supportsProbingChanged) + Q_PROPERTY(VideoType videoType READ videoType WRITE setVideoType NOTIFY videoTypeChanged) + Q_PROPERTY(IsoType isoType READ isoType WRITE setIsoType NOTIFY isoTypeChanged) + Q_PROPERTY(Video3DFormat video3DFormat READ video3DFormat WRITE setVideo3DFormat NOTIFY video3DFormatChanged) + Q_PROPERTY(QList mediaStreams READ mediaStreams WRITE setMediaStreams NOTIFY mediaStreamsChanged) + Q_PROPERTY(QList mediaAttachments READ mediaAttachments WRITE setMediaAttachments NOTIFY mediaAttachmentsChanged) + Q_PROPERTY(QStringList formats READ formats WRITE setFormats NOTIFY formatsChanged) + Q_PROPERTY(qint32 bitrate READ bitrate WRITE setBitrate NOTIFY bitrateChanged) + Q_PROPERTY(TransportStreamTimestamp timestamp READ timestamp WRITE setTimestamp NOTIFY timestampChanged) + Q_PROPERTY(QJsonObject requiredHttpHeaders READ requiredHttpHeaders WRITE setRequiredHttpHeaders NOTIFY requiredHttpHeadersChanged) + Q_PROPERTY(QString transcodingUrl READ transcodingUrl WRITE setTranscodingUrl NOTIFY transcodingUrlChanged) + Q_PROPERTY(QString transcodingSubProtocol READ transcodingSubProtocol WRITE setTranscodingSubProtocol NOTIFY transcodingSubProtocolChanged) + Q_PROPERTY(QString transcodingContainer READ transcodingContainer WRITE setTranscodingContainer NOTIFY transcodingContainerChanged) + Q_PROPERTY(qint32 analyzeDurationMs READ analyzeDurationMs WRITE setAnalyzeDurationMs NOTIFY analyzeDurationMsChanged) + Q_PROPERTY(qint32 defaultAudioStreamIndex READ defaultAudioStreamIndex WRITE setDefaultAudioStreamIndex NOTIFY defaultAudioStreamIndexChanged) + Q_PROPERTY(qint32 defaultSubtitleStreamIndex READ defaultSubtitleStreamIndex WRITE setDefaultSubtitleStreamIndex NOTIFY defaultSubtitleStreamIndexChanged) + + MediaProtocol protocol() const; + void setProtocol(MediaProtocol newProtocol); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString path() const; + void setPath(QString newPath); + + QString encoderPath() const; + void setEncoderPath(QString newEncoderPath); + + MediaProtocol encoderProtocol() const; + void setEncoderProtocol(MediaProtocol newEncoderProtocol); + + MediaSourceType type() const; + void setType(MediaSourceType newType); + + QString container() const; + void setContainer(QString newContainer); + + qint64 size() const; + void setSize(qint64 newSize); + + QString name() const; + void setName(QString newName); + + bool isRemote() const; + void setIsRemote(bool newIsRemote); + + QString eTag() const; + void setETag(QString newETag); + + qint64 runTimeTicks() const; + void setRunTimeTicks(qint64 newRunTimeTicks); + + bool readAtNativeFramerate() const; + void setReadAtNativeFramerate(bool newReadAtNativeFramerate); + + bool ignoreDts() const; + void setIgnoreDts(bool newIgnoreDts); + + bool ignoreIndex() const; + void setIgnoreIndex(bool newIgnoreIndex); + + bool genPtsInput() const; + void setGenPtsInput(bool newGenPtsInput); + + bool supportsTranscoding() const; + void setSupportsTranscoding(bool newSupportsTranscoding); + + bool supportsDirectStream() const; + void setSupportsDirectStream(bool newSupportsDirectStream); + + bool supportsDirectPlay() const; + void setSupportsDirectPlay(bool newSupportsDirectPlay); + + bool isInfiniteStream() const; + void setIsInfiniteStream(bool newIsInfiniteStream); + + bool requiresOpening() const; + void setRequiresOpening(bool newRequiresOpening); + + QString openToken() const; + void setOpenToken(QString newOpenToken); + + bool requiresClosing() const; + void setRequiresClosing(bool newRequiresClosing); + + QString liveStreamId() const; + void setLiveStreamId(QString newLiveStreamId); + + qint32 bufferMs() const; + void setBufferMs(qint32 newBufferMs); + + bool requiresLooping() const; + void setRequiresLooping(bool newRequiresLooping); + + bool supportsProbing() const; + void setSupportsProbing(bool newSupportsProbing); + + VideoType videoType() const; + void setVideoType(VideoType newVideoType); + + IsoType isoType() const; + void setIsoType(IsoType newIsoType); + + Video3DFormat video3DFormat() const; + void setVideo3DFormat(Video3DFormat newVideo3DFormat); + + QList mediaStreams() const; + void setMediaStreams(QList newMediaStreams); + + QList mediaAttachments() const; + void setMediaAttachments(QList newMediaAttachments); + + QStringList formats() const; + void setFormats(QStringList newFormats); + + qint32 bitrate() const; + void setBitrate(qint32 newBitrate); + + TransportStreamTimestamp timestamp() const; + void setTimestamp(TransportStreamTimestamp newTimestamp); + + QJsonObject requiredHttpHeaders() const; + void setRequiredHttpHeaders(QJsonObject newRequiredHttpHeaders); + + QString transcodingUrl() const; + void setTranscodingUrl(QString newTranscodingUrl); + + QString transcodingSubProtocol() const; + void setTranscodingSubProtocol(QString newTranscodingSubProtocol); + + QString transcodingContainer() const; + void setTranscodingContainer(QString newTranscodingContainer); + + qint32 analyzeDurationMs() const; + void setAnalyzeDurationMs(qint32 newAnalyzeDurationMs); + + qint32 defaultAudioStreamIndex() const; + void setDefaultAudioStreamIndex(qint32 newDefaultAudioStreamIndex); + + qint32 defaultSubtitleStreamIndex() const; + void setDefaultSubtitleStreamIndex(qint32 newDefaultSubtitleStreamIndex); + +signals: + void protocolChanged(MediaProtocol newProtocol); + void jellyfinIdChanged(QString newJellyfinId); + void pathChanged(QString newPath); + void encoderPathChanged(QString newEncoderPath); + void encoderProtocolChanged(MediaProtocol newEncoderProtocol); + void typeChanged(MediaSourceType newType); + void containerChanged(QString newContainer); + void sizeChanged(qint64 newSize); + void nameChanged(QString newName); + void isRemoteChanged(bool newIsRemote); + void eTagChanged(QString newETag); + void runTimeTicksChanged(qint64 newRunTimeTicks); + void readAtNativeFramerateChanged(bool newReadAtNativeFramerate); + void ignoreDtsChanged(bool newIgnoreDts); + void ignoreIndexChanged(bool newIgnoreIndex); + void genPtsInputChanged(bool newGenPtsInput); + void supportsTranscodingChanged(bool newSupportsTranscoding); + void supportsDirectStreamChanged(bool newSupportsDirectStream); + void supportsDirectPlayChanged(bool newSupportsDirectPlay); + void isInfiniteStreamChanged(bool newIsInfiniteStream); + void requiresOpeningChanged(bool newRequiresOpening); + void openTokenChanged(QString newOpenToken); + void requiresClosingChanged(bool newRequiresClosing); + void liveStreamIdChanged(QString newLiveStreamId); + void bufferMsChanged(qint32 newBufferMs); + void requiresLoopingChanged(bool newRequiresLooping); + void supportsProbingChanged(bool newSupportsProbing); + void videoTypeChanged(VideoType newVideoType); + void isoTypeChanged(IsoType newIsoType); + void video3DFormatChanged(Video3DFormat newVideo3DFormat); + void mediaStreamsChanged(QList newMediaStreams); + void mediaAttachmentsChanged(QList newMediaAttachments); + void formatsChanged(QStringList newFormats); + void bitrateChanged(qint32 newBitrate); + void timestampChanged(TransportStreamTimestamp newTimestamp); + void requiredHttpHeadersChanged(QJsonObject newRequiredHttpHeaders); + void transcodingUrlChanged(QString newTranscodingUrl); + void transcodingSubProtocolChanged(QString newTranscodingSubProtocol); + void transcodingContainerChanged(QString newTranscodingContainer); + void analyzeDurationMsChanged(qint32 newAnalyzeDurationMs); + void defaultAudioStreamIndexChanged(qint32 newDefaultAudioStreamIndex); + void defaultSubtitleStreamIndexChanged(qint32 newDefaultSubtitleStreamIndex); +protected: + MediaProtocol m_protocol; + QString m_jellyfinId; + QString m_path; + QString m_encoderPath; + MediaProtocol m_encoderProtocol; + MediaSourceType m_type; + QString m_container; + qint64 m_size; + QString m_name; + bool m_isRemote; + QString m_eTag; + qint64 m_runTimeTicks; + bool m_readAtNativeFramerate; + bool m_ignoreDts; + bool m_ignoreIndex; + bool m_genPtsInput; + bool m_supportsTranscoding; + bool m_supportsDirectStream; + bool m_supportsDirectPlay; + bool m_isInfiniteStream; + bool m_requiresOpening; + QString m_openToken; + bool m_requiresClosing; + QString m_liveStreamId; + qint32 m_bufferMs; + bool m_requiresLooping; + bool m_supportsProbing; + VideoType m_videoType; + IsoType m_isoType; + Video3DFormat m_video3DFormat; + QList m_mediaStreams; + QList m_mediaAttachments; + QStringList m_formats; + qint32 m_bitrate; + TransportStreamTimestamp m_timestamp; + QJsonObject m_requiredHttpHeaders; + QString m_transcodingUrl; + QString m_transcodingSubProtocol; + QString m_transcodingContainer; + qint32 m_analyzeDurationMs; + qint32 m_defaultAudioStreamIndex; + qint32 m_defaultSubtitleStreamIndex; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIASOURCEINFO_H diff --git a/core/include/JellyfinQt/DTO/mediasourcetype.h b/core/include/JellyfinQt/DTO/mediasourcetype.h new file mode 100644 index 0000000..0ef7fa1 --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediasourcetype.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIASOURCETYPE_H +#define JELLYFIN_DTO_MEDIASOURCETYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class MediaSourceTypeClass { + Q_GADGET +public: + enum Value { + Default, + Grouping, + Placeholder, + }; + Q_ENUM(Value) +private: + explicit MediaSourceTypeClass(); +}; +typedef MediaSourceTypeClass::Value MediaSourceType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIASOURCETYPE_H diff --git a/core/include/JellyfinQt/DTO/mediastream.h b/core/include/JellyfinQt/DTO/mediastream.h new file mode 100644 index 0000000..44e9922 --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediastream.h @@ -0,0 +1,455 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIASTREAM_H +#define JELLYFIN_DTO_MEDIASTREAM_H + +#include +#include +#include + +#include "JellyfinQt/DTO/mediastreamtype.h" +#include "JellyfinQt/DTO/subtitledeliverymethod.h" + +namespace Jellyfin { +namespace DTO { + +class MediaStream : public QObject { + Q_OBJECT +public: + explicit MediaStream(QObject *parent = nullptr); + static MediaStream *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the codec. + */ + Q_PROPERTY(QString codec READ codec WRITE setCodec NOTIFY codecChanged) + /** + * @brief Gets or sets the codec tag. + */ + Q_PROPERTY(QString codecTag READ codecTag WRITE setCodecTag NOTIFY codecTagChanged) + /** + * @brief Gets or sets the language. + */ + Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged) + /** + * @brief Gets or sets the color range. + */ + Q_PROPERTY(QString colorRange READ colorRange WRITE setColorRange NOTIFY colorRangeChanged) + /** + * @brief Gets or sets the color space. + */ + Q_PROPERTY(QString colorSpace READ colorSpace WRITE setColorSpace NOTIFY colorSpaceChanged) + /** + * @brief Gets or sets the color transfer. + */ + Q_PROPERTY(QString colorTransfer READ colorTransfer WRITE setColorTransfer NOTIFY colorTransferChanged) + /** + * @brief Gets or sets the color primaries. + */ + Q_PROPERTY(QString colorPrimaries READ colorPrimaries WRITE setColorPrimaries NOTIFY colorPrimariesChanged) + /** + * @brief Gets or sets the comment. + */ + Q_PROPERTY(QString comment READ comment WRITE setComment NOTIFY commentChanged) + /** + * @brief Gets or sets the time base. + */ + Q_PROPERTY(QString timeBase READ timeBase WRITE setTimeBase NOTIFY timeBaseChanged) + /** + * @brief Gets or sets the codec time base. + */ + Q_PROPERTY(QString codecTimeBase READ codecTimeBase WRITE setCodecTimeBase NOTIFY codecTimeBaseChanged) + /** + * @brief Gets or sets the title. + */ + Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged) + /** + * @brief Gets or sets the video range. + */ + Q_PROPERTY(QString videoRange READ videoRange WRITE setVideoRange NOTIFY videoRangeChanged) + Q_PROPERTY(QString localizedUndefined READ localizedUndefined WRITE setLocalizedUndefined NOTIFY localizedUndefinedChanged) + Q_PROPERTY(QString localizedDefault READ localizedDefault WRITE setLocalizedDefault NOTIFY localizedDefaultChanged) + Q_PROPERTY(QString localizedForced READ localizedForced WRITE setLocalizedForced NOTIFY localizedForcedChanged) + Q_PROPERTY(QString displayTitle READ displayTitle WRITE setDisplayTitle NOTIFY displayTitleChanged) + Q_PROPERTY(QString nalLengthSize READ nalLengthSize WRITE setNalLengthSize NOTIFY nalLengthSizeChanged) + /** + * @brief Gets or sets a value indicating whether this instance is interlaced. + */ + Q_PROPERTY(bool isInterlaced READ isInterlaced WRITE setIsInterlaced NOTIFY isInterlacedChanged) + Q_PROPERTY(bool isAVC READ isAVC WRITE setIsAVC NOTIFY isAVCChanged) + /** + * @brief Gets or sets the channel layout. + */ + Q_PROPERTY(QString channelLayout READ channelLayout WRITE setChannelLayout NOTIFY channelLayoutChanged) + /** + * @brief Gets or sets the bit rate. + */ + Q_PROPERTY(qint32 bitRate READ bitRate WRITE setBitRate NOTIFY bitRateChanged) + /** + * @brief Gets or sets the bit depth. + */ + Q_PROPERTY(qint32 bitDepth READ bitDepth WRITE setBitDepth NOTIFY bitDepthChanged) + /** + * @brief Gets or sets the reference frames. + */ + Q_PROPERTY(qint32 refFrames READ refFrames WRITE setRefFrames NOTIFY refFramesChanged) + /** + * @brief Gets or sets the length of the packet. + */ + Q_PROPERTY(qint32 packetLength READ packetLength WRITE setPacketLength NOTIFY packetLengthChanged) + /** + * @brief Gets or sets the channels. + */ + Q_PROPERTY(qint32 channels READ channels WRITE setChannels NOTIFY channelsChanged) + /** + * @brief Gets or sets the sample rate. + */ + Q_PROPERTY(qint32 sampleRate READ sampleRate WRITE setSampleRate NOTIFY sampleRateChanged) + /** + * @brief Gets or sets a value indicating whether this instance is default. + */ + Q_PROPERTY(bool isDefault READ isDefault WRITE setIsDefault NOTIFY isDefaultChanged) + /** + * @brief Gets or sets a value indicating whether this instance is forced. + */ + Q_PROPERTY(bool isForced READ isForced WRITE setIsForced NOTIFY isForcedChanged) + /** + * @brief Gets or sets the height. + */ + Q_PROPERTY(qint32 height READ height WRITE setHeight NOTIFY heightChanged) + /** + * @brief Gets or sets the width. + */ + Q_PROPERTY(qint32 width READ width WRITE setWidth NOTIFY widthChanged) + /** + * @brief Gets or sets the average frame rate. + */ + Q_PROPERTY(float averageFrameRate READ averageFrameRate WRITE setAverageFrameRate NOTIFY averageFrameRateChanged) + /** + * @brief Gets or sets the real frame rate. + */ + Q_PROPERTY(float realFrameRate READ realFrameRate WRITE setRealFrameRate NOTIFY realFrameRateChanged) + /** + * @brief Gets or sets the profile. + */ + Q_PROPERTY(QString profile READ profile WRITE setProfile NOTIFY profileChanged) + Q_PROPERTY(MediaStreamType type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets or sets the aspect ratio. + */ + Q_PROPERTY(QString aspectRatio READ aspectRatio WRITE setAspectRatio NOTIFY aspectRatioChanged) + /** + * @brief Gets or sets the index. + */ + Q_PROPERTY(qint32 index READ index WRITE setIndex NOTIFY indexChanged) + /** + * @brief Gets or sets the score. + */ + Q_PROPERTY(qint32 score READ score WRITE setScore NOTIFY scoreChanged) + /** + * @brief Gets or sets a value indicating whether this instance is external. + */ + Q_PROPERTY(bool isExternal READ isExternal WRITE setIsExternal NOTIFY isExternalChanged) + Q_PROPERTY(SubtitleDeliveryMethod deliveryMethod READ deliveryMethod WRITE setDeliveryMethod NOTIFY deliveryMethodChanged) + /** + * @brief Gets or sets the delivery URL. + */ + Q_PROPERTY(QString deliveryUrl READ deliveryUrl WRITE setDeliveryUrl NOTIFY deliveryUrlChanged) + /** + * @brief Gets or sets a value indicating whether this instance is external URL. + */ + Q_PROPERTY(bool isExternalUrl READ isExternalUrl WRITE setIsExternalUrl NOTIFY isExternalUrlChanged) + Q_PROPERTY(bool isTextSubtitleStream READ isTextSubtitleStream WRITE setIsTextSubtitleStream NOTIFY isTextSubtitleStreamChanged) + /** + * @brief Gets or sets a value indicating whether [supports external stream]. + */ + Q_PROPERTY(bool supportsExternalStream READ supportsExternalStream WRITE setSupportsExternalStream NOTIFY supportsExternalStreamChanged) + /** + * @brief Gets or sets the filename. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the pixel format. + */ + Q_PROPERTY(QString pixelFormat READ pixelFormat WRITE setPixelFormat NOTIFY pixelFormatChanged) + /** + * @brief Gets or sets the level. + */ + Q_PROPERTY(double level READ level WRITE setLevel NOTIFY levelChanged) + /** + * @brief Gets a value indicating whether this instance is anamorphic. + */ + Q_PROPERTY(bool isAnamorphic READ isAnamorphic WRITE setIsAnamorphic NOTIFY isAnamorphicChanged) + + QString codec() const; + void setCodec(QString newCodec); + + QString codecTag() const; + void setCodecTag(QString newCodecTag); + + QString language() const; + void setLanguage(QString newLanguage); + + QString colorRange() const; + void setColorRange(QString newColorRange); + + QString colorSpace() const; + void setColorSpace(QString newColorSpace); + + QString colorTransfer() const; + void setColorTransfer(QString newColorTransfer); + + QString colorPrimaries() const; + void setColorPrimaries(QString newColorPrimaries); + + QString comment() const; + void setComment(QString newComment); + + QString timeBase() const; + void setTimeBase(QString newTimeBase); + + QString codecTimeBase() const; + void setCodecTimeBase(QString newCodecTimeBase); + + QString title() const; + void setTitle(QString newTitle); + + QString videoRange() const; + void setVideoRange(QString newVideoRange); + + QString localizedUndefined() const; + void setLocalizedUndefined(QString newLocalizedUndefined); + + QString localizedDefault() const; + void setLocalizedDefault(QString newLocalizedDefault); + + QString localizedForced() const; + void setLocalizedForced(QString newLocalizedForced); + + QString displayTitle() const; + void setDisplayTitle(QString newDisplayTitle); + + QString nalLengthSize() const; + void setNalLengthSize(QString newNalLengthSize); + + bool isInterlaced() const; + void setIsInterlaced(bool newIsInterlaced); + + bool isAVC() const; + void setIsAVC(bool newIsAVC); + + QString channelLayout() const; + void setChannelLayout(QString newChannelLayout); + + qint32 bitRate() const; + void setBitRate(qint32 newBitRate); + + qint32 bitDepth() const; + void setBitDepth(qint32 newBitDepth); + + qint32 refFrames() const; + void setRefFrames(qint32 newRefFrames); + + qint32 packetLength() const; + void setPacketLength(qint32 newPacketLength); + + qint32 channels() const; + void setChannels(qint32 newChannels); + + qint32 sampleRate() const; + void setSampleRate(qint32 newSampleRate); + + bool isDefault() const; + void setIsDefault(bool newIsDefault); + + bool isForced() const; + void setIsForced(bool newIsForced); + + qint32 height() const; + void setHeight(qint32 newHeight); + + qint32 width() const; + void setWidth(qint32 newWidth); + + float averageFrameRate() const; + void setAverageFrameRate(float newAverageFrameRate); + + float realFrameRate() const; + void setRealFrameRate(float newRealFrameRate); + + QString profile() const; + void setProfile(QString newProfile); + + MediaStreamType type() const; + void setType(MediaStreamType newType); + + QString aspectRatio() const; + void setAspectRatio(QString newAspectRatio); + + qint32 index() const; + void setIndex(qint32 newIndex); + + qint32 score() const; + void setScore(qint32 newScore); + + bool isExternal() const; + void setIsExternal(bool newIsExternal); + + SubtitleDeliveryMethod deliveryMethod() const; + void setDeliveryMethod(SubtitleDeliveryMethod newDeliveryMethod); + + QString deliveryUrl() const; + void setDeliveryUrl(QString newDeliveryUrl); + + bool isExternalUrl() const; + void setIsExternalUrl(bool newIsExternalUrl); + + bool isTextSubtitleStream() const; + void setIsTextSubtitleStream(bool newIsTextSubtitleStream); + + bool supportsExternalStream() const; + void setSupportsExternalStream(bool newSupportsExternalStream); + + QString path() const; + void setPath(QString newPath); + + QString pixelFormat() const; + void setPixelFormat(QString newPixelFormat); + + double level() const; + void setLevel(double newLevel); + + bool isAnamorphic() const; + void setIsAnamorphic(bool newIsAnamorphic); + +signals: + void codecChanged(QString newCodec); + void codecTagChanged(QString newCodecTag); + void languageChanged(QString newLanguage); + void colorRangeChanged(QString newColorRange); + void colorSpaceChanged(QString newColorSpace); + void colorTransferChanged(QString newColorTransfer); + void colorPrimariesChanged(QString newColorPrimaries); + void commentChanged(QString newComment); + void timeBaseChanged(QString newTimeBase); + void codecTimeBaseChanged(QString newCodecTimeBase); + void titleChanged(QString newTitle); + void videoRangeChanged(QString newVideoRange); + void localizedUndefinedChanged(QString newLocalizedUndefined); + void localizedDefaultChanged(QString newLocalizedDefault); + void localizedForcedChanged(QString newLocalizedForced); + void displayTitleChanged(QString newDisplayTitle); + void nalLengthSizeChanged(QString newNalLengthSize); + void isInterlacedChanged(bool newIsInterlaced); + void isAVCChanged(bool newIsAVC); + void channelLayoutChanged(QString newChannelLayout); + void bitRateChanged(qint32 newBitRate); + void bitDepthChanged(qint32 newBitDepth); + void refFramesChanged(qint32 newRefFrames); + void packetLengthChanged(qint32 newPacketLength); + void channelsChanged(qint32 newChannels); + void sampleRateChanged(qint32 newSampleRate); + void isDefaultChanged(bool newIsDefault); + void isForcedChanged(bool newIsForced); + void heightChanged(qint32 newHeight); + void widthChanged(qint32 newWidth); + void averageFrameRateChanged(float newAverageFrameRate); + void realFrameRateChanged(float newRealFrameRate); + void profileChanged(QString newProfile); + void typeChanged(MediaStreamType newType); + void aspectRatioChanged(QString newAspectRatio); + void indexChanged(qint32 newIndex); + void scoreChanged(qint32 newScore); + void isExternalChanged(bool newIsExternal); + void deliveryMethodChanged(SubtitleDeliveryMethod newDeliveryMethod); + void deliveryUrlChanged(QString newDeliveryUrl); + void isExternalUrlChanged(bool newIsExternalUrl); + void isTextSubtitleStreamChanged(bool newIsTextSubtitleStream); + void supportsExternalStreamChanged(bool newSupportsExternalStream); + void pathChanged(QString newPath); + void pixelFormatChanged(QString newPixelFormat); + void levelChanged(double newLevel); + void isAnamorphicChanged(bool newIsAnamorphic); +protected: + QString m_codec; + QString m_codecTag; + QString m_language; + QString m_colorRange; + QString m_colorSpace; + QString m_colorTransfer; + QString m_colorPrimaries; + QString m_comment; + QString m_timeBase; + QString m_codecTimeBase; + QString m_title; + QString m_videoRange; + QString m_localizedUndefined; + QString m_localizedDefault; + QString m_localizedForced; + QString m_displayTitle; + QString m_nalLengthSize; + bool m_isInterlaced; + bool m_isAVC; + QString m_channelLayout; + qint32 m_bitRate; + qint32 m_bitDepth; + qint32 m_refFrames; + qint32 m_packetLength; + qint32 m_channels; + qint32 m_sampleRate; + bool m_isDefault; + bool m_isForced; + qint32 m_height; + qint32 m_width; + float m_averageFrameRate; + float m_realFrameRate; + QString m_profile; + MediaStreamType m_type; + QString m_aspectRatio; + qint32 m_index; + qint32 m_score; + bool m_isExternal; + SubtitleDeliveryMethod m_deliveryMethod; + QString m_deliveryUrl; + bool m_isExternalUrl; + bool m_isTextSubtitleStream; + bool m_supportsExternalStream; + QString m_path; + QString m_pixelFormat; + double m_level; + bool m_isAnamorphic; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIASTREAM_H diff --git a/core/include/JellyfinQt/DTO/mediastreamtype.h b/core/include/JellyfinQt/DTO/mediastreamtype.h new file mode 100644 index 0000000..98f9c3e --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediastreamtype.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIASTREAMTYPE_H +#define JELLYFIN_DTO_MEDIASTREAMTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class MediaStreamTypeClass { + Q_GADGET +public: + enum Value { + Audio, + Video, + Subtitle, + EmbeddedImage, + }; + Q_ENUM(Value) +private: + explicit MediaStreamTypeClass(); +}; +typedef MediaStreamTypeClass::Value MediaStreamType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIASTREAMTYPE_H diff --git a/core/include/JellyfinQt/DTO/mediaupdateinfodto.h b/core/include/JellyfinQt/DTO/mediaupdateinfodto.h new file mode 100644 index 0000000..16024da --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediaupdateinfodto.h @@ -0,0 +1,75 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIAUPDATEINFODTO_H +#define JELLYFIN_DTO_MEDIAUPDATEINFODTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MediaUpdateInfoDto : public QObject { + Q_OBJECT +public: + explicit MediaUpdateInfoDto(QObject *parent = nullptr); + static MediaUpdateInfoDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets media path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets media update type. +Created, Modified, Deleted. + */ + Q_PROPERTY(QString updateType READ updateType WRITE setUpdateType NOTIFY updateTypeChanged) + + QString path() const; + void setPath(QString newPath); + + QString updateType() const; + void setUpdateType(QString newUpdateType); + +signals: + void pathChanged(QString newPath); + void updateTypeChanged(QString newUpdateType); +protected: + QString m_path; + QString m_updateType; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIAUPDATEINFODTO_H diff --git a/core/include/JellyfinQt/DTO/mediaurl.h b/core/include/JellyfinQt/DTO/mediaurl.h new file mode 100644 index 0000000..60c7204 --- /dev/null +++ b/core/include/JellyfinQt/DTO/mediaurl.h @@ -0,0 +1,68 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MEDIAURL_H +#define JELLYFIN_DTO_MEDIAURL_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MediaUrl : public QObject { + Q_OBJECT +public: + explicit MediaUrl(QObject *parent = nullptr); + static MediaUrl *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + + QString url() const; + void setUrl(QString newUrl); + + QString name() const; + void setName(QString newName); + +signals: + void urlChanged(QString newUrl); + void nameChanged(QString newName); +protected: + QString m_url; + QString m_name; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MEDIAURL_H diff --git a/core/include/JellyfinQt/DTO/metadataeditorinfo.h b/core/include/JellyfinQt/DTO/metadataeditorinfo.h new file mode 100644 index 0000000..66178c2 --- /dev/null +++ b/core/include/JellyfinQt/DTO/metadataeditorinfo.h @@ -0,0 +1,100 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_METADATAEDITORINFO_H +#define JELLYFIN_DTO_METADATAEDITORINFO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class CountryInfo; +class CultureDto; +class ExternalIdInfo; +class NameValuePair; +class ParentalRating; + +class MetadataEditorInfo : public QObject { + Q_OBJECT +public: + explicit MetadataEditorInfo(QObject *parent = nullptr); + static MetadataEditorInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QList parentalRatingOptions READ parentalRatingOptions WRITE setParentalRatingOptions NOTIFY parentalRatingOptionsChanged) + Q_PROPERTY(QList countries READ countries WRITE setCountries NOTIFY countriesChanged) + Q_PROPERTY(QList cultures READ cultures WRITE setCultures NOTIFY culturesChanged) + Q_PROPERTY(QList externalIdInfos READ externalIdInfos WRITE setExternalIdInfos NOTIFY externalIdInfosChanged) + Q_PROPERTY(QString contentType READ contentType WRITE setContentType NOTIFY contentTypeChanged) + Q_PROPERTY(QList contentTypeOptions READ contentTypeOptions WRITE setContentTypeOptions NOTIFY contentTypeOptionsChanged) + + QList parentalRatingOptions() const; + void setParentalRatingOptions(QList newParentalRatingOptions); + + QList countries() const; + void setCountries(QList newCountries); + + QList cultures() const; + void setCultures(QList newCultures); + + QList externalIdInfos() const; + void setExternalIdInfos(QList newExternalIdInfos); + + QString contentType() const; + void setContentType(QString newContentType); + + QList contentTypeOptions() const; + void setContentTypeOptions(QList newContentTypeOptions); + +signals: + void parentalRatingOptionsChanged(QList newParentalRatingOptions); + void countriesChanged(QList newCountries); + void culturesChanged(QList newCultures); + void externalIdInfosChanged(QList newExternalIdInfos); + void contentTypeChanged(QString newContentType); + void contentTypeOptionsChanged(QList newContentTypeOptions); +protected: + QList m_parentalRatingOptions; + QList m_countries; + QList m_cultures; + QList m_externalIdInfos; + QString m_contentType; + QList m_contentTypeOptions; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_METADATAEDITORINFO_H diff --git a/core/include/JellyfinQt/DTO/metadatafield.h b/core/include/JellyfinQt/DTO/metadatafield.h new file mode 100644 index 0000000..7ebcfd7 --- /dev/null +++ b/core/include/JellyfinQt/DTO/metadatafield.h @@ -0,0 +1,61 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_METADATAFIELD_H +#define JELLYFIN_DTO_METADATAFIELD_H + +#include + +namespace Jellyfin { +namespace DTO { + +class MetadataFieldClass { + Q_GADGET +public: + enum Value { + Cast, + Genres, + ProductionLocations, + Studios, + Tags, + Name, + Overview, + Runtime, + OfficialRating, + }; + Q_ENUM(Value) +private: + explicit MetadataFieldClass(); +}; +typedef MetadataFieldClass::Value MetadataField; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_METADATAFIELD_H diff --git a/core/include/JellyfinQt/DTO/metadataoptions.h b/core/include/JellyfinQt/DTO/metadataoptions.h new file mode 100644 index 0000000..72e7959 --- /dev/null +++ b/core/include/JellyfinQt/DTO/metadataoptions.h @@ -0,0 +1,100 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_METADATAOPTIONS_H +#define JELLYFIN_DTO_METADATAOPTIONS_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MetadataOptions : public QObject { + Q_OBJECT +public: + explicit MetadataOptions(QObject *parent = nullptr); + static MetadataOptions *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString itemType READ itemType WRITE setItemType NOTIFY itemTypeChanged) + Q_PROPERTY(QStringList disabledMetadataSavers READ disabledMetadataSavers WRITE setDisabledMetadataSavers NOTIFY disabledMetadataSaversChanged) + Q_PROPERTY(QStringList localMetadataReaderOrder READ localMetadataReaderOrder WRITE setLocalMetadataReaderOrder NOTIFY localMetadataReaderOrderChanged) + Q_PROPERTY(QStringList disabledMetadataFetchers READ disabledMetadataFetchers WRITE setDisabledMetadataFetchers NOTIFY disabledMetadataFetchersChanged) + Q_PROPERTY(QStringList metadataFetcherOrder READ metadataFetcherOrder WRITE setMetadataFetcherOrder NOTIFY metadataFetcherOrderChanged) + Q_PROPERTY(QStringList disabledImageFetchers READ disabledImageFetchers WRITE setDisabledImageFetchers NOTIFY disabledImageFetchersChanged) + Q_PROPERTY(QStringList imageFetcherOrder READ imageFetcherOrder WRITE setImageFetcherOrder NOTIFY imageFetcherOrderChanged) + + QString itemType() const; + void setItemType(QString newItemType); + + QStringList disabledMetadataSavers() const; + void setDisabledMetadataSavers(QStringList newDisabledMetadataSavers); + + QStringList localMetadataReaderOrder() const; + void setLocalMetadataReaderOrder(QStringList newLocalMetadataReaderOrder); + + QStringList disabledMetadataFetchers() const; + void setDisabledMetadataFetchers(QStringList newDisabledMetadataFetchers); + + QStringList metadataFetcherOrder() const; + void setMetadataFetcherOrder(QStringList newMetadataFetcherOrder); + + QStringList disabledImageFetchers() const; + void setDisabledImageFetchers(QStringList newDisabledImageFetchers); + + QStringList imageFetcherOrder() const; + void setImageFetcherOrder(QStringList newImageFetcherOrder); + +signals: + void itemTypeChanged(QString newItemType); + void disabledMetadataSaversChanged(QStringList newDisabledMetadataSavers); + void localMetadataReaderOrderChanged(QStringList newLocalMetadataReaderOrder); + void disabledMetadataFetchersChanged(QStringList newDisabledMetadataFetchers); + void metadataFetcherOrderChanged(QStringList newMetadataFetcherOrder); + void disabledImageFetchersChanged(QStringList newDisabledImageFetchers); + void imageFetcherOrderChanged(QStringList newImageFetcherOrder); +protected: + QString m_itemType; + QStringList m_disabledMetadataSavers; + QStringList m_localMetadataReaderOrder; + QStringList m_disabledMetadataFetchers; + QStringList m_metadataFetcherOrder; + QStringList m_disabledImageFetchers; + QStringList m_imageFetcherOrder; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_METADATAOPTIONS_H diff --git a/core/include/JellyfinQt/DTO/metadatarefreshmode.h b/core/include/JellyfinQt/DTO/metadatarefreshmode.h new file mode 100644 index 0000000..278d2f1 --- /dev/null +++ b/core/include/JellyfinQt/DTO/metadatarefreshmode.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_METADATAREFRESHMODE_H +#define JELLYFIN_DTO_METADATAREFRESHMODE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class MetadataRefreshModeClass { + Q_GADGET +public: + enum Value { + None, + ValidationOnly, + Default, + FullRefresh, + }; + Q_ENUM(Value) +private: + explicit MetadataRefreshModeClass(); +}; +typedef MetadataRefreshModeClass::Value MetadataRefreshMode; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_METADATAREFRESHMODE_H diff --git a/core/include/JellyfinQt/DTO/moveplaylistitemrequestdto.h b/core/include/JellyfinQt/DTO/moveplaylistitemrequestdto.h new file mode 100644 index 0000000..5fdd48a --- /dev/null +++ b/core/include/JellyfinQt/DTO/moveplaylistitemrequestdto.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MOVEPLAYLISTITEMREQUESTDTO_H +#define JELLYFIN_DTO_MOVEPLAYLISTITEMREQUESTDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MovePlaylistItemRequestDto : public QObject { + Q_OBJECT +public: + explicit MovePlaylistItemRequestDto(QObject *parent = nullptr); + static MovePlaylistItemRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the playlist identifier of the item. + */ + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + /** + * @brief Gets or sets the new position. + */ + Q_PROPERTY(qint32 newIndex READ newIndex WRITE setNewIndex NOTIFY newIndexChanged) + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + + qint32 newIndex() const; + void setNewIndex(qint32 newNewIndex); + +signals: + void playlistItemIdChanged(QString newPlaylistItemId); + void newIndexChanged(qint32 newNewIndex); +protected: + QString m_playlistItemId; + qint32 m_newIndex; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MOVEPLAYLISTITEMREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/movieinfo.h b/core/include/JellyfinQt/DTO/movieinfo.h new file mode 100644 index 0000000..050644b --- /dev/null +++ b/core/include/JellyfinQt/DTO/movieinfo.h @@ -0,0 +1,135 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MOVIEINFO_H +#define JELLYFIN_DTO_MOVIEINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MovieInfo : public QObject { + Q_OBJECT +public: + explicit MovieInfo(QObject *parent = nullptr); + static MovieInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the metadata language. + */ + Q_PROPERTY(QString metadataLanguage READ metadataLanguage WRITE setMetadataLanguage NOTIFY metadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 year READ year WRITE setYear NOTIFY yearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(bool isAutomated READ isAutomated WRITE setIsAutomated NOTIFY isAutomatedChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + QString metadataLanguage() const; + void setMetadataLanguage(QString newMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 year() const; + void setYear(qint32 newYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + bool isAutomated() const; + void setIsAutomated(bool newIsAutomated); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void metadataLanguageChanged(QString newMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void providerIdsChanged(QJsonObject newProviderIds); + void yearChanged(qint32 newYear); + void indexNumberChanged(qint32 newIndexNumber); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void isAutomatedChanged(bool newIsAutomated); +protected: + QString m_name; + QString m_path; + QString m_metadataLanguage; + QString m_metadataCountryCode; + QJsonObject m_providerIds; + qint32 m_year; + qint32 m_indexNumber; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + bool m_isAutomated; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MOVIEINFO_H diff --git a/core/include/JellyfinQt/DTO/movieinforemotesearchquery.h b/core/include/JellyfinQt/DTO/movieinforemotesearchquery.h new file mode 100644 index 0000000..cccede8 --- /dev/null +++ b/core/include/JellyfinQt/DTO/movieinforemotesearchquery.h @@ -0,0 +1,88 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MOVIEINFOREMOTESEARCHQUERY_H +#define JELLYFIN_DTO_MOVIEINFOREMOTESEARCHQUERY_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MovieInfo; + +class MovieInfoRemoteSearchQuery : public QObject { + Q_OBJECT +public: + explicit MovieInfoRemoteSearchQuery(QObject *parent = nullptr); + static MovieInfoRemoteSearchQuery *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(MovieInfo * searchInfo READ searchInfo WRITE setSearchInfo NOTIFY searchInfoChanged) + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Will only search within the given provider when set. + */ + Q_PROPERTY(QString searchProviderName READ searchProviderName WRITE setSearchProviderName NOTIFY searchProviderNameChanged) + /** + * @brief Gets or sets a value indicating whether disabled providers should be included. + */ + Q_PROPERTY(bool includeDisabledProviders READ includeDisabledProviders WRITE setIncludeDisabledProviders NOTIFY includeDisabledProvidersChanged) + + MovieInfo * searchInfo() const; + void setSearchInfo(MovieInfo * newSearchInfo); + + QString itemId() const; + void setItemId(QString newItemId); + + QString searchProviderName() const; + void setSearchProviderName(QString newSearchProviderName); + + bool includeDisabledProviders() const; + void setIncludeDisabledProviders(bool newIncludeDisabledProviders); + +signals: + void searchInfoChanged(MovieInfo * newSearchInfo); + void itemIdChanged(QString newItemId); + void searchProviderNameChanged(QString newSearchProviderName); + void includeDisabledProvidersChanged(bool newIncludeDisabledProviders); +protected: + MovieInfo * m_searchInfo = nullptr; + QString m_itemId; + QString m_searchProviderName; + bool m_includeDisabledProviders; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MOVIEINFOREMOTESEARCHQUERY_H diff --git a/core/include/JellyfinQt/DTO/musicvideoinfo.h b/core/include/JellyfinQt/DTO/musicvideoinfo.h new file mode 100644 index 0000000..7418a27 --- /dev/null +++ b/core/include/JellyfinQt/DTO/musicvideoinfo.h @@ -0,0 +1,143 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MUSICVIDEOINFO_H +#define JELLYFIN_DTO_MUSICVIDEOINFO_H + +#include +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MusicVideoInfo : public QObject { + Q_OBJECT +public: + explicit MusicVideoInfo(QObject *parent = nullptr); + static MusicVideoInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the metadata language. + */ + Q_PROPERTY(QString metadataLanguage READ metadataLanguage WRITE setMetadataLanguage NOTIFY metadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 year READ year WRITE setYear NOTIFY yearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(bool isAutomated READ isAutomated WRITE setIsAutomated NOTIFY isAutomatedChanged) + Q_PROPERTY(QStringList artists READ artists WRITE setArtists NOTIFY artistsChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + QString metadataLanguage() const; + void setMetadataLanguage(QString newMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 year() const; + void setYear(qint32 newYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + bool isAutomated() const; + void setIsAutomated(bool newIsAutomated); + + QStringList artists() const; + void setArtists(QStringList newArtists); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void metadataLanguageChanged(QString newMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void providerIdsChanged(QJsonObject newProviderIds); + void yearChanged(qint32 newYear); + void indexNumberChanged(qint32 newIndexNumber); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void isAutomatedChanged(bool newIsAutomated); + void artistsChanged(QStringList newArtists); +protected: + QString m_name; + QString m_path; + QString m_metadataLanguage; + QString m_metadataCountryCode; + QJsonObject m_providerIds; + qint32 m_year; + qint32 m_indexNumber; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + bool m_isAutomated; + QStringList m_artists; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MUSICVIDEOINFO_H diff --git a/core/include/JellyfinQt/DTO/musicvideoinforemotesearchquery.h b/core/include/JellyfinQt/DTO/musicvideoinforemotesearchquery.h new file mode 100644 index 0000000..e6cc277 --- /dev/null +++ b/core/include/JellyfinQt/DTO/musicvideoinforemotesearchquery.h @@ -0,0 +1,88 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_MUSICVIDEOINFOREMOTESEARCHQUERY_H +#define JELLYFIN_DTO_MUSICVIDEOINFOREMOTESEARCHQUERY_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class MusicVideoInfo; + +class MusicVideoInfoRemoteSearchQuery : public QObject { + Q_OBJECT +public: + explicit MusicVideoInfoRemoteSearchQuery(QObject *parent = nullptr); + static MusicVideoInfoRemoteSearchQuery *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(MusicVideoInfo * searchInfo READ searchInfo WRITE setSearchInfo NOTIFY searchInfoChanged) + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Will only search within the given provider when set. + */ + Q_PROPERTY(QString searchProviderName READ searchProviderName WRITE setSearchProviderName NOTIFY searchProviderNameChanged) + /** + * @brief Gets or sets a value indicating whether disabled providers should be included. + */ + Q_PROPERTY(bool includeDisabledProviders READ includeDisabledProviders WRITE setIncludeDisabledProviders NOTIFY includeDisabledProvidersChanged) + + MusicVideoInfo * searchInfo() const; + void setSearchInfo(MusicVideoInfo * newSearchInfo); + + QString itemId() const; + void setItemId(QString newItemId); + + QString searchProviderName() const; + void setSearchProviderName(QString newSearchProviderName); + + bool includeDisabledProviders() const; + void setIncludeDisabledProviders(bool newIncludeDisabledProviders); + +signals: + void searchInfoChanged(MusicVideoInfo * newSearchInfo); + void itemIdChanged(QString newItemId); + void searchProviderNameChanged(QString newSearchProviderName); + void includeDisabledProvidersChanged(bool newIncludeDisabledProviders); +protected: + MusicVideoInfo * m_searchInfo = nullptr; + QString m_itemId; + QString m_searchProviderName; + bool m_includeDisabledProviders; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_MUSICVIDEOINFOREMOTESEARCHQUERY_H diff --git a/core/include/JellyfinQt/DTO/nameguidpair.h b/core/include/JellyfinQt/DTO/nameguidpair.h new file mode 100644 index 0000000..ba935f5 --- /dev/null +++ b/core/include/JellyfinQt/DTO/nameguidpair.h @@ -0,0 +1,68 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_NAMEGUIDPAIR_H +#define JELLYFIN_DTO_NAMEGUIDPAIR_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class NameGuidPair : public QObject { + Q_OBJECT +public: + explicit NameGuidPair(QObject *parent = nullptr); + static NameGuidPair *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + + QString name() const; + void setName(QString newName); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + +signals: + void nameChanged(QString newName); + void jellyfinIdChanged(QString newJellyfinId); +protected: + QString m_name; + QString m_jellyfinId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_NAMEGUIDPAIR_H diff --git a/core/include/JellyfinQt/DTO/nameidpair.h b/core/include/JellyfinQt/DTO/nameidpair.h new file mode 100644 index 0000000..02ffb9b --- /dev/null +++ b/core/include/JellyfinQt/DTO/nameidpair.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_NAMEIDPAIR_H +#define JELLYFIN_DTO_NAMEIDPAIR_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class NameIdPair : public QObject { + Q_OBJECT +public: + explicit NameIdPair(QObject *parent = nullptr); + static NameIdPair *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the identifier. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + + QString name() const; + void setName(QString newName); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + +signals: + void nameChanged(QString newName); + void jellyfinIdChanged(QString newJellyfinId); +protected: + QString m_name; + QString m_jellyfinId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_NAMEIDPAIR_H diff --git a/core/include/JellyfinQt/DTO/namevaluepair.h b/core/include/JellyfinQt/DTO/namevaluepair.h new file mode 100644 index 0000000..cb9088c --- /dev/null +++ b/core/include/JellyfinQt/DTO/namevaluepair.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_NAMEVALUEPAIR_H +#define JELLYFIN_DTO_NAMEVALUEPAIR_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class NameValuePair : public QObject { + Q_OBJECT +public: + explicit NameValuePair(QObject *parent = nullptr); + static NameValuePair *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the value. + */ + Q_PROPERTY(QString value READ value WRITE setValue NOTIFY valueChanged) + + QString name() const; + void setName(QString newName); + + QString value() const; + void setValue(QString newValue); + +signals: + void nameChanged(QString newName); + void valueChanged(QString newValue); +protected: + QString m_name; + QString m_value; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_NAMEVALUEPAIR_H diff --git a/core/include/JellyfinQt/DTO/newgrouprequestdto.h b/core/include/JellyfinQt/DTO/newgrouprequestdto.h new file mode 100644 index 0000000..2b85dca --- /dev/null +++ b/core/include/JellyfinQt/DTO/newgrouprequestdto.h @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_NEWGROUPREQUESTDTO_H +#define JELLYFIN_DTO_NEWGROUPREQUESTDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class NewGroupRequestDto : public QObject { + Q_OBJECT +public: + explicit NewGroupRequestDto(QObject *parent = nullptr); + static NewGroupRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the group name. + */ + Q_PROPERTY(QString groupName READ groupName WRITE setGroupName NOTIFY groupNameChanged) + + QString groupName() const; + void setGroupName(QString newGroupName); + +signals: + void groupNameChanged(QString newGroupName); +protected: + QString m_groupName; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_NEWGROUPREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/nextitemrequestdto.h b/core/include/JellyfinQt/DTO/nextitemrequestdto.h new file mode 100644 index 0000000..b9e1998 --- /dev/null +++ b/core/include/JellyfinQt/DTO/nextitemrequestdto.h @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_NEXTITEMREQUESTDTO_H +#define JELLYFIN_DTO_NEXTITEMREQUESTDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class NextItemRequestDto : public QObject { + Q_OBJECT +public: + explicit NextItemRequestDto(QObject *parent = nullptr); + static NextItemRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the playing item identifier. + */ + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + +signals: + void playlistItemIdChanged(QString newPlaylistItemId); +protected: + QString m_playlistItemId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_NEXTITEMREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/notificationdto.h b/core/include/JellyfinQt/DTO/notificationdto.h new file mode 100644 index 0000000..db93416 --- /dev/null +++ b/core/include/JellyfinQt/DTO/notificationdto.h @@ -0,0 +1,128 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_NOTIFICATIONDTO_H +#define JELLYFIN_DTO_NOTIFICATIONDTO_H + +#include +#include +#include +#include + +#include "JellyfinQt/DTO/notificationlevel.h" + +namespace Jellyfin { +namespace DTO { + +class NotificationDto : public QObject { + Q_OBJECT +public: + explicit NotificationDto(QObject *parent = nullptr); + static NotificationDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the notification ID. Defaults to an empty string. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the notification's user ID. Defaults to an empty string. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + /** + * @brief Gets or sets the notification date. + */ + Q_PROPERTY(QDateTime date READ date WRITE setDate NOTIFY dateChanged) + /** + * @brief Gets or sets a value indicating whether the notification has been read. Defaults to false. + */ + Q_PROPERTY(bool isRead READ isRead WRITE setIsRead NOTIFY isReadChanged) + /** + * @brief Gets or sets the notification's name. Defaults to an empty string. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the notification's description. Defaults to an empty string. + */ + Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY descriptionChanged) + /** + * @brief Gets or sets the notification's URL. Defaults to an empty string. + */ + Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(NotificationLevel level READ level WRITE setLevel NOTIFY levelChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString userId() const; + void setUserId(QString newUserId); + + QDateTime date() const; + void setDate(QDateTime newDate); + + bool isRead() const; + void setIsRead(bool newIsRead); + + QString name() const; + void setName(QString newName); + + QString description() const; + void setDescription(QString newDescription); + + QString url() const; + void setUrl(QString newUrl); + + NotificationLevel level() const; + void setLevel(NotificationLevel newLevel); + +signals: + void jellyfinIdChanged(QString newJellyfinId); + void userIdChanged(QString newUserId); + void dateChanged(QDateTime newDate); + void isReadChanged(bool newIsRead); + void nameChanged(QString newName); + void descriptionChanged(QString newDescription); + void urlChanged(QString newUrl); + void levelChanged(NotificationLevel newLevel); +protected: + QString m_jellyfinId; + QString m_userId; + QDateTime m_date; + bool m_isRead; + QString m_name; + QString m_description; + QString m_url; + NotificationLevel m_level; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_NOTIFICATIONDTO_H diff --git a/core/include/JellyfinQt/DTO/notificationlevel.h b/core/include/JellyfinQt/DTO/notificationlevel.h new file mode 100644 index 0000000..50c1e5c --- /dev/null +++ b/core/include/JellyfinQt/DTO/notificationlevel.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_NOTIFICATIONLEVEL_H +#define JELLYFIN_DTO_NOTIFICATIONLEVEL_H + +#include + +namespace Jellyfin { +namespace DTO { + +class NotificationLevelClass { + Q_GADGET +public: + enum Value { + Normal, + Warning, + Error, + }; + Q_ENUM(Value) +private: + explicit NotificationLevelClass(); +}; +typedef NotificationLevelClass::Value NotificationLevel; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_NOTIFICATIONLEVEL_H diff --git a/core/include/JellyfinQt/DTO/notificationresultdto.h b/core/include/JellyfinQt/DTO/notificationresultdto.h new file mode 100644 index 0000000..5e8a954 --- /dev/null +++ b/core/include/JellyfinQt/DTO/notificationresultdto.h @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_NOTIFICATIONRESULTDTO_H +#define JELLYFIN_DTO_NOTIFICATIONRESULTDTO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class NotificationDto; + +class NotificationResultDto : public QObject { + Q_OBJECT +public: + explicit NotificationResultDto(QObject *parent = nullptr); + static NotificationResultDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the current page of notifications. + */ + Q_PROPERTY(QList notifications READ notifications WRITE setNotifications NOTIFY notificationsChanged) + /** + * @brief Gets or sets the total number of notifications. + */ + Q_PROPERTY(qint32 totalRecordCount READ totalRecordCount WRITE setTotalRecordCount NOTIFY totalRecordCountChanged) + + QList notifications() const; + void setNotifications(QList newNotifications); + + qint32 totalRecordCount() const; + void setTotalRecordCount(qint32 newTotalRecordCount); + +signals: + void notificationsChanged(QList newNotifications); + void totalRecordCountChanged(qint32 newTotalRecordCount); +protected: + QList m_notifications; + qint32 m_totalRecordCount; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_NOTIFICATIONRESULTDTO_H diff --git a/core/include/JellyfinQt/DTO/notificationssummarydto.h b/core/include/JellyfinQt/DTO/notificationssummarydto.h new file mode 100644 index 0000000..7e1b89e --- /dev/null +++ b/core/include/JellyfinQt/DTO/notificationssummarydto.h @@ -0,0 +1,72 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_NOTIFICATIONSSUMMARYDTO_H +#define JELLYFIN_DTO_NOTIFICATIONSSUMMARYDTO_H + +#include +#include + +#include "JellyfinQt/DTO/notificationlevel.h" + +namespace Jellyfin { +namespace DTO { + +class NotificationsSummaryDto : public QObject { + Q_OBJECT +public: + explicit NotificationsSummaryDto(QObject *parent = nullptr); + static NotificationsSummaryDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the number of unread notifications. + */ + Q_PROPERTY(qint32 unreadCount READ unreadCount WRITE setUnreadCount NOTIFY unreadCountChanged) + Q_PROPERTY(NotificationLevel maxUnreadNotificationLevel READ maxUnreadNotificationLevel WRITE setMaxUnreadNotificationLevel NOTIFY maxUnreadNotificationLevelChanged) + + qint32 unreadCount() const; + void setUnreadCount(qint32 newUnreadCount); + + NotificationLevel maxUnreadNotificationLevel() const; + void setMaxUnreadNotificationLevel(NotificationLevel newMaxUnreadNotificationLevel); + +signals: + void unreadCountChanged(qint32 newUnreadCount); + void maxUnreadNotificationLevelChanged(NotificationLevel newMaxUnreadNotificationLevel); +protected: + qint32 m_unreadCount; + NotificationLevel m_maxUnreadNotificationLevel; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_NOTIFICATIONSSUMMARYDTO_H diff --git a/core/include/JellyfinQt/DTO/notificationtypeinfo.h b/core/include/JellyfinQt/DTO/notificationtypeinfo.h new file mode 100644 index 0000000..11f7213 --- /dev/null +++ b/core/include/JellyfinQt/DTO/notificationtypeinfo.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_NOTIFICATIONTYPEINFO_H +#define JELLYFIN_DTO_NOTIFICATIONTYPEINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class NotificationTypeInfo : public QObject { + Q_OBJECT +public: + explicit NotificationTypeInfo(QObject *parent = nullptr); + static NotificationTypeInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) + Q_PROPERTY(QString category READ category WRITE setCategory NOTIFY categoryChanged) + Q_PROPERTY(bool isBasedOnUserEvent READ isBasedOnUserEvent WRITE setIsBasedOnUserEvent NOTIFY isBasedOnUserEventChanged) + + QString type() const; + void setType(QString newType); + + QString name() const; + void setName(QString newName); + + bool enabled() const; + void setEnabled(bool newEnabled); + + QString category() const; + void setCategory(QString newCategory); + + bool isBasedOnUserEvent() const; + void setIsBasedOnUserEvent(bool newIsBasedOnUserEvent); + +signals: + void typeChanged(QString newType); + void nameChanged(QString newName); + void enabledChanged(bool newEnabled); + void categoryChanged(QString newCategory); + void isBasedOnUserEventChanged(bool newIsBasedOnUserEvent); +protected: + QString m_type; + QString m_name; + bool m_enabled; + QString m_category; + bool m_isBasedOnUserEvent; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_NOTIFICATIONTYPEINFO_H diff --git a/core/include/JellyfinQt/DTO/objectgroupupdate.h b/core/include/JellyfinQt/DTO/objectgroupupdate.h new file mode 100644 index 0000000..7a51d15 --- /dev/null +++ b/core/include/JellyfinQt/DTO/objectgroupupdate.h @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_OBJECTGROUPUPDATE_H +#define JELLYFIN_DTO_OBJECTGROUPUPDATE_H + +#include +#include +#include +#include + +#include "JellyfinQt/DTO/groupupdatetype.h" + +namespace Jellyfin { +namespace DTO { + +class ObjectGroupUpdate : public QObject { + Q_OBJECT +public: + explicit ObjectGroupUpdate(QObject *parent = nullptr); + static ObjectGroupUpdate *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets the group identifier. + */ + Q_PROPERTY(QString groupId READ groupId WRITE setGroupId NOTIFY groupIdChanged) + Q_PROPERTY(GroupUpdateType type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets the update data. + */ + Q_PROPERTY(QVariant data READ data WRITE setData NOTIFY dataChanged) + + QString groupId() const; + void setGroupId(QString newGroupId); + + GroupUpdateType type() const; + void setType(GroupUpdateType newType); + + QVariant data() const; + void setData(QVariant newData); + +signals: + void groupIdChanged(QString newGroupId); + void typeChanged(GroupUpdateType newType); + void dataChanged(QVariant newData); +protected: + QString m_groupId; + GroupUpdateType m_type; + QVariant m_data; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_OBJECTGROUPUPDATE_H diff --git a/core/include/JellyfinQt/DTO/openlivestreamdto.h b/core/include/JellyfinQt/DTO/openlivestreamdto.h new file mode 100644 index 0000000..c9c6ba2 --- /dev/null +++ b/core/include/JellyfinQt/DTO/openlivestreamdto.h @@ -0,0 +1,176 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_OPENLIVESTREAMDTO_H +#define JELLYFIN_DTO_OPENLIVESTREAMDTO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/mediaprotocol.h" + +namespace Jellyfin { +namespace DTO { + +class DeviceProfile; + +class OpenLiveStreamDto : public QObject { + Q_OBJECT +public: + explicit OpenLiveStreamDto(QObject *parent = nullptr); + static OpenLiveStreamDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the open token. + */ + Q_PROPERTY(QString openToken READ openToken WRITE setOpenToken NOTIFY openTokenChanged) + /** + * @brief Gets or sets the user id. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + /** + * @brief Gets or sets the play session id. + */ + Q_PROPERTY(QString playSessionId READ playSessionId WRITE setPlaySessionId NOTIFY playSessionIdChanged) + /** + * @brief Gets or sets the max streaming bitrate. + */ + Q_PROPERTY(qint32 maxStreamingBitrate READ maxStreamingBitrate WRITE setMaxStreamingBitrate NOTIFY maxStreamingBitrateChanged) + /** + * @brief Gets or sets the start time in ticks. + */ + Q_PROPERTY(qint64 startTimeTicks READ startTimeTicks WRITE setStartTimeTicks NOTIFY startTimeTicksChanged) + /** + * @brief Gets or sets the audio stream index. + */ + Q_PROPERTY(qint32 audioStreamIndex READ audioStreamIndex WRITE setAudioStreamIndex NOTIFY audioStreamIndexChanged) + /** + * @brief Gets or sets the subtitle stream index. + */ + Q_PROPERTY(qint32 subtitleStreamIndex READ subtitleStreamIndex WRITE setSubtitleStreamIndex NOTIFY subtitleStreamIndexChanged) + /** + * @brief Gets or sets the max audio channels. + */ + Q_PROPERTY(qint32 maxAudioChannels READ maxAudioChannels WRITE setMaxAudioChannels NOTIFY maxAudioChannelsChanged) + /** + * @brief Gets or sets the item id. + */ + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Gets or sets a value indicating whether to enable direct play. + */ + Q_PROPERTY(bool enableDirectPlay READ enableDirectPlay WRITE setEnableDirectPlay NOTIFY enableDirectPlayChanged) + /** + * @brief Gets or sets a value indicating whether to enale direct stream. + */ + Q_PROPERTY(bool enableDirectStream READ enableDirectStream WRITE setEnableDirectStream NOTIFY enableDirectStreamChanged) + Q_PROPERTY(DeviceProfile * deviceProfile READ deviceProfile WRITE setDeviceProfile NOTIFY deviceProfileChanged) + /** + * @brief Gets or sets the device play protocols. + */ + Q_PROPERTY(QList directPlayProtocols READ directPlayProtocols WRITE setDirectPlayProtocols NOTIFY directPlayProtocolsChanged) + + QString openToken() const; + void setOpenToken(QString newOpenToken); + + QString userId() const; + void setUserId(QString newUserId); + + QString playSessionId() const; + void setPlaySessionId(QString newPlaySessionId); + + qint32 maxStreamingBitrate() const; + void setMaxStreamingBitrate(qint32 newMaxStreamingBitrate); + + qint64 startTimeTicks() const; + void setStartTimeTicks(qint64 newStartTimeTicks); + + qint32 audioStreamIndex() const; + void setAudioStreamIndex(qint32 newAudioStreamIndex); + + qint32 subtitleStreamIndex() const; + void setSubtitleStreamIndex(qint32 newSubtitleStreamIndex); + + qint32 maxAudioChannels() const; + void setMaxAudioChannels(qint32 newMaxAudioChannels); + + QString itemId() const; + void setItemId(QString newItemId); + + bool enableDirectPlay() const; + void setEnableDirectPlay(bool newEnableDirectPlay); + + bool enableDirectStream() const; + void setEnableDirectStream(bool newEnableDirectStream); + + DeviceProfile * deviceProfile() const; + void setDeviceProfile(DeviceProfile * newDeviceProfile); + + QList directPlayProtocols() const; + void setDirectPlayProtocols(QList newDirectPlayProtocols); + +signals: + void openTokenChanged(QString newOpenToken); + void userIdChanged(QString newUserId); + void playSessionIdChanged(QString newPlaySessionId); + void maxStreamingBitrateChanged(qint32 newMaxStreamingBitrate); + void startTimeTicksChanged(qint64 newStartTimeTicks); + void audioStreamIndexChanged(qint32 newAudioStreamIndex); + void subtitleStreamIndexChanged(qint32 newSubtitleStreamIndex); + void maxAudioChannelsChanged(qint32 newMaxAudioChannels); + void itemIdChanged(QString newItemId); + void enableDirectPlayChanged(bool newEnableDirectPlay); + void enableDirectStreamChanged(bool newEnableDirectStream); + void deviceProfileChanged(DeviceProfile * newDeviceProfile); + void directPlayProtocolsChanged(QList newDirectPlayProtocols); +protected: + QString m_openToken; + QString m_userId; + QString m_playSessionId; + qint32 m_maxStreamingBitrate; + qint64 m_startTimeTicks; + qint32 m_audioStreamIndex; + qint32 m_subtitleStreamIndex; + qint32 m_maxAudioChannels; + QString m_itemId; + bool m_enableDirectPlay; + bool m_enableDirectStream; + DeviceProfile * m_deviceProfile = nullptr; + QList m_directPlayProtocols; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_OPENLIVESTREAMDTO_H diff --git a/core/include/JellyfinQt/DTO/packageinfo.h b/core/include/JellyfinQt/DTO/packageinfo.h new file mode 100644 index 0000000..e8d5813 --- /dev/null +++ b/core/include/JellyfinQt/DTO/packageinfo.h @@ -0,0 +1,133 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PACKAGEINFO_H +#define JELLYFIN_DTO_PACKAGEINFO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class VersionInfo; + +class PackageInfo : public QObject { + Q_OBJECT +public: + explicit PackageInfo(QObject *parent = nullptr); + static PackageInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets a long description of the plugin containing features or helpful explanations. + */ + Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY descriptionChanged) + /** + * @brief Gets or sets a short overview of what the plugin does. + */ + Q_PROPERTY(QString overview READ overview WRITE setOverview NOTIFY overviewChanged) + /** + * @brief Gets or sets the owner. + */ + Q_PROPERTY(QString owner READ owner WRITE setOwner NOTIFY ownerChanged) + /** + * @brief Gets or sets the category. + */ + Q_PROPERTY(QString category READ category WRITE setCategory NOTIFY categoryChanged) + /** + * @brief Gets or sets the guid of the assembly associated with this plugin. +This is used to identify the proper item for automatic updates. + */ + Q_PROPERTY(QString guid READ guid WRITE setGuid NOTIFY guidChanged) + /** + * @brief Gets or sets the versions. + */ + Q_PROPERTY(QList versions READ versions WRITE setVersions NOTIFY versionsChanged) + /** + * @brief Gets or sets the image url for the package. + */ + Q_PROPERTY(QString imageUrl READ imageUrl WRITE setImageUrl NOTIFY imageUrlChanged) + + QString name() const; + void setName(QString newName); + + QString description() const; + void setDescription(QString newDescription); + + QString overview() const; + void setOverview(QString newOverview); + + QString owner() const; + void setOwner(QString newOwner); + + QString category() const; + void setCategory(QString newCategory); + + QString guid() const; + void setGuid(QString newGuid); + + QList versions() const; + void setVersions(QList newVersions); + + QString imageUrl() const; + void setImageUrl(QString newImageUrl); + +signals: + void nameChanged(QString newName); + void descriptionChanged(QString newDescription); + void overviewChanged(QString newOverview); + void ownerChanged(QString newOwner); + void categoryChanged(QString newCategory); + void guidChanged(QString newGuid); + void versionsChanged(QList newVersions); + void imageUrlChanged(QString newImageUrl); +protected: + QString m_name; + QString m_description; + QString m_overview; + QString m_owner; + QString m_category; + QString m_guid; + QList m_versions; + QString m_imageUrl; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PACKAGEINFO_H diff --git a/core/include/JellyfinQt/DTO/parentalrating.h b/core/include/JellyfinQt/DTO/parentalrating.h new file mode 100644 index 0000000..0c49e4f --- /dev/null +++ b/core/include/JellyfinQt/DTO/parentalrating.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PARENTALRATING_H +#define JELLYFIN_DTO_PARENTALRATING_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ParentalRating : public QObject { + Q_OBJECT +public: + explicit ParentalRating(QObject *parent = nullptr); + static ParentalRating *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the value. + */ + Q_PROPERTY(qint32 value READ value WRITE setValue NOTIFY valueChanged) + + QString name() const; + void setName(QString newName); + + qint32 value() const; + void setValue(qint32 newValue); + +signals: + void nameChanged(QString newName); + void valueChanged(qint32 newValue); +protected: + QString m_name; + qint32 m_value; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PARENTALRATING_H diff --git a/core/include/JellyfinQt/DTO/pathsubstitution.h b/core/include/JellyfinQt/DTO/pathsubstitution.h new file mode 100644 index 0000000..d3ddcea --- /dev/null +++ b/core/include/JellyfinQt/DTO/pathsubstitution.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PATHSUBSTITUTION_H +#define JELLYFIN_DTO_PATHSUBSTITUTION_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class PathSubstitution : public QObject { + Q_OBJECT +public: + explicit PathSubstitution(QObject *parent = nullptr); + static PathSubstitution *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the value to substitute. + */ + Q_PROPERTY(QString from READ from WRITE setFrom NOTIFY fromChanged) + /** + * @brief Gets or sets the value to substitution with. + */ + Q_PROPERTY(QString to READ to WRITE setTo NOTIFY toChanged) + + QString from() const; + void setFrom(QString newFrom); + + QString to() const; + void setTo(QString newTo); + +signals: + void fromChanged(QString newFrom); + void toChanged(QString newTo); +protected: + QString m_from; + QString m_to; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PATHSUBSTITUTION_H diff --git a/core/include/JellyfinQt/DTO/personlookupinfo.h b/core/include/JellyfinQt/DTO/personlookupinfo.h new file mode 100644 index 0000000..742d83d --- /dev/null +++ b/core/include/JellyfinQt/DTO/personlookupinfo.h @@ -0,0 +1,135 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PERSONLOOKUPINFO_H +#define JELLYFIN_DTO_PERSONLOOKUPINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class PersonLookupInfo : public QObject { + Q_OBJECT +public: + explicit PersonLookupInfo(QObject *parent = nullptr); + static PersonLookupInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the metadata language. + */ + Q_PROPERTY(QString metadataLanguage READ metadataLanguage WRITE setMetadataLanguage NOTIFY metadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 year READ year WRITE setYear NOTIFY yearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(bool isAutomated READ isAutomated WRITE setIsAutomated NOTIFY isAutomatedChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + QString metadataLanguage() const; + void setMetadataLanguage(QString newMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 year() const; + void setYear(qint32 newYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + bool isAutomated() const; + void setIsAutomated(bool newIsAutomated); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void metadataLanguageChanged(QString newMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void providerIdsChanged(QJsonObject newProviderIds); + void yearChanged(qint32 newYear); + void indexNumberChanged(qint32 newIndexNumber); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void isAutomatedChanged(bool newIsAutomated); +protected: + QString m_name; + QString m_path; + QString m_metadataLanguage; + QString m_metadataCountryCode; + QJsonObject m_providerIds; + qint32 m_year; + qint32 m_indexNumber; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + bool m_isAutomated; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PERSONLOOKUPINFO_H diff --git a/core/include/JellyfinQt/DTO/personlookupinforemotesearchquery.h b/core/include/JellyfinQt/DTO/personlookupinforemotesearchquery.h new file mode 100644 index 0000000..7813b5c --- /dev/null +++ b/core/include/JellyfinQt/DTO/personlookupinforemotesearchquery.h @@ -0,0 +1,88 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PERSONLOOKUPINFOREMOTESEARCHQUERY_H +#define JELLYFIN_DTO_PERSONLOOKUPINFOREMOTESEARCHQUERY_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class PersonLookupInfo; + +class PersonLookupInfoRemoteSearchQuery : public QObject { + Q_OBJECT +public: + explicit PersonLookupInfoRemoteSearchQuery(QObject *parent = nullptr); + static PersonLookupInfoRemoteSearchQuery *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(PersonLookupInfo * searchInfo READ searchInfo WRITE setSearchInfo NOTIFY searchInfoChanged) + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Will only search within the given provider when set. + */ + Q_PROPERTY(QString searchProviderName READ searchProviderName WRITE setSearchProviderName NOTIFY searchProviderNameChanged) + /** + * @brief Gets or sets a value indicating whether disabled providers should be included. + */ + Q_PROPERTY(bool includeDisabledProviders READ includeDisabledProviders WRITE setIncludeDisabledProviders NOTIFY includeDisabledProvidersChanged) + + PersonLookupInfo * searchInfo() const; + void setSearchInfo(PersonLookupInfo * newSearchInfo); + + QString itemId() const; + void setItemId(QString newItemId); + + QString searchProviderName() const; + void setSearchProviderName(QString newSearchProviderName); + + bool includeDisabledProviders() const; + void setIncludeDisabledProviders(bool newIncludeDisabledProviders); + +signals: + void searchInfoChanged(PersonLookupInfo * newSearchInfo); + void itemIdChanged(QString newItemId); + void searchProviderNameChanged(QString newSearchProviderName); + void includeDisabledProvidersChanged(bool newIncludeDisabledProviders); +protected: + PersonLookupInfo * m_searchInfo = nullptr; + QString m_itemId; + QString m_searchProviderName; + bool m_includeDisabledProviders; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PERSONLOOKUPINFOREMOTESEARCHQUERY_H diff --git a/core/include/JellyfinQt/DTO/pingrequestdto.h b/core/include/JellyfinQt/DTO/pingrequestdto.h new file mode 100644 index 0000000..cd91b18 --- /dev/null +++ b/core/include/JellyfinQt/DTO/pingrequestdto.h @@ -0,0 +1,64 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PINGREQUESTDTO_H +#define JELLYFIN_DTO_PINGREQUESTDTO_H + +#include +#include + +namespace Jellyfin { +namespace DTO { + +class PingRequestDto : public QObject { + Q_OBJECT +public: + explicit PingRequestDto(QObject *parent = nullptr); + static PingRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the ping time. + */ + Q_PROPERTY(qint64 ping READ ping WRITE setPing NOTIFY pingChanged) + + qint64 ping() const; + void setPing(qint64 newPing); + +signals: + void pingChanged(qint64 newPing); +protected: + qint64 m_ping; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PINGREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/pinredeemresult.h b/core/include/JellyfinQt/DTO/pinredeemresult.h new file mode 100644 index 0000000..7a3bae3 --- /dev/null +++ b/core/include/JellyfinQt/DTO/pinredeemresult.h @@ -0,0 +1,76 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PINREDEEMRESULT_H +#define JELLYFIN_DTO_PINREDEEMRESULT_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class PinRedeemResult : public QObject { + Q_OBJECT +public: + explicit PinRedeemResult(QObject *parent = nullptr); + static PinRedeemResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets a value indicating whether this MediaBrowser.Model.Users.PinRedeemResult is success. + */ + Q_PROPERTY(bool success READ success WRITE setSuccess NOTIFY successChanged) + /** + * @brief Gets or sets the users reset. + */ + Q_PROPERTY(QStringList usersReset READ usersReset WRITE setUsersReset NOTIFY usersResetChanged) + + bool success() const; + void setSuccess(bool newSuccess); + + QStringList usersReset() const; + void setUsersReset(QStringList newUsersReset); + +signals: + void successChanged(bool newSuccess); + void usersResetChanged(QStringList newUsersReset); +protected: + bool m_success; + QStringList m_usersReset; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PINREDEEMRESULT_H diff --git a/core/include/JellyfinQt/DTO/playaccess.h b/core/include/JellyfinQt/DTO/playaccess.h new file mode 100644 index 0000000..508feb7 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playaccess.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYACCESS_H +#define JELLYFIN_DTO_PLAYACCESS_H + +#include + +namespace Jellyfin { +namespace DTO { + +class PlayAccessClass { + Q_GADGET +public: + enum Value { + Full, + None, + }; + Q_ENUM(Value) +private: + explicit PlayAccessClass(); +}; +typedef PlayAccessClass::Value PlayAccess; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYACCESS_H diff --git a/core/include/JellyfinQt/DTO/playbackerrorcode.h b/core/include/JellyfinQt/DTO/playbackerrorcode.h new file mode 100644 index 0000000..a574692 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playbackerrorcode.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYBACKERRORCODE_H +#define JELLYFIN_DTO_PLAYBACKERRORCODE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class PlaybackErrorCodeClass { + Q_GADGET +public: + enum Value { + NotAllowed, + NoCompatibleStream, + RateLimitExceeded, + }; + Q_ENUM(Value) +private: + explicit PlaybackErrorCodeClass(); +}; +typedef PlaybackErrorCodeClass::Value PlaybackErrorCode; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYBACKERRORCODE_H diff --git a/core/include/JellyfinQt/DTO/playbackinfodto.h b/core/include/JellyfinQt/DTO/playbackinfodto.h new file mode 100644 index 0000000..b40a518 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playbackinfodto.h @@ -0,0 +1,190 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYBACKINFODTO_H +#define JELLYFIN_DTO_PLAYBACKINFODTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class DeviceProfile; + +class PlaybackInfoDto : public QObject { + Q_OBJECT +public: + explicit PlaybackInfoDto(QObject *parent = nullptr); + static PlaybackInfoDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the playback userId. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + /** + * @brief Gets or sets the max streaming bitrate. + */ + Q_PROPERTY(qint32 maxStreamingBitrate READ maxStreamingBitrate WRITE setMaxStreamingBitrate NOTIFY maxStreamingBitrateChanged) + /** + * @brief Gets or sets the start time in ticks. + */ + Q_PROPERTY(qint64 startTimeTicks READ startTimeTicks WRITE setStartTimeTicks NOTIFY startTimeTicksChanged) + /** + * @brief Gets or sets the audio stream index. + */ + Q_PROPERTY(qint32 audioStreamIndex READ audioStreamIndex WRITE setAudioStreamIndex NOTIFY audioStreamIndexChanged) + /** + * @brief Gets or sets the subtitle stream index. + */ + Q_PROPERTY(qint32 subtitleStreamIndex READ subtitleStreamIndex WRITE setSubtitleStreamIndex NOTIFY subtitleStreamIndexChanged) + /** + * @brief Gets or sets the max audio channels. + */ + Q_PROPERTY(qint32 maxAudioChannels READ maxAudioChannels WRITE setMaxAudioChannels NOTIFY maxAudioChannelsChanged) + /** + * @brief Gets or sets the media source id. + */ + Q_PROPERTY(QString mediaSourceId READ mediaSourceId WRITE setMediaSourceId NOTIFY mediaSourceIdChanged) + /** + * @brief Gets or sets the live stream id. + */ + Q_PROPERTY(QString liveStreamId READ liveStreamId WRITE setLiveStreamId NOTIFY liveStreamIdChanged) + Q_PROPERTY(DeviceProfile * deviceProfile READ deviceProfile WRITE setDeviceProfile NOTIFY deviceProfileChanged) + /** + * @brief Gets or sets a value indicating whether to enable direct play. + */ + Q_PROPERTY(bool enableDirectPlay READ enableDirectPlay WRITE setEnableDirectPlay NOTIFY enableDirectPlayChanged) + /** + * @brief Gets or sets a value indicating whether to enable direct stream. + */ + Q_PROPERTY(bool enableDirectStream READ enableDirectStream WRITE setEnableDirectStream NOTIFY enableDirectStreamChanged) + /** + * @brief Gets or sets a value indicating whether to enable transcoding. + */ + Q_PROPERTY(bool enableTranscoding READ enableTranscoding WRITE setEnableTranscoding NOTIFY enableTranscodingChanged) + /** + * @brief Gets or sets a value indicating whether to enable video stream copy. + */ + Q_PROPERTY(bool allowVideoStreamCopy READ allowVideoStreamCopy WRITE setAllowVideoStreamCopy NOTIFY allowVideoStreamCopyChanged) + /** + * @brief Gets or sets a value indicating whether to allow audio stream copy. + */ + Q_PROPERTY(bool allowAudioStreamCopy READ allowAudioStreamCopy WRITE setAllowAudioStreamCopy NOTIFY allowAudioStreamCopyChanged) + /** + * @brief Gets or sets a value indicating whether to auto open the live stream. + */ + Q_PROPERTY(bool autoOpenLiveStream READ autoOpenLiveStream WRITE setAutoOpenLiveStream NOTIFY autoOpenLiveStreamChanged) + + QString userId() const; + void setUserId(QString newUserId); + + qint32 maxStreamingBitrate() const; + void setMaxStreamingBitrate(qint32 newMaxStreamingBitrate); + + qint64 startTimeTicks() const; + void setStartTimeTicks(qint64 newStartTimeTicks); + + qint32 audioStreamIndex() const; + void setAudioStreamIndex(qint32 newAudioStreamIndex); + + qint32 subtitleStreamIndex() const; + void setSubtitleStreamIndex(qint32 newSubtitleStreamIndex); + + qint32 maxAudioChannels() const; + void setMaxAudioChannels(qint32 newMaxAudioChannels); + + QString mediaSourceId() const; + void setMediaSourceId(QString newMediaSourceId); + + QString liveStreamId() const; + void setLiveStreamId(QString newLiveStreamId); + + DeviceProfile * deviceProfile() const; + void setDeviceProfile(DeviceProfile * newDeviceProfile); + + bool enableDirectPlay() const; + void setEnableDirectPlay(bool newEnableDirectPlay); + + bool enableDirectStream() const; + void setEnableDirectStream(bool newEnableDirectStream); + + bool enableTranscoding() const; + void setEnableTranscoding(bool newEnableTranscoding); + + bool allowVideoStreamCopy() const; + void setAllowVideoStreamCopy(bool newAllowVideoStreamCopy); + + bool allowAudioStreamCopy() const; + void setAllowAudioStreamCopy(bool newAllowAudioStreamCopy); + + bool autoOpenLiveStream() const; + void setAutoOpenLiveStream(bool newAutoOpenLiveStream); + +signals: + void userIdChanged(QString newUserId); + void maxStreamingBitrateChanged(qint32 newMaxStreamingBitrate); + void startTimeTicksChanged(qint64 newStartTimeTicks); + void audioStreamIndexChanged(qint32 newAudioStreamIndex); + void subtitleStreamIndexChanged(qint32 newSubtitleStreamIndex); + void maxAudioChannelsChanged(qint32 newMaxAudioChannels); + void mediaSourceIdChanged(QString newMediaSourceId); + void liveStreamIdChanged(QString newLiveStreamId); + void deviceProfileChanged(DeviceProfile * newDeviceProfile); + void enableDirectPlayChanged(bool newEnableDirectPlay); + void enableDirectStreamChanged(bool newEnableDirectStream); + void enableTranscodingChanged(bool newEnableTranscoding); + void allowVideoStreamCopyChanged(bool newAllowVideoStreamCopy); + void allowAudioStreamCopyChanged(bool newAllowAudioStreamCopy); + void autoOpenLiveStreamChanged(bool newAutoOpenLiveStream); +protected: + QString m_userId; + qint32 m_maxStreamingBitrate; + qint64 m_startTimeTicks; + qint32 m_audioStreamIndex; + qint32 m_subtitleStreamIndex; + qint32 m_maxAudioChannels; + QString m_mediaSourceId; + QString m_liveStreamId; + DeviceProfile * m_deviceProfile = nullptr; + bool m_enableDirectPlay; + bool m_enableDirectStream; + bool m_enableTranscoding; + bool m_allowVideoStreamCopy; + bool m_allowAudioStreamCopy; + bool m_autoOpenLiveStream; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYBACKINFODTO_H diff --git a/core/include/JellyfinQt/DTO/playbackinforesponse.h b/core/include/JellyfinQt/DTO/playbackinforesponse.h new file mode 100644 index 0000000..9e9ce04 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playbackinforesponse.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYBACKINFORESPONSE_H +#define JELLYFIN_DTO_PLAYBACKINFORESPONSE_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/playbackerrorcode.h" + +namespace Jellyfin { +namespace DTO { + +class MediaSourceInfo; + +class PlaybackInfoResponse : public QObject { + Q_OBJECT +public: + explicit PlaybackInfoResponse(QObject *parent = nullptr); + static PlaybackInfoResponse *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the media sources. + */ + Q_PROPERTY(QList mediaSources READ mediaSources WRITE setMediaSources NOTIFY mediaSourcesChanged) + /** + * @brief Gets or sets the play session identifier. + */ + Q_PROPERTY(QString playSessionId READ playSessionId WRITE setPlaySessionId NOTIFY playSessionIdChanged) + Q_PROPERTY(PlaybackErrorCode errorCode READ errorCode WRITE setErrorCode NOTIFY errorCodeChanged) + + QList mediaSources() const; + void setMediaSources(QList newMediaSources); + + QString playSessionId() const; + void setPlaySessionId(QString newPlaySessionId); + + PlaybackErrorCode errorCode() const; + void setErrorCode(PlaybackErrorCode newErrorCode); + +signals: + void mediaSourcesChanged(QList newMediaSources); + void playSessionIdChanged(QString newPlaySessionId); + void errorCodeChanged(PlaybackErrorCode newErrorCode); +protected: + QList m_mediaSources; + QString m_playSessionId; + PlaybackErrorCode m_errorCode; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYBACKINFORESPONSE_H diff --git a/core/include/JellyfinQt/DTO/playbackprogressinfo.h b/core/include/JellyfinQt/DTO/playbackprogressinfo.h new file mode 100644 index 0000000..05d9462 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playbackprogressinfo.h @@ -0,0 +1,220 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYBACKPROGRESSINFO_H +#define JELLYFIN_DTO_PLAYBACKPROGRESSINFO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/playmethod.h" +#include "JellyfinQt/DTO/repeatmode.h" + +namespace Jellyfin { +namespace DTO { + +class BaseItemDto; +class QueueItem; + +class PlaybackProgressInfo : public QObject { + Q_OBJECT +public: + explicit PlaybackProgressInfo(QObject *parent = nullptr); + static PlaybackProgressInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets a value indicating whether this instance can seek. + */ + Q_PROPERTY(bool canSeek READ canSeek WRITE setCanSeek NOTIFY canSeekChanged) + Q_PROPERTY(BaseItemDto * item READ item WRITE setItem NOTIFY itemChanged) + /** + * @brief Gets or sets the item identifier. + */ + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Gets or sets the session id. + */ + Q_PROPERTY(QString sessionId READ sessionId WRITE setSessionId NOTIFY sessionIdChanged) + /** + * @brief Gets or sets the media version identifier. + */ + Q_PROPERTY(QString mediaSourceId READ mediaSourceId WRITE setMediaSourceId NOTIFY mediaSourceIdChanged) + /** + * @brief Gets or sets the index of the audio stream. + */ + Q_PROPERTY(qint32 audioStreamIndex READ audioStreamIndex WRITE setAudioStreamIndex NOTIFY audioStreamIndexChanged) + /** + * @brief Gets or sets the index of the subtitle stream. + */ + Q_PROPERTY(qint32 subtitleStreamIndex READ subtitleStreamIndex WRITE setSubtitleStreamIndex NOTIFY subtitleStreamIndexChanged) + /** + * @brief Gets or sets a value indicating whether this instance is paused. + */ + Q_PROPERTY(bool isPaused READ isPaused WRITE setIsPaused NOTIFY isPausedChanged) + /** + * @brief Gets or sets a value indicating whether this instance is muted. + */ + Q_PROPERTY(bool isMuted READ isMuted WRITE setIsMuted NOTIFY isMutedChanged) + /** + * @brief Gets or sets the position ticks. + */ + Q_PROPERTY(qint64 positionTicks READ positionTicks WRITE setPositionTicks NOTIFY positionTicksChanged) + Q_PROPERTY(qint64 playbackStartTimeTicks READ playbackStartTimeTicks WRITE setPlaybackStartTimeTicks NOTIFY playbackStartTimeTicksChanged) + /** + * @brief Gets or sets the volume level. + */ + Q_PROPERTY(qint32 volumeLevel READ volumeLevel WRITE setVolumeLevel NOTIFY volumeLevelChanged) + Q_PROPERTY(qint32 brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged) + Q_PROPERTY(QString aspectRatio READ aspectRatio WRITE setAspectRatio NOTIFY aspectRatioChanged) + Q_PROPERTY(PlayMethod playMethod READ playMethod WRITE setPlayMethod NOTIFY playMethodChanged) + /** + * @brief Gets or sets the live stream identifier. + */ + Q_PROPERTY(QString liveStreamId READ liveStreamId WRITE setLiveStreamId NOTIFY liveStreamIdChanged) + /** + * @brief Gets or sets the play session identifier. + */ + Q_PROPERTY(QString playSessionId READ playSessionId WRITE setPlaySessionId NOTIFY playSessionIdChanged) + Q_PROPERTY(RepeatMode repeatMode READ repeatMode WRITE setRepeatMode NOTIFY repeatModeChanged) + Q_PROPERTY(QList nowPlayingQueue READ nowPlayingQueue WRITE setNowPlayingQueue NOTIFY nowPlayingQueueChanged) + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + + bool canSeek() const; + void setCanSeek(bool newCanSeek); + + BaseItemDto * item() const; + void setItem(BaseItemDto * newItem); + + QString itemId() const; + void setItemId(QString newItemId); + + QString sessionId() const; + void setSessionId(QString newSessionId); + + QString mediaSourceId() const; + void setMediaSourceId(QString newMediaSourceId); + + qint32 audioStreamIndex() const; + void setAudioStreamIndex(qint32 newAudioStreamIndex); + + qint32 subtitleStreamIndex() const; + void setSubtitleStreamIndex(qint32 newSubtitleStreamIndex); + + bool isPaused() const; + void setIsPaused(bool newIsPaused); + + bool isMuted() const; + void setIsMuted(bool newIsMuted); + + qint64 positionTicks() const; + void setPositionTicks(qint64 newPositionTicks); + + qint64 playbackStartTimeTicks() const; + void setPlaybackStartTimeTicks(qint64 newPlaybackStartTimeTicks); + + qint32 volumeLevel() const; + void setVolumeLevel(qint32 newVolumeLevel); + + qint32 brightness() const; + void setBrightness(qint32 newBrightness); + + QString aspectRatio() const; + void setAspectRatio(QString newAspectRatio); + + PlayMethod playMethod() const; + void setPlayMethod(PlayMethod newPlayMethod); + + QString liveStreamId() const; + void setLiveStreamId(QString newLiveStreamId); + + QString playSessionId() const; + void setPlaySessionId(QString newPlaySessionId); + + RepeatMode repeatMode() const; + void setRepeatMode(RepeatMode newRepeatMode); + + QList nowPlayingQueue() const; + void setNowPlayingQueue(QList newNowPlayingQueue); + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + +signals: + void canSeekChanged(bool newCanSeek); + void itemChanged(BaseItemDto * newItem); + void itemIdChanged(QString newItemId); + void sessionIdChanged(QString newSessionId); + void mediaSourceIdChanged(QString newMediaSourceId); + void audioStreamIndexChanged(qint32 newAudioStreamIndex); + void subtitleStreamIndexChanged(qint32 newSubtitleStreamIndex); + void isPausedChanged(bool newIsPaused); + void isMutedChanged(bool newIsMuted); + void positionTicksChanged(qint64 newPositionTicks); + void playbackStartTimeTicksChanged(qint64 newPlaybackStartTimeTicks); + void volumeLevelChanged(qint32 newVolumeLevel); + void brightnessChanged(qint32 newBrightness); + void aspectRatioChanged(QString newAspectRatio); + void playMethodChanged(PlayMethod newPlayMethod); + void liveStreamIdChanged(QString newLiveStreamId); + void playSessionIdChanged(QString newPlaySessionId); + void repeatModeChanged(RepeatMode newRepeatMode); + void nowPlayingQueueChanged(QList newNowPlayingQueue); + void playlistItemIdChanged(QString newPlaylistItemId); +protected: + bool m_canSeek; + BaseItemDto * m_item = nullptr; + QString m_itemId; + QString m_sessionId; + QString m_mediaSourceId; + qint32 m_audioStreamIndex; + qint32 m_subtitleStreamIndex; + bool m_isPaused; + bool m_isMuted; + qint64 m_positionTicks; + qint64 m_playbackStartTimeTicks; + qint32 m_volumeLevel; + qint32 m_brightness; + QString m_aspectRatio; + PlayMethod m_playMethod; + QString m_liveStreamId; + QString m_playSessionId; + RepeatMode m_repeatMode; + QList m_nowPlayingQueue; + QString m_playlistItemId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYBACKPROGRESSINFO_H diff --git a/core/include/JellyfinQt/DTO/playbackstartinfo.h b/core/include/JellyfinQt/DTO/playbackstartinfo.h new file mode 100644 index 0000000..6b59733 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playbackstartinfo.h @@ -0,0 +1,220 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYBACKSTARTINFO_H +#define JELLYFIN_DTO_PLAYBACKSTARTINFO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/playmethod.h" +#include "JellyfinQt/DTO/repeatmode.h" + +namespace Jellyfin { +namespace DTO { + +class BaseItemDto; +class QueueItem; + +class PlaybackStartInfo : public QObject { + Q_OBJECT +public: + explicit PlaybackStartInfo(QObject *parent = nullptr); + static PlaybackStartInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets a value indicating whether this instance can seek. + */ + Q_PROPERTY(bool canSeek READ canSeek WRITE setCanSeek NOTIFY canSeekChanged) + Q_PROPERTY(BaseItemDto * item READ item WRITE setItem NOTIFY itemChanged) + /** + * @brief Gets or sets the item identifier. + */ + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Gets or sets the session id. + */ + Q_PROPERTY(QString sessionId READ sessionId WRITE setSessionId NOTIFY sessionIdChanged) + /** + * @brief Gets or sets the media version identifier. + */ + Q_PROPERTY(QString mediaSourceId READ mediaSourceId WRITE setMediaSourceId NOTIFY mediaSourceIdChanged) + /** + * @brief Gets or sets the index of the audio stream. + */ + Q_PROPERTY(qint32 audioStreamIndex READ audioStreamIndex WRITE setAudioStreamIndex NOTIFY audioStreamIndexChanged) + /** + * @brief Gets or sets the index of the subtitle stream. + */ + Q_PROPERTY(qint32 subtitleStreamIndex READ subtitleStreamIndex WRITE setSubtitleStreamIndex NOTIFY subtitleStreamIndexChanged) + /** + * @brief Gets or sets a value indicating whether this instance is paused. + */ + Q_PROPERTY(bool isPaused READ isPaused WRITE setIsPaused NOTIFY isPausedChanged) + /** + * @brief Gets or sets a value indicating whether this instance is muted. + */ + Q_PROPERTY(bool isMuted READ isMuted WRITE setIsMuted NOTIFY isMutedChanged) + /** + * @brief Gets or sets the position ticks. + */ + Q_PROPERTY(qint64 positionTicks READ positionTicks WRITE setPositionTicks NOTIFY positionTicksChanged) + Q_PROPERTY(qint64 playbackStartTimeTicks READ playbackStartTimeTicks WRITE setPlaybackStartTimeTicks NOTIFY playbackStartTimeTicksChanged) + /** + * @brief Gets or sets the volume level. + */ + Q_PROPERTY(qint32 volumeLevel READ volumeLevel WRITE setVolumeLevel NOTIFY volumeLevelChanged) + Q_PROPERTY(qint32 brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged) + Q_PROPERTY(QString aspectRatio READ aspectRatio WRITE setAspectRatio NOTIFY aspectRatioChanged) + Q_PROPERTY(PlayMethod playMethod READ playMethod WRITE setPlayMethod NOTIFY playMethodChanged) + /** + * @brief Gets or sets the live stream identifier. + */ + Q_PROPERTY(QString liveStreamId READ liveStreamId WRITE setLiveStreamId NOTIFY liveStreamIdChanged) + /** + * @brief Gets or sets the play session identifier. + */ + Q_PROPERTY(QString playSessionId READ playSessionId WRITE setPlaySessionId NOTIFY playSessionIdChanged) + Q_PROPERTY(RepeatMode repeatMode READ repeatMode WRITE setRepeatMode NOTIFY repeatModeChanged) + Q_PROPERTY(QList nowPlayingQueue READ nowPlayingQueue WRITE setNowPlayingQueue NOTIFY nowPlayingQueueChanged) + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + + bool canSeek() const; + void setCanSeek(bool newCanSeek); + + BaseItemDto * item() const; + void setItem(BaseItemDto * newItem); + + QString itemId() const; + void setItemId(QString newItemId); + + QString sessionId() const; + void setSessionId(QString newSessionId); + + QString mediaSourceId() const; + void setMediaSourceId(QString newMediaSourceId); + + qint32 audioStreamIndex() const; + void setAudioStreamIndex(qint32 newAudioStreamIndex); + + qint32 subtitleStreamIndex() const; + void setSubtitleStreamIndex(qint32 newSubtitleStreamIndex); + + bool isPaused() const; + void setIsPaused(bool newIsPaused); + + bool isMuted() const; + void setIsMuted(bool newIsMuted); + + qint64 positionTicks() const; + void setPositionTicks(qint64 newPositionTicks); + + qint64 playbackStartTimeTicks() const; + void setPlaybackStartTimeTicks(qint64 newPlaybackStartTimeTicks); + + qint32 volumeLevel() const; + void setVolumeLevel(qint32 newVolumeLevel); + + qint32 brightness() const; + void setBrightness(qint32 newBrightness); + + QString aspectRatio() const; + void setAspectRatio(QString newAspectRatio); + + PlayMethod playMethod() const; + void setPlayMethod(PlayMethod newPlayMethod); + + QString liveStreamId() const; + void setLiveStreamId(QString newLiveStreamId); + + QString playSessionId() const; + void setPlaySessionId(QString newPlaySessionId); + + RepeatMode repeatMode() const; + void setRepeatMode(RepeatMode newRepeatMode); + + QList nowPlayingQueue() const; + void setNowPlayingQueue(QList newNowPlayingQueue); + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + +signals: + void canSeekChanged(bool newCanSeek); + void itemChanged(BaseItemDto * newItem); + void itemIdChanged(QString newItemId); + void sessionIdChanged(QString newSessionId); + void mediaSourceIdChanged(QString newMediaSourceId); + void audioStreamIndexChanged(qint32 newAudioStreamIndex); + void subtitleStreamIndexChanged(qint32 newSubtitleStreamIndex); + void isPausedChanged(bool newIsPaused); + void isMutedChanged(bool newIsMuted); + void positionTicksChanged(qint64 newPositionTicks); + void playbackStartTimeTicksChanged(qint64 newPlaybackStartTimeTicks); + void volumeLevelChanged(qint32 newVolumeLevel); + void brightnessChanged(qint32 newBrightness); + void aspectRatioChanged(QString newAspectRatio); + void playMethodChanged(PlayMethod newPlayMethod); + void liveStreamIdChanged(QString newLiveStreamId); + void playSessionIdChanged(QString newPlaySessionId); + void repeatModeChanged(RepeatMode newRepeatMode); + void nowPlayingQueueChanged(QList newNowPlayingQueue); + void playlistItemIdChanged(QString newPlaylistItemId); +protected: + bool m_canSeek; + BaseItemDto * m_item = nullptr; + QString m_itemId; + QString m_sessionId; + QString m_mediaSourceId; + qint32 m_audioStreamIndex; + qint32 m_subtitleStreamIndex; + bool m_isPaused; + bool m_isMuted; + qint64 m_positionTicks; + qint64 m_playbackStartTimeTicks; + qint32 m_volumeLevel; + qint32 m_brightness; + QString m_aspectRatio; + PlayMethod m_playMethod; + QString m_liveStreamId; + QString m_playSessionId; + RepeatMode m_repeatMode; + QList m_nowPlayingQueue; + QString m_playlistItemId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYBACKSTARTINFO_H diff --git a/core/include/JellyfinQt/DTO/playbackstopinfo.h b/core/include/JellyfinQt/DTO/playbackstopinfo.h new file mode 100644 index 0000000..c910195 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playbackstopinfo.h @@ -0,0 +1,148 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYBACKSTOPINFO_H +#define JELLYFIN_DTO_PLAYBACKSTOPINFO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class BaseItemDto; +class QueueItem; + +class PlaybackStopInfo : public QObject { + Q_OBJECT +public: + explicit PlaybackStopInfo(QObject *parent = nullptr); + static PlaybackStopInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(BaseItemDto * item READ item WRITE setItem NOTIFY itemChanged) + /** + * @brief Gets or sets the item identifier. + */ + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Gets or sets the session id. + */ + Q_PROPERTY(QString sessionId READ sessionId WRITE setSessionId NOTIFY sessionIdChanged) + /** + * @brief Gets or sets the media version identifier. + */ + Q_PROPERTY(QString mediaSourceId READ mediaSourceId WRITE setMediaSourceId NOTIFY mediaSourceIdChanged) + /** + * @brief Gets or sets the position ticks. + */ + Q_PROPERTY(qint64 positionTicks READ positionTicks WRITE setPositionTicks NOTIFY positionTicksChanged) + /** + * @brief Gets or sets the live stream identifier. + */ + Q_PROPERTY(QString liveStreamId READ liveStreamId WRITE setLiveStreamId NOTIFY liveStreamIdChanged) + /** + * @brief Gets or sets the play session identifier. + */ + Q_PROPERTY(QString playSessionId READ playSessionId WRITE setPlaySessionId NOTIFY playSessionIdChanged) + /** + * @brief Gets or sets a value indicating whether this MediaBrowser.Model.Session.PlaybackStopInfo is failed. + */ + Q_PROPERTY(bool failed READ failed WRITE setFailed NOTIFY failedChanged) + Q_PROPERTY(QString nextMediaType READ nextMediaType WRITE setNextMediaType NOTIFY nextMediaTypeChanged) + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + Q_PROPERTY(QList nowPlayingQueue READ nowPlayingQueue WRITE setNowPlayingQueue NOTIFY nowPlayingQueueChanged) + + BaseItemDto * item() const; + void setItem(BaseItemDto * newItem); + + QString itemId() const; + void setItemId(QString newItemId); + + QString sessionId() const; + void setSessionId(QString newSessionId); + + QString mediaSourceId() const; + void setMediaSourceId(QString newMediaSourceId); + + qint64 positionTicks() const; + void setPositionTicks(qint64 newPositionTicks); + + QString liveStreamId() const; + void setLiveStreamId(QString newLiveStreamId); + + QString playSessionId() const; + void setPlaySessionId(QString newPlaySessionId); + + bool failed() const; + void setFailed(bool newFailed); + + QString nextMediaType() const; + void setNextMediaType(QString newNextMediaType); + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + + QList nowPlayingQueue() const; + void setNowPlayingQueue(QList newNowPlayingQueue); + +signals: + void itemChanged(BaseItemDto * newItem); + void itemIdChanged(QString newItemId); + void sessionIdChanged(QString newSessionId); + void mediaSourceIdChanged(QString newMediaSourceId); + void positionTicksChanged(qint64 newPositionTicks); + void liveStreamIdChanged(QString newLiveStreamId); + void playSessionIdChanged(QString newPlaySessionId); + void failedChanged(bool newFailed); + void nextMediaTypeChanged(QString newNextMediaType); + void playlistItemIdChanged(QString newPlaylistItemId); + void nowPlayingQueueChanged(QList newNowPlayingQueue); +protected: + BaseItemDto * m_item = nullptr; + QString m_itemId; + QString m_sessionId; + QString m_mediaSourceId; + qint64 m_positionTicks; + QString m_liveStreamId; + QString m_playSessionId; + bool m_failed; + QString m_nextMediaType; + QString m_playlistItemId; + QList m_nowPlayingQueue; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYBACKSTOPINFO_H diff --git a/core/include/JellyfinQt/DTO/playcommand.h b/core/include/JellyfinQt/DTO/playcommand.h new file mode 100644 index 0000000..d3cad9f --- /dev/null +++ b/core/include/JellyfinQt/DTO/playcommand.h @@ -0,0 +1,57 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYCOMMAND_H +#define JELLYFIN_DTO_PLAYCOMMAND_H + +#include + +namespace Jellyfin { +namespace DTO { + +class PlayCommandClass { + Q_GADGET +public: + enum Value { + PlayNow, + PlayNext, + PlayLast, + PlayInstantMix, + PlayShuffle, + }; + Q_ENUM(Value) +private: + explicit PlayCommandClass(); +}; +typedef PlayCommandClass::Value PlayCommand; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYCOMMAND_H diff --git a/core/include/JellyfinQt/DTO/playerstateinfo.h b/core/include/JellyfinQt/DTO/playerstateinfo.h new file mode 100644 index 0000000..ecc238f --- /dev/null +++ b/core/include/JellyfinQt/DTO/playerstateinfo.h @@ -0,0 +1,143 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYERSTATEINFO_H +#define JELLYFIN_DTO_PLAYERSTATEINFO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/playmethod.h" +#include "JellyfinQt/DTO/repeatmode.h" + +namespace Jellyfin { +namespace DTO { + +class PlayerStateInfo : public QObject { + Q_OBJECT +public: + explicit PlayerStateInfo(QObject *parent = nullptr); + static PlayerStateInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the now playing position ticks. + */ + Q_PROPERTY(qint64 positionTicks READ positionTicks WRITE setPositionTicks NOTIFY positionTicksChanged) + /** + * @brief Gets or sets a value indicating whether this instance can seek. + */ + Q_PROPERTY(bool canSeek READ canSeek WRITE setCanSeek NOTIFY canSeekChanged) + /** + * @brief Gets or sets a value indicating whether this instance is paused. + */ + Q_PROPERTY(bool isPaused READ isPaused WRITE setIsPaused NOTIFY isPausedChanged) + /** + * @brief Gets or sets a value indicating whether this instance is muted. + */ + Q_PROPERTY(bool isMuted READ isMuted WRITE setIsMuted NOTIFY isMutedChanged) + /** + * @brief Gets or sets the volume level. + */ + Q_PROPERTY(qint32 volumeLevel READ volumeLevel WRITE setVolumeLevel NOTIFY volumeLevelChanged) + /** + * @brief Gets or sets the index of the now playing audio stream. + */ + Q_PROPERTY(qint32 audioStreamIndex READ audioStreamIndex WRITE setAudioStreamIndex NOTIFY audioStreamIndexChanged) + /** + * @brief Gets or sets the index of the now playing subtitle stream. + */ + Q_PROPERTY(qint32 subtitleStreamIndex READ subtitleStreamIndex WRITE setSubtitleStreamIndex NOTIFY subtitleStreamIndexChanged) + /** + * @brief Gets or sets the now playing media version identifier. + */ + Q_PROPERTY(QString mediaSourceId READ mediaSourceId WRITE setMediaSourceId NOTIFY mediaSourceIdChanged) + Q_PROPERTY(PlayMethod playMethod READ playMethod WRITE setPlayMethod NOTIFY playMethodChanged) + Q_PROPERTY(RepeatMode repeatMode READ repeatMode WRITE setRepeatMode NOTIFY repeatModeChanged) + + qint64 positionTicks() const; + void setPositionTicks(qint64 newPositionTicks); + + bool canSeek() const; + void setCanSeek(bool newCanSeek); + + bool isPaused() const; + void setIsPaused(bool newIsPaused); + + bool isMuted() const; + void setIsMuted(bool newIsMuted); + + qint32 volumeLevel() const; + void setVolumeLevel(qint32 newVolumeLevel); + + qint32 audioStreamIndex() const; + void setAudioStreamIndex(qint32 newAudioStreamIndex); + + qint32 subtitleStreamIndex() const; + void setSubtitleStreamIndex(qint32 newSubtitleStreamIndex); + + QString mediaSourceId() const; + void setMediaSourceId(QString newMediaSourceId); + + PlayMethod playMethod() const; + void setPlayMethod(PlayMethod newPlayMethod); + + RepeatMode repeatMode() const; + void setRepeatMode(RepeatMode newRepeatMode); + +signals: + void positionTicksChanged(qint64 newPositionTicks); + void canSeekChanged(bool newCanSeek); + void isPausedChanged(bool newIsPaused); + void isMutedChanged(bool newIsMuted); + void volumeLevelChanged(qint32 newVolumeLevel); + void audioStreamIndexChanged(qint32 newAudioStreamIndex); + void subtitleStreamIndexChanged(qint32 newSubtitleStreamIndex); + void mediaSourceIdChanged(QString newMediaSourceId); + void playMethodChanged(PlayMethod newPlayMethod); + void repeatModeChanged(RepeatMode newRepeatMode); +protected: + qint64 m_positionTicks; + bool m_canSeek; + bool m_isPaused; + bool m_isMuted; + qint32 m_volumeLevel; + qint32 m_audioStreamIndex; + qint32 m_subtitleStreamIndex; + QString m_mediaSourceId; + PlayMethod m_playMethod; + RepeatMode m_repeatMode; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYERSTATEINFO_H diff --git a/core/include/JellyfinQt/DTO/playlistcreationresult.h b/core/include/JellyfinQt/DTO/playlistcreationresult.h new file mode 100644 index 0000000..18d09e1 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playlistcreationresult.h @@ -0,0 +1,62 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYLISTCREATIONRESULT_H +#define JELLYFIN_DTO_PLAYLISTCREATIONRESULT_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class PlaylistCreationResult : public QObject { + Q_OBJECT +public: + explicit PlaylistCreationResult(QObject *parent = nullptr); + static PlaylistCreationResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + +signals: + void jellyfinIdChanged(QString newJellyfinId); +protected: + QString m_jellyfinId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYLISTCREATIONRESULT_H diff --git a/core/include/JellyfinQt/DTO/playmethod.h b/core/include/JellyfinQt/DTO/playmethod.h new file mode 100644 index 0000000..4fefa01 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playmethod.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYMETHOD_H +#define JELLYFIN_DTO_PLAYMETHOD_H + +#include + +namespace Jellyfin { +namespace DTO { + +class PlayMethodClass { + Q_GADGET +public: + enum Value { + Transcode, + DirectStream, + DirectPlay, + }; + Q_ENUM(Value) +private: + explicit PlayMethodClass(); +}; +typedef PlayMethodClass::Value PlayMethod; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYMETHOD_H diff --git a/core/include/JellyfinQt/DTO/playrequest.h b/core/include/JellyfinQt/DTO/playrequest.h new file mode 100644 index 0000000..1f3de6b --- /dev/null +++ b/core/include/JellyfinQt/DTO/playrequest.h @@ -0,0 +1,117 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYREQUEST_H +#define JELLYFIN_DTO_PLAYREQUEST_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/playcommand.h" + +namespace Jellyfin { +namespace DTO { + +class PlayRequest : public QObject { + Q_OBJECT +public: + explicit PlayRequest(QObject *parent = nullptr); + static PlayRequest *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the item ids. + */ + Q_PROPERTY(QStringList itemIds READ itemIds WRITE setItemIds NOTIFY itemIdsChanged) + /** + * @brief Gets or sets the start position ticks that the first item should be played at. + */ + Q_PROPERTY(qint64 startPositionTicks READ startPositionTicks WRITE setStartPositionTicks NOTIFY startPositionTicksChanged) + Q_PROPERTY(PlayCommand playCommand READ playCommand WRITE setPlayCommand NOTIFY playCommandChanged) + /** + * @brief Gets or sets the controlling user identifier. + */ + Q_PROPERTY(QString controllingUserId READ controllingUserId WRITE setControllingUserId NOTIFY controllingUserIdChanged) + Q_PROPERTY(qint32 subtitleStreamIndex READ subtitleStreamIndex WRITE setSubtitleStreamIndex NOTIFY subtitleStreamIndexChanged) + Q_PROPERTY(qint32 audioStreamIndex READ audioStreamIndex WRITE setAudioStreamIndex NOTIFY audioStreamIndexChanged) + Q_PROPERTY(QString mediaSourceId READ mediaSourceId WRITE setMediaSourceId NOTIFY mediaSourceIdChanged) + Q_PROPERTY(qint32 startIndex READ startIndex WRITE setStartIndex NOTIFY startIndexChanged) + + QStringList itemIds() const; + void setItemIds(QStringList newItemIds); + + qint64 startPositionTicks() const; + void setStartPositionTicks(qint64 newStartPositionTicks); + + PlayCommand playCommand() const; + void setPlayCommand(PlayCommand newPlayCommand); + + QString controllingUserId() const; + void setControllingUserId(QString newControllingUserId); + + qint32 subtitleStreamIndex() const; + void setSubtitleStreamIndex(qint32 newSubtitleStreamIndex); + + qint32 audioStreamIndex() const; + void setAudioStreamIndex(qint32 newAudioStreamIndex); + + QString mediaSourceId() const; + void setMediaSourceId(QString newMediaSourceId); + + qint32 startIndex() const; + void setStartIndex(qint32 newStartIndex); + +signals: + void itemIdsChanged(QStringList newItemIds); + void startPositionTicksChanged(qint64 newStartPositionTicks); + void playCommandChanged(PlayCommand newPlayCommand); + void controllingUserIdChanged(QString newControllingUserId); + void subtitleStreamIndexChanged(qint32 newSubtitleStreamIndex); + void audioStreamIndexChanged(qint32 newAudioStreamIndex); + void mediaSourceIdChanged(QString newMediaSourceId); + void startIndexChanged(qint32 newStartIndex); +protected: + QStringList m_itemIds; + qint64 m_startPositionTicks; + PlayCommand m_playCommand; + QString m_controllingUserId; + qint32 m_subtitleStreamIndex; + qint32 m_audioStreamIndex; + QString m_mediaSourceId; + qint32 m_startIndex; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYREQUEST_H diff --git a/core/include/JellyfinQt/DTO/playrequestdto.h b/core/include/JellyfinQt/DTO/playrequestdto.h new file mode 100644 index 0000000..200a723 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playrequestdto.h @@ -0,0 +1,85 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYREQUESTDTO_H +#define JELLYFIN_DTO_PLAYREQUESTDTO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class PlayRequestDto : public QObject { + Q_OBJECT +public: + explicit PlayRequestDto(QObject *parent = nullptr); + static PlayRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the playing queue. + */ + Q_PROPERTY(QStringList playingQueue READ playingQueue WRITE setPlayingQueue NOTIFY playingQueueChanged) + /** + * @brief Gets or sets the position of the playing item in the queue. + */ + Q_PROPERTY(qint32 playingItemPosition READ playingItemPosition WRITE setPlayingItemPosition NOTIFY playingItemPositionChanged) + /** + * @brief Gets or sets the start position ticks. + */ + Q_PROPERTY(qint64 startPositionTicks READ startPositionTicks WRITE setStartPositionTicks NOTIFY startPositionTicksChanged) + + QStringList playingQueue() const; + void setPlayingQueue(QStringList newPlayingQueue); + + qint32 playingItemPosition() const; + void setPlayingItemPosition(qint32 newPlayingItemPosition); + + qint64 startPositionTicks() const; + void setStartPositionTicks(qint64 newStartPositionTicks); + +signals: + void playingQueueChanged(QStringList newPlayingQueue); + void playingItemPositionChanged(qint32 newPlayingItemPosition); + void startPositionTicksChanged(qint64 newStartPositionTicks); +protected: + QStringList m_playingQueue; + qint32 m_playingItemPosition; + qint64 m_startPositionTicks; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/playstatecommand.h b/core/include/JellyfinQt/DTO/playstatecommand.h new file mode 100644 index 0000000..6a27105 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playstatecommand.h @@ -0,0 +1,61 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYSTATECOMMAND_H +#define JELLYFIN_DTO_PLAYSTATECOMMAND_H + +#include + +namespace Jellyfin { +namespace DTO { + +class PlaystateCommandClass { + Q_GADGET +public: + enum Value { + Stop, + Pause, + Unpause, + NextTrack, + PreviousTrack, + Seek, + Rewind, + FastForward, + PlayPause, + }; + Q_ENUM(Value) +private: + explicit PlaystateCommandClass(); +}; +typedef PlaystateCommandClass::Value PlaystateCommand; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYSTATECOMMAND_H diff --git a/core/include/JellyfinQt/DTO/playstaterequest.h b/core/include/JellyfinQt/DTO/playstaterequest.h new file mode 100644 index 0000000..43af866 --- /dev/null +++ b/core/include/JellyfinQt/DTO/playstaterequest.h @@ -0,0 +1,79 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLAYSTATEREQUEST_H +#define JELLYFIN_DTO_PLAYSTATEREQUEST_H + +#include +#include +#include + +#include "JellyfinQt/DTO/playstatecommand.h" + +namespace Jellyfin { +namespace DTO { + +class PlaystateRequest : public QObject { + Q_OBJECT +public: + explicit PlaystateRequest(QObject *parent = nullptr); + static PlaystateRequest *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(PlaystateCommand command READ command WRITE setCommand NOTIFY commandChanged) + Q_PROPERTY(qint64 seekPositionTicks READ seekPositionTicks WRITE setSeekPositionTicks NOTIFY seekPositionTicksChanged) + /** + * @brief Gets or sets the controlling user identifier. + */ + Q_PROPERTY(QString controllingUserId READ controllingUserId WRITE setControllingUserId NOTIFY controllingUserIdChanged) + + PlaystateCommand command() const; + void setCommand(PlaystateCommand newCommand); + + qint64 seekPositionTicks() const; + void setSeekPositionTicks(qint64 newSeekPositionTicks); + + QString controllingUserId() const; + void setControllingUserId(QString newControllingUserId); + +signals: + void commandChanged(PlaystateCommand newCommand); + void seekPositionTicksChanged(qint64 newSeekPositionTicks); + void controllingUserIdChanged(QString newControllingUserId); +protected: + PlaystateCommand m_command; + qint64 m_seekPositionTicks; + QString m_controllingUserId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLAYSTATEREQUEST_H diff --git a/core/include/JellyfinQt/DTO/plugininfo.h b/core/include/JellyfinQt/DTO/plugininfo.h new file mode 100644 index 0000000..8462a88 --- /dev/null +++ b/core/include/JellyfinQt/DTO/plugininfo.h @@ -0,0 +1,126 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLUGININFO_H +#define JELLYFIN_DTO_PLUGININFO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/pluginstatus.h" + +namespace Jellyfin { +namespace DTO { + +class Version; + +class PluginInfo : public QObject { + Q_OBJECT +public: + explicit PluginInfo(QObject *parent = nullptr); + static PluginInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(Version * version READ version WRITE setVersion NOTIFY versionChanged) + /** + * @brief Gets or sets the name of the configuration file. + */ + Q_PROPERTY(QString configurationFileName READ configurationFileName WRITE setConfigurationFileName NOTIFY configurationFileNameChanged) + /** + * @brief Gets or sets the description. + */ + Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY descriptionChanged) + /** + * @brief Gets or sets the unique id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets a value indicating whether the plugin can be uninstalled. + */ + Q_PROPERTY(bool canUninstall READ canUninstall WRITE setCanUninstall NOTIFY canUninstallChanged) + /** + * @brief Gets or sets a value indicating whether this plugin has a valid image. + */ + Q_PROPERTY(bool hasImage READ hasImage WRITE setHasImage NOTIFY hasImageChanged) + Q_PROPERTY(PluginStatus status READ status WRITE setStatus NOTIFY statusChanged) + + QString name() const; + void setName(QString newName); + + Version * version() const; + void setVersion(Version * newVersion); + + QString configurationFileName() const; + void setConfigurationFileName(QString newConfigurationFileName); + + QString description() const; + void setDescription(QString newDescription); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + bool canUninstall() const; + void setCanUninstall(bool newCanUninstall); + + bool hasImage() const; + void setHasImage(bool newHasImage); + + PluginStatus status() const; + void setStatus(PluginStatus newStatus); + +signals: + void nameChanged(QString newName); + void versionChanged(Version * newVersion); + void configurationFileNameChanged(QString newConfigurationFileName); + void descriptionChanged(QString newDescription); + void jellyfinIdChanged(QString newJellyfinId); + void canUninstallChanged(bool newCanUninstall); + void hasImageChanged(bool newHasImage); + void statusChanged(PluginStatus newStatus); +protected: + QString m_name; + Version * m_version = nullptr; + QString m_configurationFileName; + QString m_description; + QString m_jellyfinId; + bool m_canUninstall; + bool m_hasImage; + PluginStatus m_status; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLUGININFO_H diff --git a/core/include/JellyfinQt/DTO/pluginsecurityinfo.h b/core/include/JellyfinQt/DTO/pluginsecurityinfo.h new file mode 100644 index 0000000..264082b --- /dev/null +++ b/core/include/JellyfinQt/DTO/pluginsecurityinfo.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLUGINSECURITYINFO_H +#define JELLYFIN_DTO_PLUGINSECURITYINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class PluginSecurityInfo : public QObject { + Q_OBJECT +public: + explicit PluginSecurityInfo(QObject *parent = nullptr); + static PluginSecurityInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the supporter key. + */ + Q_PROPERTY(QString supporterKey READ supporterKey WRITE setSupporterKey NOTIFY supporterKeyChanged) + /** + * @brief Gets or sets a value indicating whether is mb supporter. + */ + Q_PROPERTY(bool isMbSupporter READ isMbSupporter WRITE setIsMbSupporter NOTIFY isMbSupporterChanged) + + QString supporterKey() const; + void setSupporterKey(QString newSupporterKey); + + bool isMbSupporter() const; + void setIsMbSupporter(bool newIsMbSupporter); + +signals: + void supporterKeyChanged(QString newSupporterKey); + void isMbSupporterChanged(bool newIsMbSupporter); +protected: + QString m_supporterKey; + bool m_isMbSupporter; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLUGINSECURITYINFO_H diff --git a/core/include/JellyfinQt/DTO/pluginstatus.h b/core/include/JellyfinQt/DTO/pluginstatus.h new file mode 100644 index 0000000..e87b565 --- /dev/null +++ b/core/include/JellyfinQt/DTO/pluginstatus.h @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PLUGINSTATUS_H +#define JELLYFIN_DTO_PLUGINSTATUS_H + +#include + +namespace Jellyfin { +namespace DTO { + +class PluginStatusClass { + Q_GADGET +public: + enum Value { + Active, + Restart, + Deleted, + Superceded, + Malfunctioned, + NotSupported, + Disabled, + }; + Q_ENUM(Value) +private: + explicit PluginStatusClass(); +}; +typedef PluginStatusClass::Value PluginStatus; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PLUGINSTATUS_H diff --git a/core/include/JellyfinQt/DTO/previousitemrequestdto.h b/core/include/JellyfinQt/DTO/previousitemrequestdto.h new file mode 100644 index 0000000..eaf1bc3 --- /dev/null +++ b/core/include/JellyfinQt/DTO/previousitemrequestdto.h @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PREVIOUSITEMREQUESTDTO_H +#define JELLYFIN_DTO_PREVIOUSITEMREQUESTDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class PreviousItemRequestDto : public QObject { + Q_OBJECT +public: + explicit PreviousItemRequestDto(QObject *parent = nullptr); + static PreviousItemRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the playing item identifier. + */ + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + +signals: + void playlistItemIdChanged(QString newPlaylistItemId); +protected: + QString m_playlistItemId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PREVIOUSITEMREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/problemdetails.h b/core/include/JellyfinQt/DTO/problemdetails.h new file mode 100644 index 0000000..f44ae1b --- /dev/null +++ b/core/include/JellyfinQt/DTO/problemdetails.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PROBLEMDETAILS_H +#define JELLYFIN_DTO_PROBLEMDETAILS_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ProblemDetails : public QObject { + Q_OBJECT +public: + explicit ProblemDetails(QObject *parent = nullptr); + static ProblemDetails *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged) + Q_PROPERTY(qint32 status READ status WRITE setStatus NOTIFY statusChanged) + Q_PROPERTY(QString detail READ detail WRITE setDetail NOTIFY detailChanged) + Q_PROPERTY(QString instance READ instance WRITE setInstance NOTIFY instanceChanged) + + QString type() const; + void setType(QString newType); + + QString title() const; + void setTitle(QString newTitle); + + qint32 status() const; + void setStatus(qint32 newStatus); + + QString detail() const; + void setDetail(QString newDetail); + + QString instance() const; + void setInstance(QString newInstance); + +signals: + void typeChanged(QString newType); + void titleChanged(QString newTitle); + void statusChanged(qint32 newStatus); + void detailChanged(QString newDetail); + void instanceChanged(QString newInstance); +protected: + QString m_type; + QString m_title; + qint32 m_status; + QString m_detail; + QString m_instance; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PROBLEMDETAILS_H diff --git a/core/include/JellyfinQt/DTO/profilecondition.h b/core/include/JellyfinQt/DTO/profilecondition.h new file mode 100644 index 0000000..4871575 --- /dev/null +++ b/core/include/JellyfinQt/DTO/profilecondition.h @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PROFILECONDITION_H +#define JELLYFIN_DTO_PROFILECONDITION_H + +#include +#include +#include + +#include "JellyfinQt/DTO/profileconditiontype.h" +#include "JellyfinQt/DTO/profileconditionvalue.h" + +namespace Jellyfin { +namespace DTO { + +class ProfileCondition : public QObject { + Q_OBJECT +public: + explicit ProfileCondition(QObject *parent = nullptr); + static ProfileCondition *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(ProfileConditionType condition READ condition WRITE setCondition NOTIFY conditionChanged) + Q_PROPERTY(ProfileConditionValue property READ property WRITE setProperty NOTIFY propertyChanged) + Q_PROPERTY(QString value READ value WRITE setValue NOTIFY valueChanged) + Q_PROPERTY(bool isRequired READ isRequired WRITE setIsRequired NOTIFY isRequiredChanged) + + ProfileConditionType condition() const; + void setCondition(ProfileConditionType newCondition); + + ProfileConditionValue property() const; + void setProperty(ProfileConditionValue newProperty); + + QString value() const; + void setValue(QString newValue); + + bool isRequired() const; + void setIsRequired(bool newIsRequired); + +signals: + void conditionChanged(ProfileConditionType newCondition); + void propertyChanged(ProfileConditionValue newProperty); + void valueChanged(QString newValue); + void isRequiredChanged(bool newIsRequired); +protected: + ProfileConditionType m_condition; + ProfileConditionValue m_property; + QString m_value; + bool m_isRequired; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PROFILECONDITION_H diff --git a/core/include/JellyfinQt/DTO/profileconditiontype.h b/core/include/JellyfinQt/DTO/profileconditiontype.h new file mode 100644 index 0000000..87169fb --- /dev/null +++ b/core/include/JellyfinQt/DTO/profileconditiontype.h @@ -0,0 +1,57 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PROFILECONDITIONTYPE_H +#define JELLYFIN_DTO_PROFILECONDITIONTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ProfileConditionTypeClass { + Q_GADGET +public: + enum Value { + Equals, + NotEquals, + LessThanEqual, + GreaterThanEqual, + EqualsAny, + }; + Q_ENUM(Value) +private: + explicit ProfileConditionTypeClass(); +}; +typedef ProfileConditionTypeClass::Value ProfileConditionType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PROFILECONDITIONTYPE_H diff --git a/core/include/JellyfinQt/DTO/profileconditionvalue.h b/core/include/JellyfinQt/DTO/profileconditionvalue.h new file mode 100644 index 0000000..1010301 --- /dev/null +++ b/core/include/JellyfinQt/DTO/profileconditionvalue.h @@ -0,0 +1,75 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PROFILECONDITIONVALUE_H +#define JELLYFIN_DTO_PROFILECONDITIONVALUE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ProfileConditionValueClass { + Q_GADGET +public: + enum Value { + AudioChannels, + AudioBitrate, + AudioProfile, + Width, + Height, + Has64BitOffsets, + PacketLength, + VideoBitDepth, + VideoBitrate, + VideoFramerate, + VideoLevel, + VideoProfile, + VideoTimestamp, + IsAnamorphic, + RefFrames, + NumAudioStreams, + NumVideoStreams, + IsSecondaryAudio, + VideoCodecTag, + IsAvc, + IsInterlaced, + AudioSampleRate, + AudioBitDepth, + }; + Q_ENUM(Value) +private: + explicit ProfileConditionValueClass(); +}; +typedef ProfileConditionValueClass::Value ProfileConditionValue; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PROFILECONDITIONVALUE_H diff --git a/core/include/JellyfinQt/DTO/programaudio.h b/core/include/JellyfinQt/DTO/programaudio.h new file mode 100644 index 0000000..a4d6de2 --- /dev/null +++ b/core/include/JellyfinQt/DTO/programaudio.h @@ -0,0 +1,58 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PROGRAMAUDIO_H +#define JELLYFIN_DTO_PROGRAMAUDIO_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ProgramAudioClass { + Q_GADGET +public: + enum Value { + Mono, + Stereo, + Dolby, + DolbyDigital, + Thx, + Atmos, + }; + Q_ENUM(Value) +private: + explicit ProgramAudioClass(); +}; +typedef ProgramAudioClass::Value ProgramAudio; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PROGRAMAUDIO_H diff --git a/core/include/JellyfinQt/DTO/publicsysteminfo.h b/core/include/JellyfinQt/DTO/publicsysteminfo.h new file mode 100644 index 0000000..9c7bc6d --- /dev/null +++ b/core/include/JellyfinQt/DTO/publicsysteminfo.h @@ -0,0 +1,119 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_PUBLICSYSTEMINFO_H +#define JELLYFIN_DTO_PUBLICSYSTEMINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class PublicSystemInfo : public QObject { + Q_OBJECT +public: + explicit PublicSystemInfo(QObject *parent = nullptr); + static PublicSystemInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the local address. + */ + Q_PROPERTY(QString localAddress READ localAddress WRITE setLocalAddress NOTIFY localAddressChanged) + /** + * @brief Gets or sets the name of the server. + */ + Q_PROPERTY(QString serverName READ serverName WRITE setServerName NOTIFY serverNameChanged) + /** + * @brief Gets or sets the server version. + */ + Q_PROPERTY(QString version READ version WRITE setVersion NOTIFY versionChanged) + /** + * @brief Gets or sets the product name. This is the AssemblyProduct name. + */ + Q_PROPERTY(QString productName READ productName WRITE setProductName NOTIFY productNameChanged) + /** + * @brief Gets or sets the operating system. + */ + Q_PROPERTY(QString operatingSystem READ operatingSystem WRITE setOperatingSystem NOTIFY operatingSystemChanged) + /** + * @brief Gets or sets the id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets a value indicating whether the startup wizard is completed. + */ + Q_PROPERTY(bool startupWizardCompleted READ startupWizardCompleted WRITE setStartupWizardCompleted NOTIFY startupWizardCompletedChanged) + + QString localAddress() const; + void setLocalAddress(QString newLocalAddress); + + QString serverName() const; + void setServerName(QString newServerName); + + QString version() const; + void setVersion(QString newVersion); + + QString productName() const; + void setProductName(QString newProductName); + + QString operatingSystem() const; + void setOperatingSystem(QString newOperatingSystem); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + bool startupWizardCompleted() const; + void setStartupWizardCompleted(bool newStartupWizardCompleted); + +signals: + void localAddressChanged(QString newLocalAddress); + void serverNameChanged(QString newServerName); + void versionChanged(QString newVersion); + void productNameChanged(QString newProductName); + void operatingSystemChanged(QString newOperatingSystem); + void jellyfinIdChanged(QString newJellyfinId); + void startupWizardCompletedChanged(bool newStartupWizardCompleted); +protected: + QString m_localAddress; + QString m_serverName; + QString m_version; + QString m_productName; + QString m_operatingSystem; + QString m_jellyfinId; + bool m_startupWizardCompleted; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_PUBLICSYSTEMINFO_H diff --git a/core/include/JellyfinQt/DTO/queryfilters.h b/core/include/JellyfinQt/DTO/queryfilters.h new file mode 100644 index 0000000..df37156 --- /dev/null +++ b/core/include/JellyfinQt/DTO/queryfilters.h @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_QUERYFILTERS_H +#define JELLYFIN_DTO_QUERYFILTERS_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class NameGuidPair; + +class QueryFilters : public QObject { + Q_OBJECT +public: + explicit QueryFilters(QObject *parent = nullptr); + static QueryFilters *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QList genres READ genres WRITE setGenres NOTIFY genresChanged) + Q_PROPERTY(QStringList tags READ tags WRITE setTags NOTIFY tagsChanged) + + QList genres() const; + void setGenres(QList newGenres); + + QStringList tags() const; + void setTags(QStringList newTags); + +signals: + void genresChanged(QList newGenres); + void tagsChanged(QStringList newTags); +protected: + QList m_genres; + QStringList m_tags; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_QUERYFILTERS_H diff --git a/core/include/JellyfinQt/DTO/queryfilterslegacy.h b/core/include/JellyfinQt/DTO/queryfilterslegacy.h new file mode 100644 index 0000000..bf42c1c --- /dev/null +++ b/core/include/JellyfinQt/DTO/queryfilterslegacy.h @@ -0,0 +1,82 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_QUERYFILTERSLEGACY_H +#define JELLYFIN_DTO_QUERYFILTERSLEGACY_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class QueryFiltersLegacy : public QObject { + Q_OBJECT +public: + explicit QueryFiltersLegacy(QObject *parent = nullptr); + static QueryFiltersLegacy *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QStringList genres READ genres WRITE setGenres NOTIFY genresChanged) + Q_PROPERTY(QStringList tags READ tags WRITE setTags NOTIFY tagsChanged) + Q_PROPERTY(QStringList officialRatings READ officialRatings WRITE setOfficialRatings NOTIFY officialRatingsChanged) + Q_PROPERTY(QList years READ years WRITE setYears NOTIFY yearsChanged) + + QStringList genres() const; + void setGenres(QStringList newGenres); + + QStringList tags() const; + void setTags(QStringList newTags); + + QStringList officialRatings() const; + void setOfficialRatings(QStringList newOfficialRatings); + + QList years() const; + void setYears(QList newYears); + +signals: + void genresChanged(QStringList newGenres); + void tagsChanged(QStringList newTags); + void officialRatingsChanged(QStringList newOfficialRatings); + void yearsChanged(QList newYears); +protected: + QStringList m_genres; + QStringList m_tags; + QStringList m_officialRatings; + QList m_years; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_QUERYFILTERSLEGACY_H diff --git a/core/include/JellyfinQt/DTO/queueitem.h b/core/include/JellyfinQt/DTO/queueitem.h new file mode 100644 index 0000000..1e67089 --- /dev/null +++ b/core/include/JellyfinQt/DTO/queueitem.h @@ -0,0 +1,68 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_QUEUEITEM_H +#define JELLYFIN_DTO_QUEUEITEM_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class QueueItem : public QObject { + Q_OBJECT +public: + explicit QueueItem(QObject *parent = nullptr); + static QueueItem *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + +signals: + void jellyfinIdChanged(QString newJellyfinId); + void playlistItemIdChanged(QString newPlaylistItemId); +protected: + QString m_jellyfinId; + QString m_playlistItemId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_QUEUEITEM_H diff --git a/core/include/JellyfinQt/DTO/queuerequestdto.h b/core/include/JellyfinQt/DTO/queuerequestdto.h new file mode 100644 index 0000000..e1773c4 --- /dev/null +++ b/core/include/JellyfinQt/DTO/queuerequestdto.h @@ -0,0 +1,75 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_QUEUEREQUESTDTO_H +#define JELLYFIN_DTO_QUEUEREQUESTDTO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/groupqueuemode.h" + +namespace Jellyfin { +namespace DTO { + +class QueueRequestDto : public QObject { + Q_OBJECT +public: + explicit QueueRequestDto(QObject *parent = nullptr); + static QueueRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the items to enqueue. + */ + Q_PROPERTY(QStringList itemIds READ itemIds WRITE setItemIds NOTIFY itemIdsChanged) + Q_PROPERTY(GroupQueueMode mode READ mode WRITE setMode NOTIFY modeChanged) + + QStringList itemIds() const; + void setItemIds(QStringList newItemIds); + + GroupQueueMode mode() const; + void setMode(GroupQueueMode newMode); + +signals: + void itemIdsChanged(QStringList newItemIds); + void modeChanged(GroupQueueMode newMode); +protected: + QStringList m_itemIds; + GroupQueueMode m_mode; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_QUEUEREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/quickconnectdto.h b/core/include/JellyfinQt/DTO/quickconnectdto.h new file mode 100644 index 0000000..d74e7c3 --- /dev/null +++ b/core/include/JellyfinQt/DTO/quickconnectdto.h @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_QUICKCONNECTDTO_H +#define JELLYFIN_DTO_QUICKCONNECTDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class QuickConnectDto : public QObject { + Q_OBJECT +public: + explicit QuickConnectDto(QObject *parent = nullptr); + static QuickConnectDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the quick connect token. + */ + Q_PROPERTY(QString token READ token WRITE setToken NOTIFY tokenChanged) + + QString token() const; + void setToken(QString newToken); + +signals: + void tokenChanged(QString newToken); +protected: + QString m_token; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_QUICKCONNECTDTO_H diff --git a/core/include/JellyfinQt/DTO/quickconnectresult.h b/core/include/JellyfinQt/DTO/quickconnectresult.h new file mode 100644 index 0000000..af116a3 --- /dev/null +++ b/core/include/JellyfinQt/DTO/quickconnectresult.h @@ -0,0 +1,111 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_QUICKCONNECTRESULT_H +#define JELLYFIN_DTO_QUICKCONNECTRESULT_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class QuickConnectResult : public QObject { + Q_OBJECT +public: + explicit QuickConnectResult(QObject *parent = nullptr); + static QuickConnectResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets a value indicating whether this request is authorized. + */ + Q_PROPERTY(bool authenticated READ authenticated WRITE setAuthenticated NOTIFY authenticatedChanged) + /** + * @brief Gets or sets the secret value used to uniquely identify this request. Can be used to retrieve authentication information. + */ + Q_PROPERTY(QString secret READ secret WRITE setSecret NOTIFY secretChanged) + /** + * @brief Gets or sets the user facing code used so the user can quickly differentiate this request from others. + */ + Q_PROPERTY(QString code READ code WRITE setCode NOTIFY codeChanged) + /** + * @brief Gets or sets the private access token. + */ + Q_PROPERTY(QString authentication READ authentication WRITE setAuthentication NOTIFY authenticationChanged) + /** + * @brief Gets or sets an error message. + */ + Q_PROPERTY(QString error READ error WRITE setError NOTIFY errorChanged) + /** + * @brief Gets or sets the DateTime that this request was created. + */ + Q_PROPERTY(QDateTime dateAdded READ dateAdded WRITE setDateAdded NOTIFY dateAddedChanged) + + bool authenticated() const; + void setAuthenticated(bool newAuthenticated); + + QString secret() const; + void setSecret(QString newSecret); + + QString code() const; + void setCode(QString newCode); + + QString authentication() const; + void setAuthentication(QString newAuthentication); + + QString error() const; + void setError(QString newError); + + QDateTime dateAdded() const; + void setDateAdded(QDateTime newDateAdded); + +signals: + void authenticatedChanged(bool newAuthenticated); + void secretChanged(QString newSecret); + void codeChanged(QString newCode); + void authenticationChanged(QString newAuthentication); + void errorChanged(QString newError); + void dateAddedChanged(QDateTime newDateAdded); +protected: + bool m_authenticated; + QString m_secret; + QString m_code; + QString m_authentication; + QString m_error; + QDateTime m_dateAdded; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_QUICKCONNECTRESULT_H diff --git a/core/include/JellyfinQt/DTO/quickconnectstate.h b/core/include/JellyfinQt/DTO/quickconnectstate.h new file mode 100644 index 0000000..c945b86 --- /dev/null +++ b/core/include/JellyfinQt/DTO/quickconnectstate.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_QUICKCONNECTSTATE_H +#define JELLYFIN_DTO_QUICKCONNECTSTATE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class QuickConnectStateClass { + Q_GADGET +public: + enum Value { + Unavailable, + Available, + Active, + }; + Q_ENUM(Value) +private: + explicit QuickConnectStateClass(); +}; +typedef QuickConnectStateClass::Value QuickConnectState; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_QUICKCONNECTSTATE_H diff --git a/core/include/JellyfinQt/DTO/ratingtype.h b/core/include/JellyfinQt/DTO/ratingtype.h new file mode 100644 index 0000000..112cc2f --- /dev/null +++ b/core/include/JellyfinQt/DTO/ratingtype.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_RATINGTYPE_H +#define JELLYFIN_DTO_RATINGTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class RatingTypeClass { + Q_GADGET +public: + enum Value { + Score, + Likes, + }; + Q_ENUM(Value) +private: + explicit RatingTypeClass(); +}; +typedef RatingTypeClass::Value RatingType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_RATINGTYPE_H diff --git a/core/include/JellyfinQt/DTO/readyrequestdto.h b/core/include/JellyfinQt/DTO/readyrequestdto.h new file mode 100644 index 0000000..f7aec24 --- /dev/null +++ b/core/include/JellyfinQt/DTO/readyrequestdto.h @@ -0,0 +1,93 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_READYREQUESTDTO_H +#define JELLYFIN_DTO_READYREQUESTDTO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ReadyRequestDto : public QObject { + Q_OBJECT +public: + explicit ReadyRequestDto(QObject *parent = nullptr); + static ReadyRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets when the request has been made by the client. + */ + Q_PROPERTY(QDateTime when READ when WRITE setWhen NOTIFY whenChanged) + /** + * @brief Gets or sets the position ticks. + */ + Q_PROPERTY(qint64 positionTicks READ positionTicks WRITE setPositionTicks NOTIFY positionTicksChanged) + /** + * @brief Gets or sets a value indicating whether the client playback is unpaused. + */ + Q_PROPERTY(bool isPlaying READ isPlaying WRITE setIsPlaying NOTIFY isPlayingChanged) + /** + * @brief Gets or sets the playlist item identifier of the playing item. + */ + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + + QDateTime when() const; + void setWhen(QDateTime newWhen); + + qint64 positionTicks() const; + void setPositionTicks(qint64 newPositionTicks); + + bool isPlaying() const; + void setIsPlaying(bool newIsPlaying); + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + +signals: + void whenChanged(QDateTime newWhen); + void positionTicksChanged(qint64 newPositionTicks); + void isPlayingChanged(bool newIsPlaying); + void playlistItemIdChanged(QString newPlaylistItemId); +protected: + QDateTime m_when; + qint64 m_positionTicks; + bool m_isPlaying; + QString m_playlistItemId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_READYREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/recommendationdto.h b/core/include/JellyfinQt/DTO/recommendationdto.h new file mode 100644 index 0000000..b71406b --- /dev/null +++ b/core/include/JellyfinQt/DTO/recommendationdto.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_RECOMMENDATIONDTO_H +#define JELLYFIN_DTO_RECOMMENDATIONDTO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/recommendationtype.h" + +namespace Jellyfin { +namespace DTO { + +class BaseItemDto; + +class RecommendationDto : public QObject { + Q_OBJECT +public: + explicit RecommendationDto(QObject *parent = nullptr); + static RecommendationDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QList items READ items WRITE setItems NOTIFY itemsChanged) + Q_PROPERTY(RecommendationType recommendationType READ recommendationType WRITE setRecommendationType NOTIFY recommendationTypeChanged) + Q_PROPERTY(QString baselineItemName READ baselineItemName WRITE setBaselineItemName NOTIFY baselineItemNameChanged) + Q_PROPERTY(QString categoryId READ categoryId WRITE setCategoryId NOTIFY categoryIdChanged) + + QList items() const; + void setItems(QList newItems); + + RecommendationType recommendationType() const; + void setRecommendationType(RecommendationType newRecommendationType); + + QString baselineItemName() const; + void setBaselineItemName(QString newBaselineItemName); + + QString categoryId() const; + void setCategoryId(QString newCategoryId); + +signals: + void itemsChanged(QList newItems); + void recommendationTypeChanged(RecommendationType newRecommendationType); + void baselineItemNameChanged(QString newBaselineItemName); + void categoryIdChanged(QString newCategoryId); +protected: + QList m_items; + RecommendationType m_recommendationType; + QString m_baselineItemName; + QString m_categoryId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_RECOMMENDATIONDTO_H diff --git a/core/include/JellyfinQt/DTO/recommendationtype.h b/core/include/JellyfinQt/DTO/recommendationtype.h new file mode 100644 index 0000000..80cfdc0 --- /dev/null +++ b/core/include/JellyfinQt/DTO/recommendationtype.h @@ -0,0 +1,58 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_RECOMMENDATIONTYPE_H +#define JELLYFIN_DTO_RECOMMENDATIONTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class RecommendationTypeClass { + Q_GADGET +public: + enum Value { + SimilarToRecentlyPlayed, + SimilarToLikedItem, + HasDirectorFromRecentlyPlayed, + HasActorFromRecentlyPlayed, + HasLikedDirector, + HasLikedActor, + }; + Q_ENUM(Value) +private: + explicit RecommendationTypeClass(); +}; +typedef RecommendationTypeClass::Value RecommendationType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_RECOMMENDATIONTYPE_H diff --git a/core/include/JellyfinQt/DTO/recordingstatus.h b/core/include/JellyfinQt/DTO/recordingstatus.h new file mode 100644 index 0000000..b06076e --- /dev/null +++ b/core/include/JellyfinQt/DTO/recordingstatus.h @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_RECORDINGSTATUS_H +#define JELLYFIN_DTO_RECORDINGSTATUS_H + +#include + +namespace Jellyfin { +namespace DTO { + +class RecordingStatusClass { + Q_GADGET +public: + enum Value { + New, + InProgress, + Completed, + Cancelled, + ConflictedOk, + ConflictedNotOk, + Error, + }; + Q_ENUM(Value) +private: + explicit RecordingStatusClass(); +}; +typedef RecordingStatusClass::Value RecordingStatus; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_RECORDINGSTATUS_H diff --git a/core/include/JellyfinQt/DTO/remoteimageinfo.h b/core/include/JellyfinQt/DTO/remoteimageinfo.h new file mode 100644 index 0000000..91ceb55 --- /dev/null +++ b/core/include/JellyfinQt/DTO/remoteimageinfo.h @@ -0,0 +1,143 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_REMOTEIMAGEINFO_H +#define JELLYFIN_DTO_REMOTEIMAGEINFO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/imagetype.h" +#include "JellyfinQt/DTO/ratingtype.h" + +namespace Jellyfin { +namespace DTO { + +class RemoteImageInfo : public QObject { + Q_OBJECT +public: + explicit RemoteImageInfo(QObject *parent = nullptr); + static RemoteImageInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name of the provider. + */ + Q_PROPERTY(QString providerName READ providerName WRITE setProviderName NOTIFY providerNameChanged) + /** + * @brief Gets or sets the URL. + */ + Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY urlChanged) + /** + * @brief Gets a url used for previewing a smaller version. + */ + Q_PROPERTY(QString thumbnailUrl READ thumbnailUrl WRITE setThumbnailUrl NOTIFY thumbnailUrlChanged) + /** + * @brief Gets or sets the height. + */ + Q_PROPERTY(qint32 height READ height WRITE setHeight NOTIFY heightChanged) + /** + * @brief Gets or sets the width. + */ + Q_PROPERTY(qint32 width READ width WRITE setWidth NOTIFY widthChanged) + /** + * @brief Gets or sets the community rating. + */ + Q_PROPERTY(double communityRating READ communityRating WRITE setCommunityRating NOTIFY communityRatingChanged) + /** + * @brief Gets or sets the vote count. + */ + Q_PROPERTY(qint32 voteCount READ voteCount WRITE setVoteCount NOTIFY voteCountChanged) + /** + * @brief Gets or sets the language. + */ + Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged) + Q_PROPERTY(ImageType type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(RatingType ratingType READ ratingType WRITE setRatingType NOTIFY ratingTypeChanged) + + QString providerName() const; + void setProviderName(QString newProviderName); + + QString url() const; + void setUrl(QString newUrl); + + QString thumbnailUrl() const; + void setThumbnailUrl(QString newThumbnailUrl); + + qint32 height() const; + void setHeight(qint32 newHeight); + + qint32 width() const; + void setWidth(qint32 newWidth); + + double communityRating() const; + void setCommunityRating(double newCommunityRating); + + qint32 voteCount() const; + void setVoteCount(qint32 newVoteCount); + + QString language() const; + void setLanguage(QString newLanguage); + + ImageType type() const; + void setType(ImageType newType); + + RatingType ratingType() const; + void setRatingType(RatingType newRatingType); + +signals: + void providerNameChanged(QString newProviderName); + void urlChanged(QString newUrl); + void thumbnailUrlChanged(QString newThumbnailUrl); + void heightChanged(qint32 newHeight); + void widthChanged(qint32 newWidth); + void communityRatingChanged(double newCommunityRating); + void voteCountChanged(qint32 newVoteCount); + void languageChanged(QString newLanguage); + void typeChanged(ImageType newType); + void ratingTypeChanged(RatingType newRatingType); +protected: + QString m_providerName; + QString m_url; + QString m_thumbnailUrl; + qint32 m_height; + qint32 m_width; + double m_communityRating; + qint32 m_voteCount; + QString m_language; + ImageType m_type; + RatingType m_ratingType; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_REMOTEIMAGEINFO_H diff --git a/core/include/JellyfinQt/DTO/remoteimageresult.h b/core/include/JellyfinQt/DTO/remoteimageresult.h new file mode 100644 index 0000000..d3f9666 --- /dev/null +++ b/core/include/JellyfinQt/DTO/remoteimageresult.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_REMOTEIMAGERESULT_H +#define JELLYFIN_DTO_REMOTEIMAGERESULT_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class RemoteImageInfo; + +class RemoteImageResult : public QObject { + Q_OBJECT +public: + explicit RemoteImageResult(QObject *parent = nullptr); + static RemoteImageResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the images. + */ + Q_PROPERTY(QList images READ images WRITE setImages NOTIFY imagesChanged) + /** + * @brief Gets or sets the total record count. + */ + Q_PROPERTY(qint32 totalRecordCount READ totalRecordCount WRITE setTotalRecordCount NOTIFY totalRecordCountChanged) + /** + * @brief Gets or sets the providers. + */ + Q_PROPERTY(QStringList providers READ providers WRITE setProviders NOTIFY providersChanged) + + QList images() const; + void setImages(QList newImages); + + qint32 totalRecordCount() const; + void setTotalRecordCount(qint32 newTotalRecordCount); + + QStringList providers() const; + void setProviders(QStringList newProviders); + +signals: + void imagesChanged(QList newImages); + void totalRecordCountChanged(qint32 newTotalRecordCount); + void providersChanged(QStringList newProviders); +protected: + QList m_images; + qint32 m_totalRecordCount; + QStringList m_providers; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_REMOTEIMAGERESULT_H diff --git a/core/include/JellyfinQt/DTO/remotesearchresult.h b/core/include/JellyfinQt/DTO/remotesearchresult.h new file mode 100644 index 0000000..b97cac0 --- /dev/null +++ b/core/include/JellyfinQt/DTO/remotesearchresult.h @@ -0,0 +1,141 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_REMOTESEARCHRESULT_H +#define JELLYFIN_DTO_REMOTESEARCHRESULT_H + +#include +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + + +class RemoteSearchResult : public QObject { + Q_OBJECT +public: + explicit RemoteSearchResult(QObject *parent = nullptr); + static RemoteSearchResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 productionYear READ productionYear WRITE setProductionYear NOTIFY productionYearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 indexNumberEnd READ indexNumberEnd WRITE setIndexNumberEnd NOTIFY indexNumberEndChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(QString imageUrl READ imageUrl WRITE setImageUrl NOTIFY imageUrlChanged) + Q_PROPERTY(QString searchProviderName READ searchProviderName WRITE setSearchProviderName NOTIFY searchProviderNameChanged) + Q_PROPERTY(QString overview READ overview WRITE setOverview NOTIFY overviewChanged) + Q_PROPERTY(RemoteSearchResult * albumArtist READ albumArtist WRITE setAlbumArtist NOTIFY albumArtistChanged) + Q_PROPERTY(QList artists READ artists WRITE setArtists NOTIFY artistsChanged) + + QString name() const; + void setName(QString newName); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 productionYear() const; + void setProductionYear(qint32 newProductionYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 indexNumberEnd() const; + void setIndexNumberEnd(qint32 newIndexNumberEnd); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + QString imageUrl() const; + void setImageUrl(QString newImageUrl); + + QString searchProviderName() const; + void setSearchProviderName(QString newSearchProviderName); + + QString overview() const; + void setOverview(QString newOverview); + + RemoteSearchResult * albumArtist() const; + void setAlbumArtist(RemoteSearchResult * newAlbumArtist); + + QList artists() const; + void setArtists(QList newArtists); + +signals: + void nameChanged(QString newName); + void providerIdsChanged(QJsonObject newProviderIds); + void productionYearChanged(qint32 newProductionYear); + void indexNumberChanged(qint32 newIndexNumber); + void indexNumberEndChanged(qint32 newIndexNumberEnd); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void imageUrlChanged(QString newImageUrl); + void searchProviderNameChanged(QString newSearchProviderName); + void overviewChanged(QString newOverview); + void albumArtistChanged(RemoteSearchResult * newAlbumArtist); + void artistsChanged(QList newArtists); +protected: + QString m_name; + QJsonObject m_providerIds; + qint32 m_productionYear; + qint32 m_indexNumber; + qint32 m_indexNumberEnd; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + QString m_imageUrl; + QString m_searchProviderName; + QString m_overview; + RemoteSearchResult * m_albumArtist = nullptr; + QList m_artists; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_REMOTESEARCHRESULT_H diff --git a/core/include/JellyfinQt/DTO/remotesubtitleinfo.h b/core/include/JellyfinQt/DTO/remotesubtitleinfo.h new file mode 100644 index 0000000..169dff6 --- /dev/null +++ b/core/include/JellyfinQt/DTO/remotesubtitleinfo.h @@ -0,0 +1,123 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_REMOTESUBTITLEINFO_H +#define JELLYFIN_DTO_REMOTESUBTITLEINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class RemoteSubtitleInfo : public QObject { + Q_OBJECT +public: + explicit RemoteSubtitleInfo(QObject *parent = nullptr); + static RemoteSubtitleInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString threeLetterISOLanguageName READ threeLetterISOLanguageName WRITE setThreeLetterISOLanguageName NOTIFY threeLetterISOLanguageNameChanged) + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(QString providerName READ providerName WRITE setProviderName NOTIFY providerNameChanged) + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString format READ format WRITE setFormat NOTIFY formatChanged) + Q_PROPERTY(QString author READ author WRITE setAuthor NOTIFY authorChanged) + Q_PROPERTY(QString comment READ comment WRITE setComment NOTIFY commentChanged) + Q_PROPERTY(QDateTime dateCreated READ dateCreated WRITE setDateCreated NOTIFY dateCreatedChanged) + Q_PROPERTY(float communityRating READ communityRating WRITE setCommunityRating NOTIFY communityRatingChanged) + Q_PROPERTY(qint32 downloadCount READ downloadCount WRITE setDownloadCount NOTIFY downloadCountChanged) + Q_PROPERTY(bool isHashMatch READ isHashMatch WRITE setIsHashMatch NOTIFY isHashMatchChanged) + + QString threeLetterISOLanguageName() const; + void setThreeLetterISOLanguageName(QString newThreeLetterISOLanguageName); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString providerName() const; + void setProviderName(QString newProviderName); + + QString name() const; + void setName(QString newName); + + QString format() const; + void setFormat(QString newFormat); + + QString author() const; + void setAuthor(QString newAuthor); + + QString comment() const; + void setComment(QString newComment); + + QDateTime dateCreated() const; + void setDateCreated(QDateTime newDateCreated); + + float communityRating() const; + void setCommunityRating(float newCommunityRating); + + qint32 downloadCount() const; + void setDownloadCount(qint32 newDownloadCount); + + bool isHashMatch() const; + void setIsHashMatch(bool newIsHashMatch); + +signals: + void threeLetterISOLanguageNameChanged(QString newThreeLetterISOLanguageName); + void jellyfinIdChanged(QString newJellyfinId); + void providerNameChanged(QString newProviderName); + void nameChanged(QString newName); + void formatChanged(QString newFormat); + void authorChanged(QString newAuthor); + void commentChanged(QString newComment); + void dateCreatedChanged(QDateTime newDateCreated); + void communityRatingChanged(float newCommunityRating); + void downloadCountChanged(qint32 newDownloadCount); + void isHashMatchChanged(bool newIsHashMatch); +protected: + QString m_threeLetterISOLanguageName; + QString m_jellyfinId; + QString m_providerName; + QString m_name; + QString m_format; + QString m_author; + QString m_comment; + QDateTime m_dateCreated; + float m_communityRating; + qint32 m_downloadCount; + bool m_isHashMatch; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_REMOTESUBTITLEINFO_H diff --git a/core/include/JellyfinQt/DTO/removefromplaylistrequestdto.h b/core/include/JellyfinQt/DTO/removefromplaylistrequestdto.h new file mode 100644 index 0000000..9d38cd9 --- /dev/null +++ b/core/include/JellyfinQt/DTO/removefromplaylistrequestdto.h @@ -0,0 +1,67 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_REMOVEFROMPLAYLISTREQUESTDTO_H +#define JELLYFIN_DTO_REMOVEFROMPLAYLISTREQUESTDTO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class RemoveFromPlaylistRequestDto : public QObject { + Q_OBJECT +public: + explicit RemoveFromPlaylistRequestDto(QObject *parent = nullptr); + static RemoveFromPlaylistRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the playlist identifiers ot the items. + */ + Q_PROPERTY(QStringList playlistItemIds READ playlistItemIds WRITE setPlaylistItemIds NOTIFY playlistItemIdsChanged) + + QStringList playlistItemIds() const; + void setPlaylistItemIds(QStringList newPlaylistItemIds); + +signals: + void playlistItemIdsChanged(QStringList newPlaylistItemIds); +protected: + QStringList m_playlistItemIds; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_REMOVEFROMPLAYLISTREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/repeatmode.h b/core/include/JellyfinQt/DTO/repeatmode.h new file mode 100644 index 0000000..9075d42 --- /dev/null +++ b/core/include/JellyfinQt/DTO/repeatmode.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_REPEATMODE_H +#define JELLYFIN_DTO_REPEATMODE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class RepeatModeClass { + Q_GADGET +public: + enum Value { + RepeatNone, + RepeatAll, + RepeatOne, + }; + Q_ENUM(Value) +private: + explicit RepeatModeClass(); +}; +typedef RepeatModeClass::Value RepeatMode; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_REPEATMODE_H diff --git a/core/include/JellyfinQt/DTO/repositoryinfo.h b/core/include/JellyfinQt/DTO/repositoryinfo.h new file mode 100644 index 0000000..ebcd85c --- /dev/null +++ b/core/include/JellyfinQt/DTO/repositoryinfo.h @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_REPOSITORYINFO_H +#define JELLYFIN_DTO_REPOSITORYINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class RepositoryInfo : public QObject { + Q_OBJECT +public: + explicit RepositoryInfo(QObject *parent = nullptr); + static RepositoryInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the URL. + */ + Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY urlChanged) + /** + * @brief Gets or sets a value indicating whether the repository is enabled. + */ + Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) + + QString name() const; + void setName(QString newName); + + QString url() const; + void setUrl(QString newUrl); + + bool enabled() const; + void setEnabled(bool newEnabled); + +signals: + void nameChanged(QString newName); + void urlChanged(QString newUrl); + void enabledChanged(bool newEnabled); +protected: + QString m_name; + QString m_url; + bool m_enabled; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_REPOSITORYINFO_H diff --git a/core/include/JellyfinQt/DTO/responseprofile.h b/core/include/JellyfinQt/DTO/responseprofile.h new file mode 100644 index 0000000..ce1aec4 --- /dev/null +++ b/core/include/JellyfinQt/DTO/responseprofile.h @@ -0,0 +1,104 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_RESPONSEPROFILE_H +#define JELLYFIN_DTO_RESPONSEPROFILE_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/dlnaprofiletype.h" + +namespace Jellyfin { +namespace DTO { + +class ProfileCondition; + +class ResponseProfile : public QObject { + Q_OBJECT +public: + explicit ResponseProfile(QObject *parent = nullptr); + static ResponseProfile *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString container READ container WRITE setContainer NOTIFY containerChanged) + Q_PROPERTY(QString audioCodec READ audioCodec WRITE setAudioCodec NOTIFY audioCodecChanged) + Q_PROPERTY(QString videoCodec READ videoCodec WRITE setVideoCodec NOTIFY videoCodecChanged) + Q_PROPERTY(DlnaProfileType type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QString orgPn READ orgPn WRITE setOrgPn NOTIFY orgPnChanged) + Q_PROPERTY(QString mimeType READ mimeType WRITE setMimeType NOTIFY mimeTypeChanged) + Q_PROPERTY(QList conditions READ conditions WRITE setConditions NOTIFY conditionsChanged) + + QString container() const; + void setContainer(QString newContainer); + + QString audioCodec() const; + void setAudioCodec(QString newAudioCodec); + + QString videoCodec() const; + void setVideoCodec(QString newVideoCodec); + + DlnaProfileType type() const; + void setType(DlnaProfileType newType); + + QString orgPn() const; + void setOrgPn(QString newOrgPn); + + QString mimeType() const; + void setMimeType(QString newMimeType); + + QList conditions() const; + void setConditions(QList newConditions); + +signals: + void containerChanged(QString newContainer); + void audioCodecChanged(QString newAudioCodec); + void videoCodecChanged(QString newVideoCodec); + void typeChanged(DlnaProfileType newType); + void orgPnChanged(QString newOrgPn); + void mimeTypeChanged(QString newMimeType); + void conditionsChanged(QList newConditions); +protected: + QString m_container; + QString m_audioCodec; + QString m_videoCodec; + DlnaProfileType m_type; + QString m_orgPn; + QString m_mimeType; + QList m_conditions; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_RESPONSEPROFILE_H diff --git a/core/include/JellyfinQt/DTO/scrolldirection.h b/core/include/JellyfinQt/DTO/scrolldirection.h new file mode 100644 index 0000000..a62f7b2 --- /dev/null +++ b/core/include/JellyfinQt/DTO/scrolldirection.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SCROLLDIRECTION_H +#define JELLYFIN_DTO_SCROLLDIRECTION_H + +#include + +namespace Jellyfin { +namespace DTO { + +class ScrollDirectionClass { + Q_GADGET +public: + enum Value { + Horizontal, + Vertical, + }; + Q_ENUM(Value) +private: + explicit ScrollDirectionClass(); +}; +typedef ScrollDirectionClass::Value ScrollDirection; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SCROLLDIRECTION_H diff --git a/core/include/JellyfinQt/DTO/searchhint.h b/core/include/JellyfinQt/DTO/searchhint.h new file mode 100644 index 0000000..85425c8 --- /dev/null +++ b/core/include/JellyfinQt/DTO/searchhint.h @@ -0,0 +1,302 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SEARCHHINT_H +#define JELLYFIN_DTO_SEARCHHINT_H + +#include +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SearchHint : public QObject { + Q_OBJECT +public: + explicit SearchHint(QObject *parent = nullptr); + static SearchHint *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the item id. + */ + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the matched term. + */ + Q_PROPERTY(QString matchedTerm READ matchedTerm WRITE setMatchedTerm NOTIFY matchedTermChanged) + /** + * @brief Gets or sets the index number. + */ + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + /** + * @brief Gets or sets the production year. + */ + Q_PROPERTY(qint32 productionYear READ productionYear WRITE setProductionYear NOTIFY productionYearChanged) + /** + * @brief Gets or sets the parent index number. + */ + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + /** + * @brief Gets or sets the image tag. + */ + Q_PROPERTY(QString primaryImageTag READ primaryImageTag WRITE setPrimaryImageTag NOTIFY primaryImageTagChanged) + /** + * @brief Gets or sets the thumb image tag. + */ + Q_PROPERTY(QString thumbImageTag READ thumbImageTag WRITE setThumbImageTag NOTIFY thumbImageTagChanged) + /** + * @brief Gets or sets the thumb image item identifier. + */ + Q_PROPERTY(QString thumbImageItemId READ thumbImageItemId WRITE setThumbImageItemId NOTIFY thumbImageItemIdChanged) + /** + * @brief Gets or sets the backdrop image tag. + */ + Q_PROPERTY(QString backdropImageTag READ backdropImageTag WRITE setBackdropImageTag NOTIFY backdropImageTagChanged) + /** + * @brief Gets or sets the backdrop image item identifier. + */ + Q_PROPERTY(QString backdropImageItemId READ backdropImageItemId WRITE setBackdropImageItemId NOTIFY backdropImageItemIdChanged) + /** + * @brief Gets or sets the type. + */ + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(bool isFolder READ isFolder WRITE setIsFolder NOTIFY isFolderChanged) + /** + * @brief Gets or sets the run time ticks. + */ + Q_PROPERTY(qint64 runTimeTicks READ runTimeTicks WRITE setRunTimeTicks NOTIFY runTimeTicksChanged) + /** + * @brief Gets or sets the type of the media. + */ + Q_PROPERTY(QString mediaType READ mediaType WRITE setMediaType NOTIFY mediaTypeChanged) + Q_PROPERTY(QDateTime startDate READ startDate WRITE setStartDate NOTIFY startDateChanged) + Q_PROPERTY(QDateTime endDate READ endDate WRITE setEndDate NOTIFY endDateChanged) + /** + * @brief Gets or sets the series. + */ + Q_PROPERTY(QString series READ series WRITE setSeries NOTIFY seriesChanged) + Q_PROPERTY(QString status READ status WRITE setStatus NOTIFY statusChanged) + /** + * @brief Gets or sets the album. + */ + Q_PROPERTY(QString album READ album WRITE setAlbum NOTIFY albumChanged) + Q_PROPERTY(QString albumId READ albumId WRITE setAlbumId NOTIFY albumIdChanged) + /** + * @brief Gets or sets the album artist. + */ + Q_PROPERTY(QString albumArtist READ albumArtist WRITE setAlbumArtist NOTIFY albumArtistChanged) + /** + * @brief Gets or sets the artists. + */ + Q_PROPERTY(QStringList artists READ artists WRITE setArtists NOTIFY artistsChanged) + /** + * @brief Gets or sets the song count. + */ + Q_PROPERTY(qint32 songCount READ songCount WRITE setSongCount NOTIFY songCountChanged) + /** + * @brief Gets or sets the episode count. + */ + Q_PROPERTY(qint32 episodeCount READ episodeCount WRITE setEpisodeCount NOTIFY episodeCountChanged) + /** + * @brief Gets or sets the channel identifier. + */ + Q_PROPERTY(QString channelId READ channelId WRITE setChannelId NOTIFY channelIdChanged) + /** + * @brief Gets or sets the name of the channel. + */ + Q_PROPERTY(QString channelName READ channelName WRITE setChannelName NOTIFY channelNameChanged) + /** + * @brief Gets or sets the primary image aspect ratio. + */ + Q_PROPERTY(double primaryImageAspectRatio READ primaryImageAspectRatio WRITE setPrimaryImageAspectRatio NOTIFY primaryImageAspectRatioChanged) + + QString itemId() const; + void setItemId(QString newItemId); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString name() const; + void setName(QString newName); + + QString matchedTerm() const; + void setMatchedTerm(QString newMatchedTerm); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 productionYear() const; + void setProductionYear(qint32 newProductionYear); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QString primaryImageTag() const; + void setPrimaryImageTag(QString newPrimaryImageTag); + + QString thumbImageTag() const; + void setThumbImageTag(QString newThumbImageTag); + + QString thumbImageItemId() const; + void setThumbImageItemId(QString newThumbImageItemId); + + QString backdropImageTag() const; + void setBackdropImageTag(QString newBackdropImageTag); + + QString backdropImageItemId() const; + void setBackdropImageItemId(QString newBackdropImageItemId); + + QString type() const; + void setType(QString newType); + + bool isFolder() const; + void setIsFolder(bool newIsFolder); + + qint64 runTimeTicks() const; + void setRunTimeTicks(qint64 newRunTimeTicks); + + QString mediaType() const; + void setMediaType(QString newMediaType); + + QDateTime startDate() const; + void setStartDate(QDateTime newStartDate); + + QDateTime endDate() const; + void setEndDate(QDateTime newEndDate); + + QString series() const; + void setSeries(QString newSeries); + + QString status() const; + void setStatus(QString newStatus); + + QString album() const; + void setAlbum(QString newAlbum); + + QString albumId() const; + void setAlbumId(QString newAlbumId); + + QString albumArtist() const; + void setAlbumArtist(QString newAlbumArtist); + + QStringList artists() const; + void setArtists(QStringList newArtists); + + qint32 songCount() const; + void setSongCount(qint32 newSongCount); + + qint32 episodeCount() const; + void setEpisodeCount(qint32 newEpisodeCount); + + QString channelId() const; + void setChannelId(QString newChannelId); + + QString channelName() const; + void setChannelName(QString newChannelName); + + double primaryImageAspectRatio() const; + void setPrimaryImageAspectRatio(double newPrimaryImageAspectRatio); + +signals: + void itemIdChanged(QString newItemId); + void jellyfinIdChanged(QString newJellyfinId); + void nameChanged(QString newName); + void matchedTermChanged(QString newMatchedTerm); + void indexNumberChanged(qint32 newIndexNumber); + void productionYearChanged(qint32 newProductionYear); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void primaryImageTagChanged(QString newPrimaryImageTag); + void thumbImageTagChanged(QString newThumbImageTag); + void thumbImageItemIdChanged(QString newThumbImageItemId); + void backdropImageTagChanged(QString newBackdropImageTag); + void backdropImageItemIdChanged(QString newBackdropImageItemId); + void typeChanged(QString newType); + void isFolderChanged(bool newIsFolder); + void runTimeTicksChanged(qint64 newRunTimeTicks); + void mediaTypeChanged(QString newMediaType); + void startDateChanged(QDateTime newStartDate); + void endDateChanged(QDateTime newEndDate); + void seriesChanged(QString newSeries); + void statusChanged(QString newStatus); + void albumChanged(QString newAlbum); + void albumIdChanged(QString newAlbumId); + void albumArtistChanged(QString newAlbumArtist); + void artistsChanged(QStringList newArtists); + void songCountChanged(qint32 newSongCount); + void episodeCountChanged(qint32 newEpisodeCount); + void channelIdChanged(QString newChannelId); + void channelNameChanged(QString newChannelName); + void primaryImageAspectRatioChanged(double newPrimaryImageAspectRatio); +protected: + QString m_itemId; + QString m_jellyfinId; + QString m_name; + QString m_matchedTerm; + qint32 m_indexNumber; + qint32 m_productionYear; + qint32 m_parentIndexNumber; + QString m_primaryImageTag; + QString m_thumbImageTag; + QString m_thumbImageItemId; + QString m_backdropImageTag; + QString m_backdropImageItemId; + QString m_type; + bool m_isFolder; + qint64 m_runTimeTicks; + QString m_mediaType; + QDateTime m_startDate; + QDateTime m_endDate; + QString m_series; + QString m_status; + QString m_album; + QString m_albumId; + QString m_albumArtist; + QStringList m_artists; + qint32 m_songCount; + qint32 m_episodeCount; + QString m_channelId; + QString m_channelName; + double m_primaryImageAspectRatio; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SEARCHHINT_H diff --git a/core/include/JellyfinQt/DTO/searchhintresult.h b/core/include/JellyfinQt/DTO/searchhintresult.h new file mode 100644 index 0000000..b03676c --- /dev/null +++ b/core/include/JellyfinQt/DTO/searchhintresult.h @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SEARCHHINTRESULT_H +#define JELLYFIN_DTO_SEARCHHINTRESULT_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SearchHint; + +class SearchHintResult : public QObject { + Q_OBJECT +public: + explicit SearchHintResult(QObject *parent = nullptr); + static SearchHintResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the search hints. + */ + Q_PROPERTY(QList searchHints READ searchHints WRITE setSearchHints NOTIFY searchHintsChanged) + /** + * @brief Gets or sets the total record count. + */ + Q_PROPERTY(qint32 totalRecordCount READ totalRecordCount WRITE setTotalRecordCount NOTIFY totalRecordCountChanged) + + QList searchHints() const; + void setSearchHints(QList newSearchHints); + + qint32 totalRecordCount() const; + void setTotalRecordCount(qint32 newTotalRecordCount); + +signals: + void searchHintsChanged(QList newSearchHints); + void totalRecordCountChanged(qint32 newTotalRecordCount); +protected: + QList m_searchHints; + qint32 m_totalRecordCount; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SEARCHHINTRESULT_H diff --git a/core/include/JellyfinQt/DTO/seekrequestdto.h b/core/include/JellyfinQt/DTO/seekrequestdto.h new file mode 100644 index 0000000..46a0e78 --- /dev/null +++ b/core/include/JellyfinQt/DTO/seekrequestdto.h @@ -0,0 +1,64 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SEEKREQUESTDTO_H +#define JELLYFIN_DTO_SEEKREQUESTDTO_H + +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SeekRequestDto : public QObject { + Q_OBJECT +public: + explicit SeekRequestDto(QObject *parent = nullptr); + static SeekRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the position ticks. + */ + Q_PROPERTY(qint64 positionTicks READ positionTicks WRITE setPositionTicks NOTIFY positionTicksChanged) + + qint64 positionTicks() const; + void setPositionTicks(qint64 newPositionTicks); + +signals: + void positionTicksChanged(qint64 newPositionTicks); +protected: + qint64 m_positionTicks; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SEEKREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/sendcommand.h b/core/include/JellyfinQt/DTO/sendcommand.h new file mode 100644 index 0000000..cca3302 --- /dev/null +++ b/core/include/JellyfinQt/DTO/sendcommand.h @@ -0,0 +1,110 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SENDCOMMAND_H +#define JELLYFIN_DTO_SENDCOMMAND_H + +#include +#include +#include +#include + +#include "JellyfinQt/DTO/sendcommandtype.h" + +namespace Jellyfin { +namespace DTO { + +class SendCommand : public QObject { + Q_OBJECT +public: + explicit SendCommand(QObject *parent = nullptr); + static SendCommand *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets the group identifier. + */ + Q_PROPERTY(QString groupId READ groupId WRITE setGroupId NOTIFY groupIdChanged) + /** + * @brief Gets the playlist identifier of the playing item. + */ + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + /** + * @brief Gets or sets the UTC time when to execute the command. + */ + Q_PROPERTY(QDateTime when READ when WRITE setWhen NOTIFY whenChanged) + /** + * @brief Gets the position ticks. + */ + Q_PROPERTY(qint64 positionTicks READ positionTicks WRITE setPositionTicks NOTIFY positionTicksChanged) + Q_PROPERTY(SendCommandType command READ command WRITE setCommand NOTIFY commandChanged) + /** + * @brief Gets the UTC time when this command has been emitted. + */ + Q_PROPERTY(QDateTime emittedAt READ emittedAt WRITE setEmittedAt NOTIFY emittedAtChanged) + + QString groupId() const; + void setGroupId(QString newGroupId); + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + + QDateTime when() const; + void setWhen(QDateTime newWhen); + + qint64 positionTicks() const; + void setPositionTicks(qint64 newPositionTicks); + + SendCommandType command() const; + void setCommand(SendCommandType newCommand); + + QDateTime emittedAt() const; + void setEmittedAt(QDateTime newEmittedAt); + +signals: + void groupIdChanged(QString newGroupId); + void playlistItemIdChanged(QString newPlaylistItemId); + void whenChanged(QDateTime newWhen); + void positionTicksChanged(qint64 newPositionTicks); + void commandChanged(SendCommandType newCommand); + void emittedAtChanged(QDateTime newEmittedAt); +protected: + QString m_groupId; + QString m_playlistItemId; + QDateTime m_when; + qint64 m_positionTicks; + SendCommandType m_command; + QDateTime m_emittedAt; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SENDCOMMAND_H diff --git a/core/include/JellyfinQt/DTO/sendcommandtype.h b/core/include/JellyfinQt/DTO/sendcommandtype.h new file mode 100644 index 0000000..9290bf5 --- /dev/null +++ b/core/include/JellyfinQt/DTO/sendcommandtype.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SENDCOMMANDTYPE_H +#define JELLYFIN_DTO_SENDCOMMANDTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class SendCommandTypeClass { + Q_GADGET +public: + enum Value { + Unpause, + Pause, + Stop, + Seek, + }; + Q_ENUM(Value) +private: + explicit SendCommandTypeClass(); +}; +typedef SendCommandTypeClass::Value SendCommandType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SENDCOMMANDTYPE_H diff --git a/core/include/JellyfinQt/DTO/seriesinfo.h b/core/include/JellyfinQt/DTO/seriesinfo.h new file mode 100644 index 0000000..45f7ce7 --- /dev/null +++ b/core/include/JellyfinQt/DTO/seriesinfo.h @@ -0,0 +1,135 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SERIESINFO_H +#define JELLYFIN_DTO_SERIESINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SeriesInfo : public QObject { + Q_OBJECT +public: + explicit SeriesInfo(QObject *parent = nullptr); + static SeriesInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the metadata language. + */ + Q_PROPERTY(QString metadataLanguage READ metadataLanguage WRITE setMetadataLanguage NOTIFY metadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 year READ year WRITE setYear NOTIFY yearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(bool isAutomated READ isAutomated WRITE setIsAutomated NOTIFY isAutomatedChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + QString metadataLanguage() const; + void setMetadataLanguage(QString newMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 year() const; + void setYear(qint32 newYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + bool isAutomated() const; + void setIsAutomated(bool newIsAutomated); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void metadataLanguageChanged(QString newMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void providerIdsChanged(QJsonObject newProviderIds); + void yearChanged(qint32 newYear); + void indexNumberChanged(qint32 newIndexNumber); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void isAutomatedChanged(bool newIsAutomated); +protected: + QString m_name; + QString m_path; + QString m_metadataLanguage; + QString m_metadataCountryCode; + QJsonObject m_providerIds; + qint32 m_year; + qint32 m_indexNumber; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + bool m_isAutomated; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SERIESINFO_H diff --git a/core/include/JellyfinQt/DTO/seriesinforemotesearchquery.h b/core/include/JellyfinQt/DTO/seriesinforemotesearchquery.h new file mode 100644 index 0000000..829d585 --- /dev/null +++ b/core/include/JellyfinQt/DTO/seriesinforemotesearchquery.h @@ -0,0 +1,88 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SERIESINFOREMOTESEARCHQUERY_H +#define JELLYFIN_DTO_SERIESINFOREMOTESEARCHQUERY_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SeriesInfo; + +class SeriesInfoRemoteSearchQuery : public QObject { + Q_OBJECT +public: + explicit SeriesInfoRemoteSearchQuery(QObject *parent = nullptr); + static SeriesInfoRemoteSearchQuery *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(SeriesInfo * searchInfo READ searchInfo WRITE setSearchInfo NOTIFY searchInfoChanged) + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Will only search within the given provider when set. + */ + Q_PROPERTY(QString searchProviderName READ searchProviderName WRITE setSearchProviderName NOTIFY searchProviderNameChanged) + /** + * @brief Gets or sets a value indicating whether disabled providers should be included. + */ + Q_PROPERTY(bool includeDisabledProviders READ includeDisabledProviders WRITE setIncludeDisabledProviders NOTIFY includeDisabledProvidersChanged) + + SeriesInfo * searchInfo() const; + void setSearchInfo(SeriesInfo * newSearchInfo); + + QString itemId() const; + void setItemId(QString newItemId); + + QString searchProviderName() const; + void setSearchProviderName(QString newSearchProviderName); + + bool includeDisabledProviders() const; + void setIncludeDisabledProviders(bool newIncludeDisabledProviders); + +signals: + void searchInfoChanged(SeriesInfo * newSearchInfo); + void itemIdChanged(QString newItemId); + void searchProviderNameChanged(QString newSearchProviderName); + void includeDisabledProvidersChanged(bool newIncludeDisabledProviders); +protected: + SeriesInfo * m_searchInfo = nullptr; + QString m_itemId; + QString m_searchProviderName; + bool m_includeDisabledProviders; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SERIESINFOREMOTESEARCHQUERY_H diff --git a/core/include/JellyfinQt/DTO/seriesstatus.h b/core/include/JellyfinQt/DTO/seriesstatus.h new file mode 100644 index 0000000..ef8eceb --- /dev/null +++ b/core/include/JellyfinQt/DTO/seriesstatus.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SERIESSTATUS_H +#define JELLYFIN_DTO_SERIESSTATUS_H + +#include + +namespace Jellyfin { +namespace DTO { + +class SeriesStatusClass { + Q_GADGET +public: + enum Value { + Continuing, + Ended, + }; + Q_ENUM(Value) +private: + explicit SeriesStatusClass(); +}; +typedef SeriesStatusClass::Value SeriesStatus; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SERIESSTATUS_H diff --git a/core/include/JellyfinQt/DTO/seriestimerinfodto.h b/core/include/JellyfinQt/DTO/seriestimerinfodto.h new file mode 100644 index 0000000..e70266e --- /dev/null +++ b/core/include/JellyfinQt/DTO/seriestimerinfodto.h @@ -0,0 +1,360 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SERIESTIMERINFODTO_H +#define JELLYFIN_DTO_SERIESTIMERINFODTO_H + +#include +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/dayofweek.h" +#include "JellyfinQt/DTO/daypattern.h" +#include "JellyfinQt/DTO/keepuntil.h" + +namespace Jellyfin { +namespace DTO { + +class SeriesTimerInfoDto : public QObject { + Q_OBJECT +public: + explicit SeriesTimerInfoDto(QObject *parent = nullptr); + static SeriesTimerInfoDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Id of the recording. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets or sets the server identifier. + */ + Q_PROPERTY(QString serverId READ serverId WRITE setServerId NOTIFY serverIdChanged) + /** + * @brief Gets or sets the external identifier. + */ + Q_PROPERTY(QString externalId READ externalId WRITE setExternalId NOTIFY externalIdChanged) + /** + * @brief ChannelId of the recording. + */ + Q_PROPERTY(QString channelId READ channelId WRITE setChannelId NOTIFY channelIdChanged) + /** + * @brief Gets or sets the external channel identifier. + */ + Q_PROPERTY(QString externalChannelId READ externalChannelId WRITE setExternalChannelId NOTIFY externalChannelIdChanged) + /** + * @brief ChannelName of the recording. + */ + Q_PROPERTY(QString channelName READ channelName WRITE setChannelName NOTIFY channelNameChanged) + Q_PROPERTY(QString channelPrimaryImageTag READ channelPrimaryImageTag WRITE setChannelPrimaryImageTag NOTIFY channelPrimaryImageTagChanged) + /** + * @brief Gets or sets the program identifier. + */ + Q_PROPERTY(QString programId READ programId WRITE setProgramId NOTIFY programIdChanged) + /** + * @brief Gets or sets the external program identifier. + */ + Q_PROPERTY(QString externalProgramId READ externalProgramId WRITE setExternalProgramId NOTIFY externalProgramIdChanged) + /** + * @brief Name of the recording. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Description of the recording. + */ + Q_PROPERTY(QString overview READ overview WRITE setOverview NOTIFY overviewChanged) + /** + * @brief The start date of the recording, in UTC. + */ + Q_PROPERTY(QDateTime startDate READ startDate WRITE setStartDate NOTIFY startDateChanged) + /** + * @brief The end date of the recording, in UTC. + */ + Q_PROPERTY(QDateTime endDate READ endDate WRITE setEndDate NOTIFY endDateChanged) + /** + * @brief Gets or sets the name of the service. + */ + Q_PROPERTY(QString serviceName READ serviceName WRITE setServiceName NOTIFY serviceNameChanged) + /** + * @brief Gets or sets the priority. + */ + Q_PROPERTY(qint32 priority READ priority WRITE setPriority NOTIFY priorityChanged) + /** + * @brief Gets or sets the pre padding seconds. + */ + Q_PROPERTY(qint32 prePaddingSeconds READ prePaddingSeconds WRITE setPrePaddingSeconds NOTIFY prePaddingSecondsChanged) + /** + * @brief Gets or sets the post padding seconds. + */ + Q_PROPERTY(qint32 postPaddingSeconds READ postPaddingSeconds WRITE setPostPaddingSeconds NOTIFY postPaddingSecondsChanged) + /** + * @brief Gets or sets a value indicating whether this instance is pre padding required. + */ + Q_PROPERTY(bool isPrePaddingRequired READ isPrePaddingRequired WRITE setIsPrePaddingRequired NOTIFY isPrePaddingRequiredChanged) + /** + * @brief If the item does not have any backdrops, this will hold the Id of the Parent that has one. + */ + Q_PROPERTY(QString parentBackdropItemId READ parentBackdropItemId WRITE setParentBackdropItemId NOTIFY parentBackdropItemIdChanged) + /** + * @brief Gets or sets the parent backdrop image tags. + */ + Q_PROPERTY(QStringList parentBackdropImageTags READ parentBackdropImageTags WRITE setParentBackdropImageTags NOTIFY parentBackdropImageTagsChanged) + /** + * @brief Gets or sets a value indicating whether this instance is post padding required. + */ + Q_PROPERTY(bool isPostPaddingRequired READ isPostPaddingRequired WRITE setIsPostPaddingRequired NOTIFY isPostPaddingRequiredChanged) + Q_PROPERTY(KeepUntil keepUntil READ keepUntil WRITE setKeepUntil NOTIFY keepUntilChanged) + /** + * @brief Gets or sets a value indicating whether [record any time]. + */ + Q_PROPERTY(bool recordAnyTime READ recordAnyTime WRITE setRecordAnyTime NOTIFY recordAnyTimeChanged) + Q_PROPERTY(bool skipEpisodesInLibrary READ skipEpisodesInLibrary WRITE setSkipEpisodesInLibrary NOTIFY skipEpisodesInLibraryChanged) + /** + * @brief Gets or sets a value indicating whether [record any channel]. + */ + Q_PROPERTY(bool recordAnyChannel READ recordAnyChannel WRITE setRecordAnyChannel NOTIFY recordAnyChannelChanged) + Q_PROPERTY(qint32 keepUpTo READ keepUpTo WRITE setKeepUpTo NOTIFY keepUpToChanged) + /** + * @brief Gets or sets a value indicating whether [record new only]. + */ + Q_PROPERTY(bool recordNewOnly READ recordNewOnly WRITE setRecordNewOnly NOTIFY recordNewOnlyChanged) + /** + * @brief Gets or sets the days. + */ + Q_PROPERTY(QList days READ days WRITE setDays NOTIFY daysChanged) + Q_PROPERTY(DayPattern dayPattern READ dayPattern WRITE setDayPattern NOTIFY dayPatternChanged) + /** + * @brief Gets or sets the image tags. + */ + Q_PROPERTY(QJsonObject imageTags READ imageTags WRITE setImageTags NOTIFY imageTagsChanged) + /** + * @brief Gets or sets the parent thumb item id. + */ + Q_PROPERTY(QString parentThumbItemId READ parentThumbItemId WRITE setParentThumbItemId NOTIFY parentThumbItemIdChanged) + /** + * @brief Gets or sets the parent thumb image tag. + */ + Q_PROPERTY(QString parentThumbImageTag READ parentThumbImageTag WRITE setParentThumbImageTag NOTIFY parentThumbImageTagChanged) + /** + * @brief Gets or sets the parent primary image item identifier. + */ + Q_PROPERTY(QString parentPrimaryImageItemId READ parentPrimaryImageItemId WRITE setParentPrimaryImageItemId NOTIFY parentPrimaryImageItemIdChanged) + /** + * @brief Gets or sets the parent primary image tag. + */ + Q_PROPERTY(QString parentPrimaryImageTag READ parentPrimaryImageTag WRITE setParentPrimaryImageTag NOTIFY parentPrimaryImageTagChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString type() const; + void setType(QString newType); + + QString serverId() const; + void setServerId(QString newServerId); + + QString externalId() const; + void setExternalId(QString newExternalId); + + QString channelId() const; + void setChannelId(QString newChannelId); + + QString externalChannelId() const; + void setExternalChannelId(QString newExternalChannelId); + + QString channelName() const; + void setChannelName(QString newChannelName); + + QString channelPrimaryImageTag() const; + void setChannelPrimaryImageTag(QString newChannelPrimaryImageTag); + + QString programId() const; + void setProgramId(QString newProgramId); + + QString externalProgramId() const; + void setExternalProgramId(QString newExternalProgramId); + + QString name() const; + void setName(QString newName); + + QString overview() const; + void setOverview(QString newOverview); + + QDateTime startDate() const; + void setStartDate(QDateTime newStartDate); + + QDateTime endDate() const; + void setEndDate(QDateTime newEndDate); + + QString serviceName() const; + void setServiceName(QString newServiceName); + + qint32 priority() const; + void setPriority(qint32 newPriority); + + qint32 prePaddingSeconds() const; + void setPrePaddingSeconds(qint32 newPrePaddingSeconds); + + qint32 postPaddingSeconds() const; + void setPostPaddingSeconds(qint32 newPostPaddingSeconds); + + bool isPrePaddingRequired() const; + void setIsPrePaddingRequired(bool newIsPrePaddingRequired); + + QString parentBackdropItemId() const; + void setParentBackdropItemId(QString newParentBackdropItemId); + + QStringList parentBackdropImageTags() const; + void setParentBackdropImageTags(QStringList newParentBackdropImageTags); + + bool isPostPaddingRequired() const; + void setIsPostPaddingRequired(bool newIsPostPaddingRequired); + + KeepUntil keepUntil() const; + void setKeepUntil(KeepUntil newKeepUntil); + + bool recordAnyTime() const; + void setRecordAnyTime(bool newRecordAnyTime); + + bool skipEpisodesInLibrary() const; + void setSkipEpisodesInLibrary(bool newSkipEpisodesInLibrary); + + bool recordAnyChannel() const; + void setRecordAnyChannel(bool newRecordAnyChannel); + + qint32 keepUpTo() const; + void setKeepUpTo(qint32 newKeepUpTo); + + bool recordNewOnly() const; + void setRecordNewOnly(bool newRecordNewOnly); + + QList days() const; + void setDays(QList newDays); + + DayPattern dayPattern() const; + void setDayPattern(DayPattern newDayPattern); + + QJsonObject imageTags() const; + void setImageTags(QJsonObject newImageTags); + + QString parentThumbItemId() const; + void setParentThumbItemId(QString newParentThumbItemId); + + QString parentThumbImageTag() const; + void setParentThumbImageTag(QString newParentThumbImageTag); + + QString parentPrimaryImageItemId() const; + void setParentPrimaryImageItemId(QString newParentPrimaryImageItemId); + + QString parentPrimaryImageTag() const; + void setParentPrimaryImageTag(QString newParentPrimaryImageTag); + +signals: + void jellyfinIdChanged(QString newJellyfinId); + void typeChanged(QString newType); + void serverIdChanged(QString newServerId); + void externalIdChanged(QString newExternalId); + void channelIdChanged(QString newChannelId); + void externalChannelIdChanged(QString newExternalChannelId); + void channelNameChanged(QString newChannelName); + void channelPrimaryImageTagChanged(QString newChannelPrimaryImageTag); + void programIdChanged(QString newProgramId); + void externalProgramIdChanged(QString newExternalProgramId); + void nameChanged(QString newName); + void overviewChanged(QString newOverview); + void startDateChanged(QDateTime newStartDate); + void endDateChanged(QDateTime newEndDate); + void serviceNameChanged(QString newServiceName); + void priorityChanged(qint32 newPriority); + void prePaddingSecondsChanged(qint32 newPrePaddingSeconds); + void postPaddingSecondsChanged(qint32 newPostPaddingSeconds); + void isPrePaddingRequiredChanged(bool newIsPrePaddingRequired); + void parentBackdropItemIdChanged(QString newParentBackdropItemId); + void parentBackdropImageTagsChanged(QStringList newParentBackdropImageTags); + void isPostPaddingRequiredChanged(bool newIsPostPaddingRequired); + void keepUntilChanged(KeepUntil newKeepUntil); + void recordAnyTimeChanged(bool newRecordAnyTime); + void skipEpisodesInLibraryChanged(bool newSkipEpisodesInLibrary); + void recordAnyChannelChanged(bool newRecordAnyChannel); + void keepUpToChanged(qint32 newKeepUpTo); + void recordNewOnlyChanged(bool newRecordNewOnly); + void daysChanged(QList newDays); + void dayPatternChanged(DayPattern newDayPattern); + void imageTagsChanged(QJsonObject newImageTags); + void parentThumbItemIdChanged(QString newParentThumbItemId); + void parentThumbImageTagChanged(QString newParentThumbImageTag); + void parentPrimaryImageItemIdChanged(QString newParentPrimaryImageItemId); + void parentPrimaryImageTagChanged(QString newParentPrimaryImageTag); +protected: + QString m_jellyfinId; + QString m_type; + QString m_serverId; + QString m_externalId; + QString m_channelId; + QString m_externalChannelId; + QString m_channelName; + QString m_channelPrimaryImageTag; + QString m_programId; + QString m_externalProgramId; + QString m_name; + QString m_overview; + QDateTime m_startDate; + QDateTime m_endDate; + QString m_serviceName; + qint32 m_priority; + qint32 m_prePaddingSeconds; + qint32 m_postPaddingSeconds; + bool m_isPrePaddingRequired; + QString m_parentBackdropItemId; + QStringList m_parentBackdropImageTags; + bool m_isPostPaddingRequired; + KeepUntil m_keepUntil; + bool m_recordAnyTime; + bool m_skipEpisodesInLibrary; + bool m_recordAnyChannel; + qint32 m_keepUpTo; + bool m_recordNewOnly; + QList m_days; + DayPattern m_dayPattern; + QJsonObject m_imageTags; + QString m_parentThumbItemId; + QString m_parentThumbImageTag; + QString m_parentPrimaryImageItemId; + QString m_parentPrimaryImageTag; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SERIESTIMERINFODTO_H diff --git a/core/include/JellyfinQt/DTO/seriestimerinfodtoqueryresult.h b/core/include/JellyfinQt/DTO/seriestimerinfodtoqueryresult.h new file mode 100644 index 0000000..a38e797 --- /dev/null +++ b/core/include/JellyfinQt/DTO/seriestimerinfodtoqueryresult.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SERIESTIMERINFODTOQUERYRESULT_H +#define JELLYFIN_DTO_SERIESTIMERINFODTOQUERYRESULT_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SeriesTimerInfoDto; + +class SeriesTimerInfoDtoQueryResult : public QObject { + Q_OBJECT +public: + explicit SeriesTimerInfoDtoQueryResult(QObject *parent = nullptr); + static SeriesTimerInfoDtoQueryResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the items. + */ + Q_PROPERTY(QList items READ items WRITE setItems NOTIFY itemsChanged) + /** + * @brief The total number of records available. + */ + Q_PROPERTY(qint32 totalRecordCount READ totalRecordCount WRITE setTotalRecordCount NOTIFY totalRecordCountChanged) + /** + * @brief The index of the first record in Items. + */ + Q_PROPERTY(qint32 startIndex READ startIndex WRITE setStartIndex NOTIFY startIndexChanged) + + QList items() const; + void setItems(QList newItems); + + qint32 totalRecordCount() const; + void setTotalRecordCount(qint32 newTotalRecordCount); + + qint32 startIndex() const; + void setStartIndex(qint32 newStartIndex); + +signals: + void itemsChanged(QList newItems); + void totalRecordCountChanged(qint32 newTotalRecordCount); + void startIndexChanged(qint32 newStartIndex); +protected: + QList m_items; + qint32 m_totalRecordCount; + qint32 m_startIndex; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SERIESTIMERINFODTOQUERYRESULT_H diff --git a/core/include/JellyfinQt/DTO/serverconfiguration.h b/core/include/JellyfinQt/DTO/serverconfiguration.h new file mode 100644 index 0000000..0867da9 --- /dev/null +++ b/core/include/JellyfinQt/DTO/serverconfiguration.h @@ -0,0 +1,766 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SERVERCONFIGURATION_H +#define JELLYFIN_DTO_SERVERCONFIGURATION_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/imagesavingconvention.h" + +namespace Jellyfin { +namespace DTO { + +class MetadataOptions; +class NameValuePair; +class PathSubstitution; +class RepositoryInfo; +class Version; + +class ServerConfiguration : public QObject { + Q_OBJECT +public: + explicit ServerConfiguration(QObject *parent = nullptr); + static ServerConfiguration *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the number of days we should retain log files. + */ + Q_PROPERTY(qint32 logFileRetentionDays READ logFileRetentionDays WRITE setLogFileRetentionDays NOTIFY logFileRetentionDaysChanged) + /** + * @brief Gets or sets a value indicating whether this instance is first run. + */ + Q_PROPERTY(bool isStartupWizardCompleted READ isStartupWizardCompleted WRITE setIsStartupWizardCompleted NOTIFY isStartupWizardCompletedChanged) + /** + * @brief Gets or sets the cache path. + */ + Q_PROPERTY(QString cachePath READ cachePath WRITE setCachePath NOTIFY cachePathChanged) + Q_PROPERTY(Version * previousVersion READ previousVersion WRITE setPreviousVersion NOTIFY previousVersionChanged) + /** + * @brief Gets or sets the stringified PreviousVersion to be stored/loaded, +because System.Version itself isn't xml-serializable. + */ + Q_PROPERTY(QString previousVersionStr READ previousVersionStr WRITE setPreviousVersionStr NOTIFY previousVersionStrChanged) + /** + * @brief Gets or sets a value indicating whether to enable automatic port forwarding. + */ + Q_PROPERTY(bool enableUPnP READ enableUPnP WRITE setEnableUPnP NOTIFY enableUPnPChanged) + /** + * @brief Gets or sets a value indicating whether to enable prometheus metrics exporting. + */ + Q_PROPERTY(bool enableMetrics READ enableMetrics WRITE setEnableMetrics NOTIFY enableMetricsChanged) + /** + * @brief Gets or sets the public mapped port. + */ + Q_PROPERTY(qint32 publicPort READ publicPort WRITE setPublicPort NOTIFY publicPortChanged) + /** + * @brief Gets or sets a value indicating whether the http port should be mapped as part of UPnP automatic port forwarding. + */ + Q_PROPERTY(bool uPnPCreateHttpPortMap READ uPnPCreateHttpPortMap WRITE setUPnPCreateHttpPortMap NOTIFY uPnPCreateHttpPortMapChanged) + /** + * @brief Gets or sets client udp port range. + */ + Q_PROPERTY(QString uDPPortRange READ uDPPortRange WRITE setUDPPortRange NOTIFY uDPPortRangeChanged) + /** + * @brief Gets or sets a value indicating whether IPV6 capability is enabled. + */ + Q_PROPERTY(bool enableIPV6 READ enableIPV6 WRITE setEnableIPV6 NOTIFY enableIPV6Changed) + /** + * @brief Gets or sets a value indicating whether IPV4 capability is enabled. + */ + Q_PROPERTY(bool enableIPV4 READ enableIPV4 WRITE setEnableIPV4 NOTIFY enableIPV4Changed) + /** + * @brief Gets or sets a value indicating whether detailed ssdp logs are sent to the console/log. +"Emby.Dlna": "Debug" must be set in logging.default.json for this property to work. + */ + Q_PROPERTY(bool enableSSDPTracing READ enableSSDPTracing WRITE setEnableSSDPTracing NOTIFY enableSSDPTracingChanged) + /** + * @brief Gets or sets a value indicating whether an IP address is to be used to filter the detailed ssdp logs that are being sent to the console/log. +If the setting "Emby.Dlna": "Debug" msut be set in logging.default.json for this property to work. + */ + Q_PROPERTY(QString sSDPTracingFilter READ sSDPTracingFilter WRITE setSSDPTracingFilter NOTIFY sSDPTracingFilterChanged) + /** + * @brief Gets or sets the number of times SSDP UDP messages are sent. + */ + Q_PROPERTY(qint32 uDPSendCount READ uDPSendCount WRITE setUDPSendCount NOTIFY uDPSendCountChanged) + /** + * @brief Gets or sets the delay between each groups of SSDP messages (in ms). + */ + Q_PROPERTY(qint32 uDPSendDelay READ uDPSendDelay WRITE setUDPSendDelay NOTIFY uDPSendDelayChanged) + /** + * @brief Gets or sets a value indicating whether address names that match MediaBrowser.Model.Configuration.ServerConfiguration.VirtualInterfaceNames should be Ignore for the purposes of binding. + */ + Q_PROPERTY(bool ignoreVirtualInterfaces READ ignoreVirtualInterfaces WRITE setIgnoreVirtualInterfaces NOTIFY ignoreVirtualInterfacesChanged) + /** + * @brief Gets or sets a value indicating the interfaces that should be ignored. The list can be comma separated. . + */ + Q_PROPERTY(QString virtualInterfaceNames READ virtualInterfaceNames WRITE setVirtualInterfaceNames NOTIFY virtualInterfaceNamesChanged) + /** + * @brief Gets or sets the time (in seconds) between the pings of SSDP gateway monitor. + */ + Q_PROPERTY(qint32 gatewayMonitorPeriod READ gatewayMonitorPeriod WRITE setGatewayMonitorPeriod NOTIFY gatewayMonitorPeriodChanged) + /** + * @brief Gets a value indicating whether multi-socket binding is available. + */ + Q_PROPERTY(bool enableMultiSocketBinding READ enableMultiSocketBinding WRITE setEnableMultiSocketBinding NOTIFY enableMultiSocketBindingChanged) + /** + * @brief Gets or sets a value indicating whether all IPv6 interfaces should be treated as on the internal network. +Depending on the address range implemented ULA ranges might not be used. + */ + Q_PROPERTY(bool trustAllIP6Interfaces READ trustAllIP6Interfaces WRITE setTrustAllIP6Interfaces NOTIFY trustAllIP6InterfacesChanged) + /** + * @brief Gets or sets the ports that HDHomerun uses. + */ + Q_PROPERTY(QString hDHomerunPortRange READ hDHomerunPortRange WRITE setHDHomerunPortRange NOTIFY hDHomerunPortRangeChanged) + /** + * @brief Gets or sets PublishedServerUri to advertise for specific subnets. + */ + Q_PROPERTY(QStringList publishedServerUriBySubnet READ publishedServerUriBySubnet WRITE setPublishedServerUriBySubnet NOTIFY publishedServerUriBySubnetChanged) + /** + * @brief Gets or sets a value indicating whether Autodiscovery tracing is enabled. + */ + Q_PROPERTY(bool autoDiscoveryTracing READ autoDiscoveryTracing WRITE setAutoDiscoveryTracing NOTIFY autoDiscoveryTracingChanged) + /** + * @brief Gets or sets a value indicating whether Autodiscovery is enabled. + */ + Q_PROPERTY(bool autoDiscovery READ autoDiscovery WRITE setAutoDiscovery NOTIFY autoDiscoveryChanged) + /** + * @brief Gets or sets the public HTTPS port. + */ + Q_PROPERTY(qint32 publicHttpsPort READ publicHttpsPort WRITE setPublicHttpsPort NOTIFY publicHttpsPortChanged) + /** + * @brief Gets or sets the HTTP server port number. + */ + Q_PROPERTY(qint32 httpServerPortNumber READ httpServerPortNumber WRITE setHttpServerPortNumber NOTIFY httpServerPortNumberChanged) + /** + * @brief Gets or sets the HTTPS server port number. + */ + Q_PROPERTY(qint32 httpsPortNumber READ httpsPortNumber WRITE setHttpsPortNumber NOTIFY httpsPortNumberChanged) + /** + * @brief Gets or sets a value indicating whether to use HTTPS. + */ + Q_PROPERTY(bool enableHttps READ enableHttps WRITE setEnableHttps NOTIFY enableHttpsChanged) + Q_PROPERTY(bool enableNormalizedItemByNameIds READ enableNormalizedItemByNameIds WRITE setEnableNormalizedItemByNameIds NOTIFY enableNormalizedItemByNameIdsChanged) + /** + * @brief Gets or sets the filesystem path of an X.509 certificate to use for SSL. + */ + Q_PROPERTY(QString certificatePath READ certificatePath WRITE setCertificatePath NOTIFY certificatePathChanged) + /** + * @brief Gets or sets the password required to access the X.509 certificate data in the file specified by MediaBrowser.Model.Configuration.ServerConfiguration.CertificatePath. + */ + Q_PROPERTY(QString certificatePassword READ certificatePassword WRITE setCertificatePassword NOTIFY certificatePasswordChanged) + /** + * @brief Gets or sets a value indicating whether this instance is port authorized. + */ + Q_PROPERTY(bool isPortAuthorized READ isPortAuthorized WRITE setIsPortAuthorized NOTIFY isPortAuthorizedChanged) + /** + * @brief Gets or sets a value indicating whether quick connect is available for use on this server. + */ + Q_PROPERTY(bool quickConnectAvailable READ quickConnectAvailable WRITE setQuickConnectAvailable NOTIFY quickConnectAvailableChanged) + /** + * @brief Gets or sets a value indicating whether access outside of the LAN is permitted. + */ + Q_PROPERTY(bool enableRemoteAccess READ enableRemoteAccess WRITE setEnableRemoteAccess NOTIFY enableRemoteAccessChanged) + /** + * @brief Gets or sets a value indicating whether [enable case sensitive item ids]. + */ + Q_PROPERTY(bool enableCaseSensitiveItemIds READ enableCaseSensitiveItemIds WRITE setEnableCaseSensitiveItemIds NOTIFY enableCaseSensitiveItemIdsChanged) + Q_PROPERTY(bool disableLiveTvChannelUserDataName READ disableLiveTvChannelUserDataName WRITE setDisableLiveTvChannelUserDataName NOTIFY disableLiveTvChannelUserDataNameChanged) + /** + * @brief Gets or sets the metadata path. + */ + Q_PROPERTY(QString metadataPath READ metadataPath WRITE setMetadataPath NOTIFY metadataPathChanged) + Q_PROPERTY(QString metadataNetworkPath READ metadataNetworkPath WRITE setMetadataNetworkPath NOTIFY metadataNetworkPathChanged) + /** + * @brief Gets or sets the preferred metadata language. + */ + Q_PROPERTY(QString preferredMetadataLanguage READ preferredMetadataLanguage WRITE setPreferredMetadataLanguage NOTIFY preferredMetadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets characters to be replaced with a ' ' in strings to create a sort name. + */ + Q_PROPERTY(QStringList sortReplaceCharacters READ sortReplaceCharacters WRITE setSortReplaceCharacters NOTIFY sortReplaceCharactersChanged) + /** + * @brief Gets or sets characters to be removed from strings to create a sort name. + */ + Q_PROPERTY(QStringList sortRemoveCharacters READ sortRemoveCharacters WRITE setSortRemoveCharacters NOTIFY sortRemoveCharactersChanged) + /** + * @brief Gets or sets words to be removed from strings to create a sort name. + */ + Q_PROPERTY(QStringList sortRemoveWords READ sortRemoveWords WRITE setSortRemoveWords NOTIFY sortRemoveWordsChanged) + /** + * @brief Gets or sets the minimum percentage of an item that must be played in order for playstate to be updated. + */ + Q_PROPERTY(qint32 minResumePct READ minResumePct WRITE setMinResumePct NOTIFY minResumePctChanged) + /** + * @brief Gets or sets the maximum percentage of an item that can be played while still saving playstate. If this percentage is crossed playstate will be reset to the beginning and the item will be marked watched. + */ + Q_PROPERTY(qint32 maxResumePct READ maxResumePct WRITE setMaxResumePct NOTIFY maxResumePctChanged) + /** + * @brief Gets or sets the minimum duration that an item must have in order to be eligible for playstate updates.. + */ + Q_PROPERTY(qint32 minResumeDurationSeconds READ minResumeDurationSeconds WRITE setMinResumeDurationSeconds NOTIFY minResumeDurationSecondsChanged) + /** + * @brief Gets or sets the minimum minutes of a book that must be played in order for playstate to be updated. + */ + Q_PROPERTY(qint32 minAudiobookResume READ minAudiobookResume WRITE setMinAudiobookResume NOTIFY minAudiobookResumeChanged) + /** + * @brief Gets or sets the remaining minutes of a book that can be played while still saving playstate. If this percentage is crossed playstate will be reset to the beginning and the item will be marked watched. + */ + Q_PROPERTY(qint32 maxAudiobookResume READ maxAudiobookResume WRITE setMaxAudiobookResume NOTIFY maxAudiobookResumeChanged) + /** + * @brief Gets or sets the delay in seconds that we will wait after a file system change to try and discover what has been added/removed +Some delay is necessary with some items because their creation is not atomic. It involves the creation of several +different directories and files. + */ + Q_PROPERTY(qint32 libraryMonitorDelay READ libraryMonitorDelay WRITE setLibraryMonitorDelay NOTIFY libraryMonitorDelayChanged) + /** + * @brief Gets or sets a value indicating whether [enable dashboard response caching]. +Allows potential contributors without visual studio to modify production dashboard code and test changes. + */ + Q_PROPERTY(bool enableDashboardResponseCaching READ enableDashboardResponseCaching WRITE setEnableDashboardResponseCaching NOTIFY enableDashboardResponseCachingChanged) + Q_PROPERTY(ImageSavingConvention imageSavingConvention READ imageSavingConvention WRITE setImageSavingConvention NOTIFY imageSavingConventionChanged) + Q_PROPERTY(QList metadataOptions READ metadataOptions WRITE setMetadataOptions NOTIFY metadataOptionsChanged) + Q_PROPERTY(bool skipDeserializationForBasicTypes READ skipDeserializationForBasicTypes WRITE setSkipDeserializationForBasicTypes NOTIFY skipDeserializationForBasicTypesChanged) + Q_PROPERTY(QString serverName READ serverName WRITE setServerName NOTIFY serverNameChanged) + Q_PROPERTY(QString baseUrl READ baseUrl WRITE setBaseUrl NOTIFY baseUrlChanged) + Q_PROPERTY(QString uICulture READ uICulture WRITE setUICulture NOTIFY uICultureChanged) + Q_PROPERTY(bool saveMetadataHidden READ saveMetadataHidden WRITE setSaveMetadataHidden NOTIFY saveMetadataHiddenChanged) + Q_PROPERTY(QList contentTypes READ contentTypes WRITE setContentTypes NOTIFY contentTypesChanged) + Q_PROPERTY(qint32 remoteClientBitrateLimit READ remoteClientBitrateLimit WRITE setRemoteClientBitrateLimit NOTIFY remoteClientBitrateLimitChanged) + Q_PROPERTY(bool enableFolderView READ enableFolderView WRITE setEnableFolderView NOTIFY enableFolderViewChanged) + Q_PROPERTY(bool enableGroupingIntoCollections READ enableGroupingIntoCollections WRITE setEnableGroupingIntoCollections NOTIFY enableGroupingIntoCollectionsChanged) + Q_PROPERTY(bool displaySpecialsWithinSeasons READ displaySpecialsWithinSeasons WRITE setDisplaySpecialsWithinSeasons NOTIFY displaySpecialsWithinSeasonsChanged) + /** + * @brief Gets or sets the subnets that are deemed to make up the LAN. + */ + Q_PROPERTY(QStringList localNetworkSubnets READ localNetworkSubnets WRITE setLocalNetworkSubnets NOTIFY localNetworkSubnetsChanged) + /** + * @brief Gets or sets the interface addresses which Jellyfin will bind to. If empty, all interfaces will be used. + */ + Q_PROPERTY(QStringList localNetworkAddresses READ localNetworkAddresses WRITE setLocalNetworkAddresses NOTIFY localNetworkAddressesChanged) + Q_PROPERTY(QStringList codecsUsed READ codecsUsed WRITE setCodecsUsed NOTIFY codecsUsedChanged) + Q_PROPERTY(QList pluginRepositories READ pluginRepositories WRITE setPluginRepositories NOTIFY pluginRepositoriesChanged) + Q_PROPERTY(bool enableExternalContentInSuggestions READ enableExternalContentInSuggestions WRITE setEnableExternalContentInSuggestions NOTIFY enableExternalContentInSuggestionsChanged) + /** + * @brief Gets or sets a value indicating whether the server should force connections over HTTPS. + */ + Q_PROPERTY(bool requireHttps READ requireHttps WRITE setRequireHttps NOTIFY requireHttpsChanged) + Q_PROPERTY(bool enableNewOmdbSupport READ enableNewOmdbSupport WRITE setEnableNewOmdbSupport NOTIFY enableNewOmdbSupportChanged) + /** + * @brief Gets or sets the filter for remote IP connectivity. Used in conjuntion with . + */ + Q_PROPERTY(QStringList remoteIPFilter READ remoteIPFilter WRITE setRemoteIPFilter NOTIFY remoteIPFilterChanged) + /** + * @brief Gets or sets a value indicating whether contains a blacklist or a whitelist. Default is a whitelist. + */ + Q_PROPERTY(bool isRemoteIPFilterBlacklist READ isRemoteIPFilterBlacklist WRITE setIsRemoteIPFilterBlacklist NOTIFY isRemoteIPFilterBlacklistChanged) + Q_PROPERTY(qint32 imageExtractionTimeoutMs READ imageExtractionTimeoutMs WRITE setImageExtractionTimeoutMs NOTIFY imageExtractionTimeoutMsChanged) + Q_PROPERTY(QList pathSubstitutions READ pathSubstitutions WRITE setPathSubstitutions NOTIFY pathSubstitutionsChanged) + Q_PROPERTY(bool enableSimpleArtistDetection READ enableSimpleArtistDetection WRITE setEnableSimpleArtistDetection NOTIFY enableSimpleArtistDetectionChanged) + Q_PROPERTY(QStringList uninstalledPlugins READ uninstalledPlugins WRITE setUninstalledPlugins NOTIFY uninstalledPluginsChanged) + /** + * @brief Gets or sets a value indicating whether slow server responses should be logged as a warning. + */ + Q_PROPERTY(bool enableSlowResponseWarning READ enableSlowResponseWarning WRITE setEnableSlowResponseWarning NOTIFY enableSlowResponseWarningChanged) + /** + * @brief Gets or sets the threshold for the slow response time warning in ms. + */ + Q_PROPERTY(qint64 slowResponseThresholdMs READ slowResponseThresholdMs WRITE setSlowResponseThresholdMs NOTIFY slowResponseThresholdMsChanged) + /** + * @brief Gets or sets the cors hosts. + */ + Q_PROPERTY(QStringList corsHosts READ corsHosts WRITE setCorsHosts NOTIFY corsHostsChanged) + /** + * @brief Gets or sets the known proxies. + */ + Q_PROPERTY(QStringList knownProxies READ knownProxies WRITE setKnownProxies NOTIFY knownProxiesChanged) + /** + * @brief Gets or sets the number of days we should retain activity logs. + */ + Q_PROPERTY(qint32 activityLogRetentionDays READ activityLogRetentionDays WRITE setActivityLogRetentionDays NOTIFY activityLogRetentionDaysChanged) + /** + * @brief Gets or sets the how the library scan fans out. + */ + Q_PROPERTY(qint32 libraryScanFanoutConcurrency READ libraryScanFanoutConcurrency WRITE setLibraryScanFanoutConcurrency NOTIFY libraryScanFanoutConcurrencyChanged) + /** + * @brief Gets or sets the how many metadata refreshes can run concurrently. + */ + Q_PROPERTY(qint32 libraryMetadataRefreshConcurrency READ libraryMetadataRefreshConcurrency WRITE setLibraryMetadataRefreshConcurrency NOTIFY libraryMetadataRefreshConcurrencyChanged) + /** + * @brief Gets or sets a value indicating whether older plugins should automatically be deleted from the plugin folder. + */ + Q_PROPERTY(bool removeOldPlugins READ removeOldPlugins WRITE setRemoveOldPlugins NOTIFY removeOldPluginsChanged) + /** + * @brief Gets or sets a value indicating whether plugin image should be disabled. + */ + Q_PROPERTY(bool disablePluginImages READ disablePluginImages WRITE setDisablePluginImages NOTIFY disablePluginImagesChanged) + + qint32 logFileRetentionDays() const; + void setLogFileRetentionDays(qint32 newLogFileRetentionDays); + + bool isStartupWizardCompleted() const; + void setIsStartupWizardCompleted(bool newIsStartupWizardCompleted); + + QString cachePath() const; + void setCachePath(QString newCachePath); + + Version * previousVersion() const; + void setPreviousVersion(Version * newPreviousVersion); + + QString previousVersionStr() const; + void setPreviousVersionStr(QString newPreviousVersionStr); + + bool enableUPnP() const; + void setEnableUPnP(bool newEnableUPnP); + + bool enableMetrics() const; + void setEnableMetrics(bool newEnableMetrics); + + qint32 publicPort() const; + void setPublicPort(qint32 newPublicPort); + + bool uPnPCreateHttpPortMap() const; + void setUPnPCreateHttpPortMap(bool newUPnPCreateHttpPortMap); + + QString uDPPortRange() const; + void setUDPPortRange(QString newUDPPortRange); + + bool enableIPV6() const; + void setEnableIPV6(bool newEnableIPV6); + + bool enableIPV4() const; + void setEnableIPV4(bool newEnableIPV4); + + bool enableSSDPTracing() const; + void setEnableSSDPTracing(bool newEnableSSDPTracing); + + QString sSDPTracingFilter() const; + void setSSDPTracingFilter(QString newSSDPTracingFilter); + + qint32 uDPSendCount() const; + void setUDPSendCount(qint32 newUDPSendCount); + + qint32 uDPSendDelay() const; + void setUDPSendDelay(qint32 newUDPSendDelay); + + bool ignoreVirtualInterfaces() const; + void setIgnoreVirtualInterfaces(bool newIgnoreVirtualInterfaces); + + QString virtualInterfaceNames() const; + void setVirtualInterfaceNames(QString newVirtualInterfaceNames); + + qint32 gatewayMonitorPeriod() const; + void setGatewayMonitorPeriod(qint32 newGatewayMonitorPeriod); + + bool enableMultiSocketBinding() const; + void setEnableMultiSocketBinding(bool newEnableMultiSocketBinding); + + bool trustAllIP6Interfaces() const; + void setTrustAllIP6Interfaces(bool newTrustAllIP6Interfaces); + + QString hDHomerunPortRange() const; + void setHDHomerunPortRange(QString newHDHomerunPortRange); + + QStringList publishedServerUriBySubnet() const; + void setPublishedServerUriBySubnet(QStringList newPublishedServerUriBySubnet); + + bool autoDiscoveryTracing() const; + void setAutoDiscoveryTracing(bool newAutoDiscoveryTracing); + + bool autoDiscovery() const; + void setAutoDiscovery(bool newAutoDiscovery); + + qint32 publicHttpsPort() const; + void setPublicHttpsPort(qint32 newPublicHttpsPort); + + qint32 httpServerPortNumber() const; + void setHttpServerPortNumber(qint32 newHttpServerPortNumber); + + qint32 httpsPortNumber() const; + void setHttpsPortNumber(qint32 newHttpsPortNumber); + + bool enableHttps() const; + void setEnableHttps(bool newEnableHttps); + + bool enableNormalizedItemByNameIds() const; + void setEnableNormalizedItemByNameIds(bool newEnableNormalizedItemByNameIds); + + QString certificatePath() const; + void setCertificatePath(QString newCertificatePath); + + QString certificatePassword() const; + void setCertificatePassword(QString newCertificatePassword); + + bool isPortAuthorized() const; + void setIsPortAuthorized(bool newIsPortAuthorized); + + bool quickConnectAvailable() const; + void setQuickConnectAvailable(bool newQuickConnectAvailable); + + bool enableRemoteAccess() const; + void setEnableRemoteAccess(bool newEnableRemoteAccess); + + bool enableCaseSensitiveItemIds() const; + void setEnableCaseSensitiveItemIds(bool newEnableCaseSensitiveItemIds); + + bool disableLiveTvChannelUserDataName() const; + void setDisableLiveTvChannelUserDataName(bool newDisableLiveTvChannelUserDataName); + + QString metadataPath() const; + void setMetadataPath(QString newMetadataPath); + + QString metadataNetworkPath() const; + void setMetadataNetworkPath(QString newMetadataNetworkPath); + + QString preferredMetadataLanguage() const; + void setPreferredMetadataLanguage(QString newPreferredMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QStringList sortReplaceCharacters() const; + void setSortReplaceCharacters(QStringList newSortReplaceCharacters); + + QStringList sortRemoveCharacters() const; + void setSortRemoveCharacters(QStringList newSortRemoveCharacters); + + QStringList sortRemoveWords() const; + void setSortRemoveWords(QStringList newSortRemoveWords); + + qint32 minResumePct() const; + void setMinResumePct(qint32 newMinResumePct); + + qint32 maxResumePct() const; + void setMaxResumePct(qint32 newMaxResumePct); + + qint32 minResumeDurationSeconds() const; + void setMinResumeDurationSeconds(qint32 newMinResumeDurationSeconds); + + qint32 minAudiobookResume() const; + void setMinAudiobookResume(qint32 newMinAudiobookResume); + + qint32 maxAudiobookResume() const; + void setMaxAudiobookResume(qint32 newMaxAudiobookResume); + + qint32 libraryMonitorDelay() const; + void setLibraryMonitorDelay(qint32 newLibraryMonitorDelay); + + bool enableDashboardResponseCaching() const; + void setEnableDashboardResponseCaching(bool newEnableDashboardResponseCaching); + + ImageSavingConvention imageSavingConvention() const; + void setImageSavingConvention(ImageSavingConvention newImageSavingConvention); + + QList metadataOptions() const; + void setMetadataOptions(QList newMetadataOptions); + + bool skipDeserializationForBasicTypes() const; + void setSkipDeserializationForBasicTypes(bool newSkipDeserializationForBasicTypes); + + QString serverName() const; + void setServerName(QString newServerName); + + QString baseUrl() const; + void setBaseUrl(QString newBaseUrl); + + QString uICulture() const; + void setUICulture(QString newUICulture); + + bool saveMetadataHidden() const; + void setSaveMetadataHidden(bool newSaveMetadataHidden); + + QList contentTypes() const; + void setContentTypes(QList newContentTypes); + + qint32 remoteClientBitrateLimit() const; + void setRemoteClientBitrateLimit(qint32 newRemoteClientBitrateLimit); + + bool enableFolderView() const; + void setEnableFolderView(bool newEnableFolderView); + + bool enableGroupingIntoCollections() const; + void setEnableGroupingIntoCollections(bool newEnableGroupingIntoCollections); + + bool displaySpecialsWithinSeasons() const; + void setDisplaySpecialsWithinSeasons(bool newDisplaySpecialsWithinSeasons); + + QStringList localNetworkSubnets() const; + void setLocalNetworkSubnets(QStringList newLocalNetworkSubnets); + + QStringList localNetworkAddresses() const; + void setLocalNetworkAddresses(QStringList newLocalNetworkAddresses); + + QStringList codecsUsed() const; + void setCodecsUsed(QStringList newCodecsUsed); + + QList pluginRepositories() const; + void setPluginRepositories(QList newPluginRepositories); + + bool enableExternalContentInSuggestions() const; + void setEnableExternalContentInSuggestions(bool newEnableExternalContentInSuggestions); + + bool requireHttps() const; + void setRequireHttps(bool newRequireHttps); + + bool enableNewOmdbSupport() const; + void setEnableNewOmdbSupport(bool newEnableNewOmdbSupport); + + QStringList remoteIPFilter() const; + void setRemoteIPFilter(QStringList newRemoteIPFilter); + + bool isRemoteIPFilterBlacklist() const; + void setIsRemoteIPFilterBlacklist(bool newIsRemoteIPFilterBlacklist); + + qint32 imageExtractionTimeoutMs() const; + void setImageExtractionTimeoutMs(qint32 newImageExtractionTimeoutMs); + + QList pathSubstitutions() const; + void setPathSubstitutions(QList newPathSubstitutions); + + bool enableSimpleArtistDetection() const; + void setEnableSimpleArtistDetection(bool newEnableSimpleArtistDetection); + + QStringList uninstalledPlugins() const; + void setUninstalledPlugins(QStringList newUninstalledPlugins); + + bool enableSlowResponseWarning() const; + void setEnableSlowResponseWarning(bool newEnableSlowResponseWarning); + + qint64 slowResponseThresholdMs() const; + void setSlowResponseThresholdMs(qint64 newSlowResponseThresholdMs); + + QStringList corsHosts() const; + void setCorsHosts(QStringList newCorsHosts); + + QStringList knownProxies() const; + void setKnownProxies(QStringList newKnownProxies); + + qint32 activityLogRetentionDays() const; + void setActivityLogRetentionDays(qint32 newActivityLogRetentionDays); + + qint32 libraryScanFanoutConcurrency() const; + void setLibraryScanFanoutConcurrency(qint32 newLibraryScanFanoutConcurrency); + + qint32 libraryMetadataRefreshConcurrency() const; + void setLibraryMetadataRefreshConcurrency(qint32 newLibraryMetadataRefreshConcurrency); + + bool removeOldPlugins() const; + void setRemoveOldPlugins(bool newRemoveOldPlugins); + + bool disablePluginImages() const; + void setDisablePluginImages(bool newDisablePluginImages); + +signals: + void logFileRetentionDaysChanged(qint32 newLogFileRetentionDays); + void isStartupWizardCompletedChanged(bool newIsStartupWizardCompleted); + void cachePathChanged(QString newCachePath); + void previousVersionChanged(Version * newPreviousVersion); + void previousVersionStrChanged(QString newPreviousVersionStr); + void enableUPnPChanged(bool newEnableUPnP); + void enableMetricsChanged(bool newEnableMetrics); + void publicPortChanged(qint32 newPublicPort); + void uPnPCreateHttpPortMapChanged(bool newUPnPCreateHttpPortMap); + void uDPPortRangeChanged(QString newUDPPortRange); + void enableIPV6Changed(bool newEnableIPV6); + void enableIPV4Changed(bool newEnableIPV4); + void enableSSDPTracingChanged(bool newEnableSSDPTracing); + void sSDPTracingFilterChanged(QString newSSDPTracingFilter); + void uDPSendCountChanged(qint32 newUDPSendCount); + void uDPSendDelayChanged(qint32 newUDPSendDelay); + void ignoreVirtualInterfacesChanged(bool newIgnoreVirtualInterfaces); + void virtualInterfaceNamesChanged(QString newVirtualInterfaceNames); + void gatewayMonitorPeriodChanged(qint32 newGatewayMonitorPeriod); + void enableMultiSocketBindingChanged(bool newEnableMultiSocketBinding); + void trustAllIP6InterfacesChanged(bool newTrustAllIP6Interfaces); + void hDHomerunPortRangeChanged(QString newHDHomerunPortRange); + void publishedServerUriBySubnetChanged(QStringList newPublishedServerUriBySubnet); + void autoDiscoveryTracingChanged(bool newAutoDiscoveryTracing); + void autoDiscoveryChanged(bool newAutoDiscovery); + void publicHttpsPortChanged(qint32 newPublicHttpsPort); + void httpServerPortNumberChanged(qint32 newHttpServerPortNumber); + void httpsPortNumberChanged(qint32 newHttpsPortNumber); + void enableHttpsChanged(bool newEnableHttps); + void enableNormalizedItemByNameIdsChanged(bool newEnableNormalizedItemByNameIds); + void certificatePathChanged(QString newCertificatePath); + void certificatePasswordChanged(QString newCertificatePassword); + void isPortAuthorizedChanged(bool newIsPortAuthorized); + void quickConnectAvailableChanged(bool newQuickConnectAvailable); + void enableRemoteAccessChanged(bool newEnableRemoteAccess); + void enableCaseSensitiveItemIdsChanged(bool newEnableCaseSensitiveItemIds); + void disableLiveTvChannelUserDataNameChanged(bool newDisableLiveTvChannelUserDataName); + void metadataPathChanged(QString newMetadataPath); + void metadataNetworkPathChanged(QString newMetadataNetworkPath); + void preferredMetadataLanguageChanged(QString newPreferredMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void sortReplaceCharactersChanged(QStringList newSortReplaceCharacters); + void sortRemoveCharactersChanged(QStringList newSortRemoveCharacters); + void sortRemoveWordsChanged(QStringList newSortRemoveWords); + void minResumePctChanged(qint32 newMinResumePct); + void maxResumePctChanged(qint32 newMaxResumePct); + void minResumeDurationSecondsChanged(qint32 newMinResumeDurationSeconds); + void minAudiobookResumeChanged(qint32 newMinAudiobookResume); + void maxAudiobookResumeChanged(qint32 newMaxAudiobookResume); + void libraryMonitorDelayChanged(qint32 newLibraryMonitorDelay); + void enableDashboardResponseCachingChanged(bool newEnableDashboardResponseCaching); + void imageSavingConventionChanged(ImageSavingConvention newImageSavingConvention); + void metadataOptionsChanged(QList newMetadataOptions); + void skipDeserializationForBasicTypesChanged(bool newSkipDeserializationForBasicTypes); + void serverNameChanged(QString newServerName); + void baseUrlChanged(QString newBaseUrl); + void uICultureChanged(QString newUICulture); + void saveMetadataHiddenChanged(bool newSaveMetadataHidden); + void contentTypesChanged(QList newContentTypes); + void remoteClientBitrateLimitChanged(qint32 newRemoteClientBitrateLimit); + void enableFolderViewChanged(bool newEnableFolderView); + void enableGroupingIntoCollectionsChanged(bool newEnableGroupingIntoCollections); + void displaySpecialsWithinSeasonsChanged(bool newDisplaySpecialsWithinSeasons); + void localNetworkSubnetsChanged(QStringList newLocalNetworkSubnets); + void localNetworkAddressesChanged(QStringList newLocalNetworkAddresses); + void codecsUsedChanged(QStringList newCodecsUsed); + void pluginRepositoriesChanged(QList newPluginRepositories); + void enableExternalContentInSuggestionsChanged(bool newEnableExternalContentInSuggestions); + void requireHttpsChanged(bool newRequireHttps); + void enableNewOmdbSupportChanged(bool newEnableNewOmdbSupport); + void remoteIPFilterChanged(QStringList newRemoteIPFilter); + void isRemoteIPFilterBlacklistChanged(bool newIsRemoteIPFilterBlacklist); + void imageExtractionTimeoutMsChanged(qint32 newImageExtractionTimeoutMs); + void pathSubstitutionsChanged(QList newPathSubstitutions); + void enableSimpleArtistDetectionChanged(bool newEnableSimpleArtistDetection); + void uninstalledPluginsChanged(QStringList newUninstalledPlugins); + void enableSlowResponseWarningChanged(bool newEnableSlowResponseWarning); + void slowResponseThresholdMsChanged(qint64 newSlowResponseThresholdMs); + void corsHostsChanged(QStringList newCorsHosts); + void knownProxiesChanged(QStringList newKnownProxies); + void activityLogRetentionDaysChanged(qint32 newActivityLogRetentionDays); + void libraryScanFanoutConcurrencyChanged(qint32 newLibraryScanFanoutConcurrency); + void libraryMetadataRefreshConcurrencyChanged(qint32 newLibraryMetadataRefreshConcurrency); + void removeOldPluginsChanged(bool newRemoveOldPlugins); + void disablePluginImagesChanged(bool newDisablePluginImages); +protected: + qint32 m_logFileRetentionDays; + bool m_isStartupWizardCompleted; + QString m_cachePath; + Version * m_previousVersion = nullptr; + QString m_previousVersionStr; + bool m_enableUPnP; + bool m_enableMetrics; + qint32 m_publicPort; + bool m_uPnPCreateHttpPortMap; + QString m_uDPPortRange; + bool m_enableIPV6; + bool m_enableIPV4; + bool m_enableSSDPTracing; + QString m_sSDPTracingFilter; + qint32 m_uDPSendCount; + qint32 m_uDPSendDelay; + bool m_ignoreVirtualInterfaces; + QString m_virtualInterfaceNames; + qint32 m_gatewayMonitorPeriod; + bool m_enableMultiSocketBinding; + bool m_trustAllIP6Interfaces; + QString m_hDHomerunPortRange; + QStringList m_publishedServerUriBySubnet; + bool m_autoDiscoveryTracing; + bool m_autoDiscovery; + qint32 m_publicHttpsPort; + qint32 m_httpServerPortNumber; + qint32 m_httpsPortNumber; + bool m_enableHttps; + bool m_enableNormalizedItemByNameIds; + QString m_certificatePath; + QString m_certificatePassword; + bool m_isPortAuthorized; + bool m_quickConnectAvailable; + bool m_enableRemoteAccess; + bool m_enableCaseSensitiveItemIds; + bool m_disableLiveTvChannelUserDataName; + QString m_metadataPath; + QString m_metadataNetworkPath; + QString m_preferredMetadataLanguage; + QString m_metadataCountryCode; + QStringList m_sortReplaceCharacters; + QStringList m_sortRemoveCharacters; + QStringList m_sortRemoveWords; + qint32 m_minResumePct; + qint32 m_maxResumePct; + qint32 m_minResumeDurationSeconds; + qint32 m_minAudiobookResume; + qint32 m_maxAudiobookResume; + qint32 m_libraryMonitorDelay; + bool m_enableDashboardResponseCaching; + ImageSavingConvention m_imageSavingConvention; + QList m_metadataOptions; + bool m_skipDeserializationForBasicTypes; + QString m_serverName; + QString m_baseUrl; + QString m_uICulture; + bool m_saveMetadataHidden; + QList m_contentTypes; + qint32 m_remoteClientBitrateLimit; + bool m_enableFolderView; + bool m_enableGroupingIntoCollections; + bool m_displaySpecialsWithinSeasons; + QStringList m_localNetworkSubnets; + QStringList m_localNetworkAddresses; + QStringList m_codecsUsed; + QList m_pluginRepositories; + bool m_enableExternalContentInSuggestions; + bool m_requireHttps; + bool m_enableNewOmdbSupport; + QStringList m_remoteIPFilter; + bool m_isRemoteIPFilterBlacklist; + qint32 m_imageExtractionTimeoutMs; + QList m_pathSubstitutions; + bool m_enableSimpleArtistDetection; + QStringList m_uninstalledPlugins; + bool m_enableSlowResponseWarning; + qint64 m_slowResponseThresholdMs; + QStringList m_corsHosts; + QStringList m_knownProxies; + qint32 m_activityLogRetentionDays; + qint32 m_libraryScanFanoutConcurrency; + qint32 m_libraryMetadataRefreshConcurrency; + bool m_removeOldPlugins; + bool m_disablePluginImages; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SERVERCONFIGURATION_H diff --git a/core/include/JellyfinQt/DTO/sessioninfo.h b/core/include/JellyfinQt/DTO/sessioninfo.h new file mode 100644 index 0000000..551db3d --- /dev/null +++ b/core/include/JellyfinQt/DTO/sessioninfo.h @@ -0,0 +1,280 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SESSIONINFO_H +#define JELLYFIN_DTO_SESSIONINFO_H + +#include +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/generalcommandtype.h" + +namespace Jellyfin { +namespace DTO { + +class BaseItem; +class BaseItemDto; +class BaseItemDto; +class ClientCapabilities; +class PlayerStateInfo; +class QueueItem; +class SessionUserInfo; +class TranscodingInfo; + +class SessionInfo : public QObject { + Q_OBJECT +public: + explicit SessionInfo(QObject *parent = nullptr); + static SessionInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(PlayerStateInfo * playState READ playState WRITE setPlayState NOTIFY playStateChanged) + Q_PROPERTY(QList additionalUsers READ additionalUsers WRITE setAdditionalUsers NOTIFY additionalUsersChanged) + Q_PROPERTY(ClientCapabilities * capabilities READ capabilities WRITE setCapabilities NOTIFY capabilitiesChanged) + /** + * @brief Gets or sets the remote end point. + */ + Q_PROPERTY(QString remoteEndPoint READ remoteEndPoint WRITE setRemoteEndPoint NOTIFY remoteEndPointChanged) + /** + * @brief Gets or sets the playable media types. + */ + Q_PROPERTY(QStringList playableMediaTypes READ playableMediaTypes WRITE setPlayableMediaTypes NOTIFY playableMediaTypesChanged) + /** + * @brief Gets or sets the id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the user id. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + /** + * @brief Gets or sets the username. + */ + Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged) + /** + * @brief Gets or sets the type of the client. + */ + Q_PROPERTY(QString client READ client WRITE setClient NOTIFY clientChanged) + /** + * @brief Gets or sets the last activity date. + */ + Q_PROPERTY(QDateTime lastActivityDate READ lastActivityDate WRITE setLastActivityDate NOTIFY lastActivityDateChanged) + /** + * @brief Gets or sets the last playback check in. + */ + Q_PROPERTY(QDateTime lastPlaybackCheckIn READ lastPlaybackCheckIn WRITE setLastPlaybackCheckIn NOTIFY lastPlaybackCheckInChanged) + /** + * @brief Gets or sets the name of the device. + */ + Q_PROPERTY(QString deviceName READ deviceName WRITE setDeviceName NOTIFY deviceNameChanged) + /** + * @brief Gets or sets the type of the device. + */ + Q_PROPERTY(QString deviceType READ deviceType WRITE setDeviceType NOTIFY deviceTypeChanged) + Q_PROPERTY(BaseItemDto * nowPlayingItem READ nowPlayingItem WRITE setNowPlayingItem NOTIFY nowPlayingItemChanged) + Q_PROPERTY(BaseItem * fullNowPlayingItem READ fullNowPlayingItem WRITE setFullNowPlayingItem NOTIFY fullNowPlayingItemChanged) + Q_PROPERTY(BaseItemDto * nowViewingItem READ nowViewingItem WRITE setNowViewingItem NOTIFY nowViewingItemChanged) + /** + * @brief Gets or sets the device id. + */ + Q_PROPERTY(QString deviceId READ deviceId WRITE setDeviceId NOTIFY deviceIdChanged) + /** + * @brief Gets or sets the application version. + */ + Q_PROPERTY(QString applicationVersion READ applicationVersion WRITE setApplicationVersion NOTIFY applicationVersionChanged) + Q_PROPERTY(TranscodingInfo * transcodingInfo READ transcodingInfo WRITE setTranscodingInfo NOTIFY transcodingInfoChanged) + /** + * @brief Gets a value indicating whether this instance is active. + */ + Q_PROPERTY(bool isActive READ isActive WRITE setIsActive NOTIFY isActiveChanged) + Q_PROPERTY(bool supportsMediaControl READ supportsMediaControl WRITE setSupportsMediaControl NOTIFY supportsMediaControlChanged) + Q_PROPERTY(bool supportsRemoteControl READ supportsRemoteControl WRITE setSupportsRemoteControl NOTIFY supportsRemoteControlChanged) + Q_PROPERTY(QList nowPlayingQueue READ nowPlayingQueue WRITE setNowPlayingQueue NOTIFY nowPlayingQueueChanged) + Q_PROPERTY(bool hasCustomDeviceName READ hasCustomDeviceName WRITE setHasCustomDeviceName NOTIFY hasCustomDeviceNameChanged) + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + Q_PROPERTY(QString serverId READ serverId WRITE setServerId NOTIFY serverIdChanged) + Q_PROPERTY(QString userPrimaryImageTag READ userPrimaryImageTag WRITE setUserPrimaryImageTag NOTIFY userPrimaryImageTagChanged) + /** + * @brief Gets or sets the supported commands. + */ + Q_PROPERTY(QList supportedCommands READ supportedCommands WRITE setSupportedCommands NOTIFY supportedCommandsChanged) + + PlayerStateInfo * playState() const; + void setPlayState(PlayerStateInfo * newPlayState); + + QList additionalUsers() const; + void setAdditionalUsers(QList newAdditionalUsers); + + ClientCapabilities * capabilities() const; + void setCapabilities(ClientCapabilities * newCapabilities); + + QString remoteEndPoint() const; + void setRemoteEndPoint(QString newRemoteEndPoint); + + QStringList playableMediaTypes() const; + void setPlayableMediaTypes(QStringList newPlayableMediaTypes); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString userId() const; + void setUserId(QString newUserId); + + QString userName() const; + void setUserName(QString newUserName); + + QString client() const; + void setClient(QString newClient); + + QDateTime lastActivityDate() const; + void setLastActivityDate(QDateTime newLastActivityDate); + + QDateTime lastPlaybackCheckIn() const; + void setLastPlaybackCheckIn(QDateTime newLastPlaybackCheckIn); + + QString deviceName() const; + void setDeviceName(QString newDeviceName); + + QString deviceType() const; + void setDeviceType(QString newDeviceType); + + BaseItemDto * nowPlayingItem() const; + void setNowPlayingItem(BaseItemDto * newNowPlayingItem); + + BaseItem * fullNowPlayingItem() const; + void setFullNowPlayingItem(BaseItem * newFullNowPlayingItem); + + BaseItemDto * nowViewingItem() const; + void setNowViewingItem(BaseItemDto * newNowViewingItem); + + QString deviceId() const; + void setDeviceId(QString newDeviceId); + + QString applicationVersion() const; + void setApplicationVersion(QString newApplicationVersion); + + TranscodingInfo * transcodingInfo() const; + void setTranscodingInfo(TranscodingInfo * newTranscodingInfo); + + bool isActive() const; + void setIsActive(bool newIsActive); + + bool supportsMediaControl() const; + void setSupportsMediaControl(bool newSupportsMediaControl); + + bool supportsRemoteControl() const; + void setSupportsRemoteControl(bool newSupportsRemoteControl); + + QList nowPlayingQueue() const; + void setNowPlayingQueue(QList newNowPlayingQueue); + + bool hasCustomDeviceName() const; + void setHasCustomDeviceName(bool newHasCustomDeviceName); + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + + QString serverId() const; + void setServerId(QString newServerId); + + QString userPrimaryImageTag() const; + void setUserPrimaryImageTag(QString newUserPrimaryImageTag); + + QList supportedCommands() const; + void setSupportedCommands(QList newSupportedCommands); + +signals: + void playStateChanged(PlayerStateInfo * newPlayState); + void additionalUsersChanged(QList newAdditionalUsers); + void capabilitiesChanged(ClientCapabilities * newCapabilities); + void remoteEndPointChanged(QString newRemoteEndPoint); + void playableMediaTypesChanged(QStringList newPlayableMediaTypes); + void jellyfinIdChanged(QString newJellyfinId); + void userIdChanged(QString newUserId); + void userNameChanged(QString newUserName); + void clientChanged(QString newClient); + void lastActivityDateChanged(QDateTime newLastActivityDate); + void lastPlaybackCheckInChanged(QDateTime newLastPlaybackCheckIn); + void deviceNameChanged(QString newDeviceName); + void deviceTypeChanged(QString newDeviceType); + void nowPlayingItemChanged(BaseItemDto * newNowPlayingItem); + void fullNowPlayingItemChanged(BaseItem * newFullNowPlayingItem); + void nowViewingItemChanged(BaseItemDto * newNowViewingItem); + void deviceIdChanged(QString newDeviceId); + void applicationVersionChanged(QString newApplicationVersion); + void transcodingInfoChanged(TranscodingInfo * newTranscodingInfo); + void isActiveChanged(bool newIsActive); + void supportsMediaControlChanged(bool newSupportsMediaControl); + void supportsRemoteControlChanged(bool newSupportsRemoteControl); + void nowPlayingQueueChanged(QList newNowPlayingQueue); + void hasCustomDeviceNameChanged(bool newHasCustomDeviceName); + void playlistItemIdChanged(QString newPlaylistItemId); + void serverIdChanged(QString newServerId); + void userPrimaryImageTagChanged(QString newUserPrimaryImageTag); + void supportedCommandsChanged(QList newSupportedCommands); +protected: + PlayerStateInfo * m_playState = nullptr; + QList m_additionalUsers; + ClientCapabilities * m_capabilities = nullptr; + QString m_remoteEndPoint; + QStringList m_playableMediaTypes; + QString m_jellyfinId; + QString m_userId; + QString m_userName; + QString m_client; + QDateTime m_lastActivityDate; + QDateTime m_lastPlaybackCheckIn; + QString m_deviceName; + QString m_deviceType; + BaseItemDto * m_nowPlayingItem = nullptr; + BaseItem * m_fullNowPlayingItem = nullptr; + BaseItemDto * m_nowViewingItem = nullptr; + QString m_deviceId; + QString m_applicationVersion; + TranscodingInfo * m_transcodingInfo = nullptr; + bool m_isActive; + bool m_supportsMediaControl; + bool m_supportsRemoteControl; + QList m_nowPlayingQueue; + bool m_hasCustomDeviceName; + QString m_playlistItemId; + QString m_serverId; + QString m_userPrimaryImageTag; + QList m_supportedCommands; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SESSIONINFO_H diff --git a/core/include/JellyfinQt/DTO/sessionuserinfo.h b/core/include/JellyfinQt/DTO/sessionuserinfo.h new file mode 100644 index 0000000..43b1b36 --- /dev/null +++ b/core/include/JellyfinQt/DTO/sessionuserinfo.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SESSIONUSERINFO_H +#define JELLYFIN_DTO_SESSIONUSERINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SessionUserInfo : public QObject { + Q_OBJECT +public: + explicit SessionUserInfo(QObject *parent = nullptr); + static SessionUserInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the user identifier. + */ + Q_PROPERTY(QString userId READ userId WRITE setUserId NOTIFY userIdChanged) + /** + * @brief Gets or sets the name of the user. + */ + Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged) + + QString userId() const; + void setUserId(QString newUserId); + + QString userName() const; + void setUserName(QString newUserName); + +signals: + void userIdChanged(QString newUserId); + void userNameChanged(QString newUserName); +protected: + QString m_userId; + QString m_userName; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SESSIONUSERINFO_H diff --git a/core/include/JellyfinQt/DTO/setchannelmappingdto.h b/core/include/JellyfinQt/DTO/setchannelmappingdto.h new file mode 100644 index 0000000..79e0848 --- /dev/null +++ b/core/include/JellyfinQt/DTO/setchannelmappingdto.h @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SETCHANNELMAPPINGDTO_H +#define JELLYFIN_DTO_SETCHANNELMAPPINGDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SetChannelMappingDto : public QObject { + Q_OBJECT +public: + explicit SetChannelMappingDto(QObject *parent = nullptr); + static SetChannelMappingDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the provider id. + */ + Q_PROPERTY(QString providerId READ providerId WRITE setProviderId NOTIFY providerIdChanged) + /** + * @brief Gets or sets the tuner channel id. + */ + Q_PROPERTY(QString tunerChannelId READ tunerChannelId WRITE setTunerChannelId NOTIFY tunerChannelIdChanged) + /** + * @brief Gets or sets the provider channel id. + */ + Q_PROPERTY(QString providerChannelId READ providerChannelId WRITE setProviderChannelId NOTIFY providerChannelIdChanged) + + QString providerId() const; + void setProviderId(QString newProviderId); + + QString tunerChannelId() const; + void setTunerChannelId(QString newTunerChannelId); + + QString providerChannelId() const; + void setProviderChannelId(QString newProviderChannelId); + +signals: + void providerIdChanged(QString newProviderId); + void tunerChannelIdChanged(QString newTunerChannelId); + void providerChannelIdChanged(QString newProviderChannelId); +protected: + QString m_providerId; + QString m_tunerChannelId; + QString m_providerChannelId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SETCHANNELMAPPINGDTO_H diff --git a/core/include/JellyfinQt/DTO/setplaylistitemrequestdto.h b/core/include/JellyfinQt/DTO/setplaylistitemrequestdto.h new file mode 100644 index 0000000..ff3cc92 --- /dev/null +++ b/core/include/JellyfinQt/DTO/setplaylistitemrequestdto.h @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SETPLAYLISTITEMREQUESTDTO_H +#define JELLYFIN_DTO_SETPLAYLISTITEMREQUESTDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SetPlaylistItemRequestDto : public QObject { + Q_OBJECT +public: + explicit SetPlaylistItemRequestDto(QObject *parent = nullptr); + static SetPlaylistItemRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the playlist identifier of the playing item. + */ + Q_PROPERTY(QString playlistItemId READ playlistItemId WRITE setPlaylistItemId NOTIFY playlistItemIdChanged) + + QString playlistItemId() const; + void setPlaylistItemId(QString newPlaylistItemId); + +signals: + void playlistItemIdChanged(QString newPlaylistItemId); +protected: + QString m_playlistItemId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SETPLAYLISTITEMREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/setrepeatmoderequestdto.h b/core/include/JellyfinQt/DTO/setrepeatmoderequestdto.h new file mode 100644 index 0000000..5551ca3 --- /dev/null +++ b/core/include/JellyfinQt/DTO/setrepeatmoderequestdto.h @@ -0,0 +1,63 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SETREPEATMODEREQUESTDTO_H +#define JELLYFIN_DTO_SETREPEATMODEREQUESTDTO_H + +#include +#include + +#include "JellyfinQt/DTO/grouprepeatmode.h" + +namespace Jellyfin { +namespace DTO { + +class SetRepeatModeRequestDto : public QObject { + Q_OBJECT +public: + explicit SetRepeatModeRequestDto(QObject *parent = nullptr); + static SetRepeatModeRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(GroupRepeatMode mode READ mode WRITE setMode NOTIFY modeChanged) + + GroupRepeatMode mode() const; + void setMode(GroupRepeatMode newMode); + +signals: + void modeChanged(GroupRepeatMode newMode); +protected: + GroupRepeatMode m_mode; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SETREPEATMODEREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/setshufflemoderequestdto.h b/core/include/JellyfinQt/DTO/setshufflemoderequestdto.h new file mode 100644 index 0000000..d1864fb --- /dev/null +++ b/core/include/JellyfinQt/DTO/setshufflemoderequestdto.h @@ -0,0 +1,63 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SETSHUFFLEMODEREQUESTDTO_H +#define JELLYFIN_DTO_SETSHUFFLEMODEREQUESTDTO_H + +#include +#include + +#include "JellyfinQt/DTO/groupshufflemode.h" + +namespace Jellyfin { +namespace DTO { + +class SetShuffleModeRequestDto : public QObject { + Q_OBJECT +public: + explicit SetShuffleModeRequestDto(QObject *parent = nullptr); + static SetShuffleModeRequestDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(GroupShuffleMode mode READ mode WRITE setMode NOTIFY modeChanged) + + GroupShuffleMode mode() const; + void setMode(GroupShuffleMode newMode); + +signals: + void modeChanged(GroupShuffleMode newMode); +protected: + GroupShuffleMode m_mode; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SETSHUFFLEMODEREQUESTDTO_H diff --git a/core/include/JellyfinQt/DTO/songinfo.h b/core/include/JellyfinQt/DTO/songinfo.h new file mode 100644 index 0000000..472234b --- /dev/null +++ b/core/include/JellyfinQt/DTO/songinfo.h @@ -0,0 +1,155 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SONGINFO_H +#define JELLYFIN_DTO_SONGINFO_H + +#include +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SongInfo : public QObject { + Q_OBJECT +public: + explicit SongInfo(QObject *parent = nullptr); + static SongInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the metadata language. + */ + Q_PROPERTY(QString metadataLanguage READ metadataLanguage WRITE setMetadataLanguage NOTIFY metadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 year READ year WRITE setYear NOTIFY yearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(bool isAutomated READ isAutomated WRITE setIsAutomated NOTIFY isAutomatedChanged) + Q_PROPERTY(QStringList albumArtists READ albumArtists WRITE setAlbumArtists NOTIFY albumArtistsChanged) + Q_PROPERTY(QString album READ album WRITE setAlbum NOTIFY albumChanged) + Q_PROPERTY(QStringList artists READ artists WRITE setArtists NOTIFY artistsChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + QString metadataLanguage() const; + void setMetadataLanguage(QString newMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 year() const; + void setYear(qint32 newYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + bool isAutomated() const; + void setIsAutomated(bool newIsAutomated); + + QStringList albumArtists() const; + void setAlbumArtists(QStringList newAlbumArtists); + + QString album() const; + void setAlbum(QString newAlbum); + + QStringList artists() const; + void setArtists(QStringList newArtists); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void metadataLanguageChanged(QString newMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void providerIdsChanged(QJsonObject newProviderIds); + void yearChanged(qint32 newYear); + void indexNumberChanged(qint32 newIndexNumber); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void isAutomatedChanged(bool newIsAutomated); + void albumArtistsChanged(QStringList newAlbumArtists); + void albumChanged(QString newAlbum); + void artistsChanged(QStringList newArtists); +protected: + QString m_name; + QString m_path; + QString m_metadataLanguage; + QString m_metadataCountryCode; + QJsonObject m_providerIds; + qint32 m_year; + qint32 m_indexNumber; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + bool m_isAutomated; + QStringList m_albumArtists; + QString m_album; + QStringList m_artists; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SONGINFO_H diff --git a/core/include/JellyfinQt/DTO/sortorder.h b/core/include/JellyfinQt/DTO/sortorder.h new file mode 100644 index 0000000..5d12f46 --- /dev/null +++ b/core/include/JellyfinQt/DTO/sortorder.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SORTORDER_H +#define JELLYFIN_DTO_SORTORDER_H + +#include + +namespace Jellyfin { +namespace DTO { + +class SortOrderClass { + Q_GADGET +public: + enum Value { + Ascending, + Descending, + }; + Q_ENUM(Value) +private: + explicit SortOrderClass(); +}; +typedef SortOrderClass::Value SortOrder; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SORTORDER_H diff --git a/core/include/JellyfinQt/DTO/specialviewoptiondto.h b/core/include/JellyfinQt/DTO/specialviewoptiondto.h new file mode 100644 index 0000000..fd6ccf8 --- /dev/null +++ b/core/include/JellyfinQt/DTO/specialviewoptiondto.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SPECIALVIEWOPTIONDTO_H +#define JELLYFIN_DTO_SPECIALVIEWOPTIONDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class SpecialViewOptionDto : public QObject { + Q_OBJECT +public: + explicit SpecialViewOptionDto(QObject *parent = nullptr); + static SpecialViewOptionDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets view option name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets view option id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + + QString name() const; + void setName(QString newName); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + +signals: + void nameChanged(QString newName); + void jellyfinIdChanged(QString newJellyfinId); +protected: + QString m_name; + QString m_jellyfinId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SPECIALVIEWOPTIONDTO_H diff --git a/core/include/JellyfinQt/DTO/startupconfigurationdto.h b/core/include/JellyfinQt/DTO/startupconfigurationdto.h new file mode 100644 index 0000000..fd53b02 --- /dev/null +++ b/core/include/JellyfinQt/DTO/startupconfigurationdto.h @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_STARTUPCONFIGURATIONDTO_H +#define JELLYFIN_DTO_STARTUPCONFIGURATIONDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class StartupConfigurationDto : public QObject { + Q_OBJECT +public: + explicit StartupConfigurationDto(QObject *parent = nullptr); + static StartupConfigurationDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets UI language culture. + */ + Q_PROPERTY(QString uICulture READ uICulture WRITE setUICulture NOTIFY uICultureChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the preferred language for the metadata. + */ + Q_PROPERTY(QString preferredMetadataLanguage READ preferredMetadataLanguage WRITE setPreferredMetadataLanguage NOTIFY preferredMetadataLanguageChanged) + + QString uICulture() const; + void setUICulture(QString newUICulture); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QString preferredMetadataLanguage() const; + void setPreferredMetadataLanguage(QString newPreferredMetadataLanguage); + +signals: + void uICultureChanged(QString newUICulture); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void preferredMetadataLanguageChanged(QString newPreferredMetadataLanguage); +protected: + QString m_uICulture; + QString m_metadataCountryCode; + QString m_preferredMetadataLanguage; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_STARTUPCONFIGURATIONDTO_H diff --git a/core/include/JellyfinQt/DTO/startupremoteaccessdto.h b/core/include/JellyfinQt/DTO/startupremoteaccessdto.h new file mode 100644 index 0000000..f5b9094 --- /dev/null +++ b/core/include/JellyfinQt/DTO/startupremoteaccessdto.h @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_STARTUPREMOTEACCESSDTO_H +#define JELLYFIN_DTO_STARTUPREMOTEACCESSDTO_H + +#include +#include + +namespace Jellyfin { +namespace DTO { + +class StartupRemoteAccessDto : public QObject { + Q_OBJECT +public: + explicit StartupRemoteAccessDto(QObject *parent = nullptr); + static StartupRemoteAccessDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets a value indicating whether enable remote access. + */ + Q_PROPERTY(bool enableRemoteAccess READ enableRemoteAccess WRITE setEnableRemoteAccess NOTIFY enableRemoteAccessChanged) + /** + * @brief Gets or sets a value indicating whether enable automatic port mapping. + */ + Q_PROPERTY(bool enableAutomaticPortMapping READ enableAutomaticPortMapping WRITE setEnableAutomaticPortMapping NOTIFY enableAutomaticPortMappingChanged) + + bool enableRemoteAccess() const; + void setEnableRemoteAccess(bool newEnableRemoteAccess); + + bool enableAutomaticPortMapping() const; + void setEnableAutomaticPortMapping(bool newEnableAutomaticPortMapping); + +signals: + void enableRemoteAccessChanged(bool newEnableRemoteAccess); + void enableAutomaticPortMappingChanged(bool newEnableAutomaticPortMapping); +protected: + bool m_enableRemoteAccess; + bool m_enableAutomaticPortMapping; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_STARTUPREMOTEACCESSDTO_H diff --git a/core/include/JellyfinQt/DTO/startupuserdto.h b/core/include/JellyfinQt/DTO/startupuserdto.h new file mode 100644 index 0000000..e380992 --- /dev/null +++ b/core/include/JellyfinQt/DTO/startupuserdto.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_STARTUPUSERDTO_H +#define JELLYFIN_DTO_STARTUPUSERDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class StartupUserDto : public QObject { + Q_OBJECT +public: + explicit StartupUserDto(QObject *parent = nullptr); + static StartupUserDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the username. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the user's password. + */ + Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged) + + QString name() const; + void setName(QString newName); + + QString password() const; + void setPassword(QString newPassword); + +signals: + void nameChanged(QString newName); + void passwordChanged(QString newPassword); +protected: + QString m_name; + QString m_password; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_STARTUPUSERDTO_H diff --git a/core/include/JellyfinQt/DTO/subtitledeliverymethod.h b/core/include/JellyfinQt/DTO/subtitledeliverymethod.h new file mode 100644 index 0000000..5258ba7 --- /dev/null +++ b/core/include/JellyfinQt/DTO/subtitledeliverymethod.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SUBTITLEDELIVERYMETHOD_H +#define JELLYFIN_DTO_SUBTITLEDELIVERYMETHOD_H + +#include + +namespace Jellyfin { +namespace DTO { + +class SubtitleDeliveryMethodClass { + Q_GADGET +public: + enum Value { + Encode, + Embed, + External, + Hls, + }; + Q_ENUM(Value) +private: + explicit SubtitleDeliveryMethodClass(); +}; +typedef SubtitleDeliveryMethodClass::Value SubtitleDeliveryMethod; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SUBTITLEDELIVERYMETHOD_H diff --git a/core/include/JellyfinQt/DTO/subtitleplaybackmode.h b/core/include/JellyfinQt/DTO/subtitleplaybackmode.h new file mode 100644 index 0000000..ff12583 --- /dev/null +++ b/core/include/JellyfinQt/DTO/subtitleplaybackmode.h @@ -0,0 +1,57 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SUBTITLEPLAYBACKMODE_H +#define JELLYFIN_DTO_SUBTITLEPLAYBACKMODE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class SubtitlePlaybackModeClass { + Q_GADGET +public: + enum Value { + Default, + Always, + OnlyForced, + None, + Smart, + }; + Q_ENUM(Value) +private: + explicit SubtitlePlaybackModeClass(); +}; +typedef SubtitlePlaybackModeClass::Value SubtitlePlaybackMode; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SUBTITLEPLAYBACKMODE_H diff --git a/core/include/JellyfinQt/DTO/subtitleprofile.h b/core/include/JellyfinQt/DTO/subtitleprofile.h new file mode 100644 index 0000000..369a151 --- /dev/null +++ b/core/include/JellyfinQt/DTO/subtitleprofile.h @@ -0,0 +1,88 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SUBTITLEPROFILE_H +#define JELLYFIN_DTO_SUBTITLEPROFILE_H + +#include +#include +#include + +#include "JellyfinQt/DTO/subtitledeliverymethod.h" + +namespace Jellyfin { +namespace DTO { + +class SubtitleProfile : public QObject { + Q_OBJECT +public: + explicit SubtitleProfile(QObject *parent = nullptr); + static SubtitleProfile *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString format READ format WRITE setFormat NOTIFY formatChanged) + Q_PROPERTY(SubtitleDeliveryMethod method READ method WRITE setMethod NOTIFY methodChanged) + Q_PROPERTY(QString didlMode READ didlMode WRITE setDidlMode NOTIFY didlModeChanged) + Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged) + Q_PROPERTY(QString container READ container WRITE setContainer NOTIFY containerChanged) + + QString format() const; + void setFormat(QString newFormat); + + SubtitleDeliveryMethod method() const; + void setMethod(SubtitleDeliveryMethod newMethod); + + QString didlMode() const; + void setDidlMode(QString newDidlMode); + + QString language() const; + void setLanguage(QString newLanguage); + + QString container() const; + void setContainer(QString newContainer); + +signals: + void formatChanged(QString newFormat); + void methodChanged(SubtitleDeliveryMethod newMethod); + void didlModeChanged(QString newDidlMode); + void languageChanged(QString newLanguage); + void containerChanged(QString newContainer); +protected: + QString m_format; + SubtitleDeliveryMethod m_method; + QString m_didlMode; + QString m_language; + QString m_container; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SUBTITLEPROFILE_H diff --git a/core/include/JellyfinQt/DTO/syncplayuseraccesstype.h b/core/include/JellyfinQt/DTO/syncplayuseraccesstype.h new file mode 100644 index 0000000..88658a8 --- /dev/null +++ b/core/include/JellyfinQt/DTO/syncplayuseraccesstype.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SYNCPLAYUSERACCESSTYPE_H +#define JELLYFIN_DTO_SYNCPLAYUSERACCESSTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class SyncPlayUserAccessTypeClass { + Q_GADGET +public: + enum Value { + CreateAndJoinGroups, + JoinGroups, + None, + }; + Q_ENUM(Value) +private: + explicit SyncPlayUserAccessTypeClass(); +}; +typedef SyncPlayUserAccessTypeClass::Value SyncPlayUserAccessType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SYNCPLAYUSERACCESSTYPE_H diff --git a/core/include/JellyfinQt/DTO/systeminfo.h b/core/include/JellyfinQt/DTO/systeminfo.h new file mode 100644 index 0000000..b1c1f8c --- /dev/null +++ b/core/include/JellyfinQt/DTO/systeminfo.h @@ -0,0 +1,285 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_SYSTEMINFO_H +#define JELLYFIN_DTO_SYSTEMINFO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/architecture.h" +#include "JellyfinQt/DTO/ffmpeglocation.h" + +namespace Jellyfin { +namespace DTO { + +class InstallationInfo; + +class SystemInfo : public QObject { + Q_OBJECT +public: + explicit SystemInfo(QObject *parent = nullptr); + static SystemInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the local address. + */ + Q_PROPERTY(QString localAddress READ localAddress WRITE setLocalAddress NOTIFY localAddressChanged) + /** + * @brief Gets or sets the name of the server. + */ + Q_PROPERTY(QString serverName READ serverName WRITE setServerName NOTIFY serverNameChanged) + /** + * @brief Gets or sets the server version. + */ + Q_PROPERTY(QString version READ version WRITE setVersion NOTIFY versionChanged) + /** + * @brief Gets or sets the product name. This is the AssemblyProduct name. + */ + Q_PROPERTY(QString productName READ productName WRITE setProductName NOTIFY productNameChanged) + /** + * @brief Gets or sets the operating system. + */ + Q_PROPERTY(QString operatingSystem READ operatingSystem WRITE setOperatingSystem NOTIFY operatingSystemChanged) + /** + * @brief Gets or sets the id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets a value indicating whether the startup wizard is completed. + */ + Q_PROPERTY(bool startupWizardCompleted READ startupWizardCompleted WRITE setStartupWizardCompleted NOTIFY startupWizardCompletedChanged) + /** + * @brief Gets or sets the display name of the operating system. + */ + Q_PROPERTY(QString operatingSystemDisplayName READ operatingSystemDisplayName WRITE setOperatingSystemDisplayName NOTIFY operatingSystemDisplayNameChanged) + /** + * @brief Get or sets the package name. + */ + Q_PROPERTY(QString packageName READ packageName WRITE setPackageName NOTIFY packageNameChanged) + /** + * @brief Gets or sets a value indicating whether this instance has pending restart. + */ + Q_PROPERTY(bool hasPendingRestart READ hasPendingRestart WRITE setHasPendingRestart NOTIFY hasPendingRestartChanged) + Q_PROPERTY(bool isShuttingDown READ isShuttingDown WRITE setIsShuttingDown NOTIFY isShuttingDownChanged) + /** + * @brief Gets or sets a value indicating whether [supports library monitor]. + */ + Q_PROPERTY(bool supportsLibraryMonitor READ supportsLibraryMonitor WRITE setSupportsLibraryMonitor NOTIFY supportsLibraryMonitorChanged) + /** + * @brief Gets or sets the web socket port number. + */ + Q_PROPERTY(qint32 webSocketPortNumber READ webSocketPortNumber WRITE setWebSocketPortNumber NOTIFY webSocketPortNumberChanged) + /** + * @brief Gets or sets the completed installations. + */ + Q_PROPERTY(QList completedInstallations READ completedInstallations WRITE setCompletedInstallations NOTIFY completedInstallationsChanged) + /** + * @brief Gets or sets a value indicating whether this instance can self restart. + */ + Q_PROPERTY(bool canSelfRestart READ canSelfRestart WRITE setCanSelfRestart NOTIFY canSelfRestartChanged) + Q_PROPERTY(bool canLaunchWebBrowser READ canLaunchWebBrowser WRITE setCanLaunchWebBrowser NOTIFY canLaunchWebBrowserChanged) + /** + * @brief Gets or sets the program data path. + */ + Q_PROPERTY(QString programDataPath READ programDataPath WRITE setProgramDataPath NOTIFY programDataPathChanged) + /** + * @brief Gets or sets the web UI resources path. + */ + Q_PROPERTY(QString webPath READ webPath WRITE setWebPath NOTIFY webPathChanged) + /** + * @brief Gets or sets the items by name path. + */ + Q_PROPERTY(QString itemsByNamePath READ itemsByNamePath WRITE setItemsByNamePath NOTIFY itemsByNamePathChanged) + /** + * @brief Gets or sets the cache path. + */ + Q_PROPERTY(QString cachePath READ cachePath WRITE setCachePath NOTIFY cachePathChanged) + /** + * @brief Gets or sets the log path. + */ + Q_PROPERTY(QString logPath READ logPath WRITE setLogPath NOTIFY logPathChanged) + /** + * @brief Gets or sets the internal metadata path. + */ + Q_PROPERTY(QString internalMetadataPath READ internalMetadataPath WRITE setInternalMetadataPath NOTIFY internalMetadataPathChanged) + /** + * @brief Gets or sets the transcode path. + */ + Q_PROPERTY(QString transcodingTempPath READ transcodingTempPath WRITE setTranscodingTempPath NOTIFY transcodingTempPathChanged) + /** + * @brief Gets or sets a value indicating whether this instance has update available. + */ + Q_PROPERTY(bool hasUpdateAvailable READ hasUpdateAvailable WRITE setHasUpdateAvailable NOTIFY hasUpdateAvailableChanged) + Q_PROPERTY(FFmpegLocation encoderLocation READ encoderLocation WRITE setEncoderLocation NOTIFY encoderLocationChanged) + Q_PROPERTY(Architecture systemArchitecture READ systemArchitecture WRITE setSystemArchitecture NOTIFY systemArchitectureChanged) + + QString localAddress() const; + void setLocalAddress(QString newLocalAddress); + + QString serverName() const; + void setServerName(QString newServerName); + + QString version() const; + void setVersion(QString newVersion); + + QString productName() const; + void setProductName(QString newProductName); + + QString operatingSystem() const; + void setOperatingSystem(QString newOperatingSystem); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + bool startupWizardCompleted() const; + void setStartupWizardCompleted(bool newStartupWizardCompleted); + + QString operatingSystemDisplayName() const; + void setOperatingSystemDisplayName(QString newOperatingSystemDisplayName); + + QString packageName() const; + void setPackageName(QString newPackageName); + + bool hasPendingRestart() const; + void setHasPendingRestart(bool newHasPendingRestart); + + bool isShuttingDown() const; + void setIsShuttingDown(bool newIsShuttingDown); + + bool supportsLibraryMonitor() const; + void setSupportsLibraryMonitor(bool newSupportsLibraryMonitor); + + qint32 webSocketPortNumber() const; + void setWebSocketPortNumber(qint32 newWebSocketPortNumber); + + QList completedInstallations() const; + void setCompletedInstallations(QList newCompletedInstallations); + + bool canSelfRestart() const; + void setCanSelfRestart(bool newCanSelfRestart); + + bool canLaunchWebBrowser() const; + void setCanLaunchWebBrowser(bool newCanLaunchWebBrowser); + + QString programDataPath() const; + void setProgramDataPath(QString newProgramDataPath); + + QString webPath() const; + void setWebPath(QString newWebPath); + + QString itemsByNamePath() const; + void setItemsByNamePath(QString newItemsByNamePath); + + QString cachePath() const; + void setCachePath(QString newCachePath); + + QString logPath() const; + void setLogPath(QString newLogPath); + + QString internalMetadataPath() const; + void setInternalMetadataPath(QString newInternalMetadataPath); + + QString transcodingTempPath() const; + void setTranscodingTempPath(QString newTranscodingTempPath); + + bool hasUpdateAvailable() const; + void setHasUpdateAvailable(bool newHasUpdateAvailable); + + FFmpegLocation encoderLocation() const; + void setEncoderLocation(FFmpegLocation newEncoderLocation); + + Architecture systemArchitecture() const; + void setSystemArchitecture(Architecture newSystemArchitecture); + +signals: + void localAddressChanged(QString newLocalAddress); + void serverNameChanged(QString newServerName); + void versionChanged(QString newVersion); + void productNameChanged(QString newProductName); + void operatingSystemChanged(QString newOperatingSystem); + void jellyfinIdChanged(QString newJellyfinId); + void startupWizardCompletedChanged(bool newStartupWizardCompleted); + void operatingSystemDisplayNameChanged(QString newOperatingSystemDisplayName); + void packageNameChanged(QString newPackageName); + void hasPendingRestartChanged(bool newHasPendingRestart); + void isShuttingDownChanged(bool newIsShuttingDown); + void supportsLibraryMonitorChanged(bool newSupportsLibraryMonitor); + void webSocketPortNumberChanged(qint32 newWebSocketPortNumber); + void completedInstallationsChanged(QList newCompletedInstallations); + void canSelfRestartChanged(bool newCanSelfRestart); + void canLaunchWebBrowserChanged(bool newCanLaunchWebBrowser); + void programDataPathChanged(QString newProgramDataPath); + void webPathChanged(QString newWebPath); + void itemsByNamePathChanged(QString newItemsByNamePath); + void cachePathChanged(QString newCachePath); + void logPathChanged(QString newLogPath); + void internalMetadataPathChanged(QString newInternalMetadataPath); + void transcodingTempPathChanged(QString newTranscodingTempPath); + void hasUpdateAvailableChanged(bool newHasUpdateAvailable); + void encoderLocationChanged(FFmpegLocation newEncoderLocation); + void systemArchitectureChanged(Architecture newSystemArchitecture); +protected: + QString m_localAddress; + QString m_serverName; + QString m_version; + QString m_productName; + QString m_operatingSystem; + QString m_jellyfinId; + bool m_startupWizardCompleted; + QString m_operatingSystemDisplayName; + QString m_packageName; + bool m_hasPendingRestart; + bool m_isShuttingDown; + bool m_supportsLibraryMonitor; + qint32 m_webSocketPortNumber; + QList m_completedInstallations; + bool m_canSelfRestart; + bool m_canLaunchWebBrowser; + QString m_programDataPath; + QString m_webPath; + QString m_itemsByNamePath; + QString m_cachePath; + QString m_logPath; + QString m_internalMetadataPath; + QString m_transcodingTempPath; + bool m_hasUpdateAvailable; + FFmpegLocation m_encoderLocation; + Architecture m_systemArchitecture; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_SYSTEMINFO_H diff --git a/core/include/JellyfinQt/DTO/taskcompletionstatus.h b/core/include/JellyfinQt/DTO/taskcompletionstatus.h new file mode 100644 index 0000000..7782bdd --- /dev/null +++ b/core/include/JellyfinQt/DTO/taskcompletionstatus.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TASKCOMPLETIONSTATUS_H +#define JELLYFIN_DTO_TASKCOMPLETIONSTATUS_H + +#include + +namespace Jellyfin { +namespace DTO { + +class TaskCompletionStatusClass { + Q_GADGET +public: + enum Value { + Completed, + Failed, + Cancelled, + Aborted, + }; + Q_ENUM(Value) +private: + explicit TaskCompletionStatusClass(); +}; +typedef TaskCompletionStatusClass::Value TaskCompletionStatus; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TASKCOMPLETIONSTATUS_H diff --git a/core/include/JellyfinQt/DTO/taskinfo.h b/core/include/JellyfinQt/DTO/taskinfo.h new file mode 100644 index 0000000..5dd4b17 --- /dev/null +++ b/core/include/JellyfinQt/DTO/taskinfo.h @@ -0,0 +1,147 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TASKINFO_H +#define JELLYFIN_DTO_TASKINFO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/taskstate.h" + +namespace Jellyfin { +namespace DTO { + +class TaskResult; +class TaskTriggerInfo; + +class TaskInfo : public QObject { + Q_OBJECT +public: + explicit TaskInfo(QObject *parent = nullptr); + static TaskInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(TaskState state READ state WRITE setState NOTIFY stateChanged) + /** + * @brief Gets or sets the progress. + */ + Q_PROPERTY(double currentProgressPercentage READ currentProgressPercentage WRITE setCurrentProgressPercentage NOTIFY currentProgressPercentageChanged) + /** + * @brief Gets or sets the id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(TaskResult * lastExecutionResult READ lastExecutionResult WRITE setLastExecutionResult NOTIFY lastExecutionResultChanged) + /** + * @brief Gets or sets the triggers. + */ + Q_PROPERTY(QList triggers READ triggers WRITE setTriggers NOTIFY triggersChanged) + /** + * @brief Gets or sets the description. + */ + Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY descriptionChanged) + /** + * @brief Gets or sets the category. + */ + Q_PROPERTY(QString category READ category WRITE setCategory NOTIFY categoryChanged) + /** + * @brief Gets or sets a value indicating whether this instance is hidden. + */ + Q_PROPERTY(bool isHidden READ isHidden WRITE setIsHidden NOTIFY isHiddenChanged) + /** + * @brief Gets or sets the key. + */ + Q_PROPERTY(QString key READ key WRITE setKey NOTIFY keyChanged) + + QString name() const; + void setName(QString newName); + + TaskState state() const; + void setState(TaskState newState); + + double currentProgressPercentage() const; + void setCurrentProgressPercentage(double newCurrentProgressPercentage); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + TaskResult * lastExecutionResult() const; + void setLastExecutionResult(TaskResult * newLastExecutionResult); + + QList triggers() const; + void setTriggers(QList newTriggers); + + QString description() const; + void setDescription(QString newDescription); + + QString category() const; + void setCategory(QString newCategory); + + bool isHidden() const; + void setIsHidden(bool newIsHidden); + + QString key() const; + void setKey(QString newKey); + +signals: + void nameChanged(QString newName); + void stateChanged(TaskState newState); + void currentProgressPercentageChanged(double newCurrentProgressPercentage); + void jellyfinIdChanged(QString newJellyfinId); + void lastExecutionResultChanged(TaskResult * newLastExecutionResult); + void triggersChanged(QList newTriggers); + void descriptionChanged(QString newDescription); + void categoryChanged(QString newCategory); + void isHiddenChanged(bool newIsHidden); + void keyChanged(QString newKey); +protected: + QString m_name; + TaskState m_state; + double m_currentProgressPercentage; + QString m_jellyfinId; + TaskResult * m_lastExecutionResult = nullptr; + QList m_triggers; + QString m_description; + QString m_category; + bool m_isHidden; + QString m_key; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TASKINFO_H diff --git a/core/include/JellyfinQt/DTO/taskresult.h b/core/include/JellyfinQt/DTO/taskresult.h new file mode 100644 index 0000000..be56e89 --- /dev/null +++ b/core/include/JellyfinQt/DTO/taskresult.h @@ -0,0 +1,128 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TASKRESULT_H +#define JELLYFIN_DTO_TASKRESULT_H + +#include +#include +#include +#include + +#include "JellyfinQt/DTO/taskcompletionstatus.h" + +namespace Jellyfin { +namespace DTO { + +class TaskResult : public QObject { + Q_OBJECT +public: + explicit TaskResult(QObject *parent = nullptr); + static TaskResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the start time UTC. + */ + Q_PROPERTY(QDateTime startTimeUtc READ startTimeUtc WRITE setStartTimeUtc NOTIFY startTimeUtcChanged) + /** + * @brief Gets or sets the end time UTC. + */ + Q_PROPERTY(QDateTime endTimeUtc READ endTimeUtc WRITE setEndTimeUtc NOTIFY endTimeUtcChanged) + Q_PROPERTY(TaskCompletionStatus status READ status WRITE setStatus NOTIFY statusChanged) + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the key. + */ + Q_PROPERTY(QString key READ key WRITE setKey NOTIFY keyChanged) + /** + * @brief Gets or sets the id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the error message. + */ + Q_PROPERTY(QString errorMessage READ errorMessage WRITE setErrorMessage NOTIFY errorMessageChanged) + /** + * @brief Gets or sets the long error message. + */ + Q_PROPERTY(QString longErrorMessage READ longErrorMessage WRITE setLongErrorMessage NOTIFY longErrorMessageChanged) + + QDateTime startTimeUtc() const; + void setStartTimeUtc(QDateTime newStartTimeUtc); + + QDateTime endTimeUtc() const; + void setEndTimeUtc(QDateTime newEndTimeUtc); + + TaskCompletionStatus status() const; + void setStatus(TaskCompletionStatus newStatus); + + QString name() const; + void setName(QString newName); + + QString key() const; + void setKey(QString newKey); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString errorMessage() const; + void setErrorMessage(QString newErrorMessage); + + QString longErrorMessage() const; + void setLongErrorMessage(QString newLongErrorMessage); + +signals: + void startTimeUtcChanged(QDateTime newStartTimeUtc); + void endTimeUtcChanged(QDateTime newEndTimeUtc); + void statusChanged(TaskCompletionStatus newStatus); + void nameChanged(QString newName); + void keyChanged(QString newKey); + void jellyfinIdChanged(QString newJellyfinId); + void errorMessageChanged(QString newErrorMessage); + void longErrorMessageChanged(QString newLongErrorMessage); +protected: + QDateTime m_startTimeUtc; + QDateTime m_endTimeUtc; + TaskCompletionStatus m_status; + QString m_name; + QString m_key; + QString m_jellyfinId; + QString m_errorMessage; + QString m_longErrorMessage; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TASKRESULT_H diff --git a/core/include/JellyfinQt/DTO/taskstate.h b/core/include/JellyfinQt/DTO/taskstate.h new file mode 100644 index 0000000..4317861 --- /dev/null +++ b/core/include/JellyfinQt/DTO/taskstate.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TASKSTATE_H +#define JELLYFIN_DTO_TASKSTATE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class TaskStateClass { + Q_GADGET +public: + enum Value { + Idle, + Cancelling, + Running, + }; + Q_ENUM(Value) +private: + explicit TaskStateClass(); +}; +typedef TaskStateClass::Value TaskState; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TASKSTATE_H diff --git a/core/include/JellyfinQt/DTO/tasktriggerinfo.h b/core/include/JellyfinQt/DTO/tasktriggerinfo.h new file mode 100644 index 0000000..3cb7fd0 --- /dev/null +++ b/core/include/JellyfinQt/DTO/tasktriggerinfo.h @@ -0,0 +1,100 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TASKTRIGGERINFO_H +#define JELLYFIN_DTO_TASKTRIGGERINFO_H + +#include +#include +#include + +#include "JellyfinQt/DTO/dayofweek.h" + +namespace Jellyfin { +namespace DTO { + +class TaskTriggerInfo : public QObject { + Q_OBJECT +public: + explicit TaskTriggerInfo(QObject *parent = nullptr); + static TaskTriggerInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the type. + */ + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets or sets the time of day. + */ + Q_PROPERTY(qint64 timeOfDayTicks READ timeOfDayTicks WRITE setTimeOfDayTicks NOTIFY timeOfDayTicksChanged) + /** + * @brief Gets or sets the interval. + */ + Q_PROPERTY(qint64 intervalTicks READ intervalTicks WRITE setIntervalTicks NOTIFY intervalTicksChanged) + Q_PROPERTY(DayOfWeek dayOfWeek READ dayOfWeek WRITE setDayOfWeek NOTIFY dayOfWeekChanged) + /** + * @brief Gets or sets the maximum runtime ticks. + */ + Q_PROPERTY(qint64 maxRuntimeTicks READ maxRuntimeTicks WRITE setMaxRuntimeTicks NOTIFY maxRuntimeTicksChanged) + + QString type() const; + void setType(QString newType); + + qint64 timeOfDayTicks() const; + void setTimeOfDayTicks(qint64 newTimeOfDayTicks); + + qint64 intervalTicks() const; + void setIntervalTicks(qint64 newIntervalTicks); + + DayOfWeek dayOfWeek() const; + void setDayOfWeek(DayOfWeek newDayOfWeek); + + qint64 maxRuntimeTicks() const; + void setMaxRuntimeTicks(qint64 newMaxRuntimeTicks); + +signals: + void typeChanged(QString newType); + void timeOfDayTicksChanged(qint64 newTimeOfDayTicks); + void intervalTicksChanged(qint64 newIntervalTicks); + void dayOfWeekChanged(DayOfWeek newDayOfWeek); + void maxRuntimeTicksChanged(qint64 newMaxRuntimeTicks); +protected: + QString m_type; + qint64 m_timeOfDayTicks; + qint64 m_intervalTicks; + DayOfWeek m_dayOfWeek; + qint64 m_maxRuntimeTicks; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TASKTRIGGERINFO_H diff --git a/core/include/JellyfinQt/DTO/thememediaresult.h b/core/include/JellyfinQt/DTO/thememediaresult.h new file mode 100644 index 0000000..d37398d --- /dev/null +++ b/core/include/JellyfinQt/DTO/thememediaresult.h @@ -0,0 +1,96 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_THEMEMEDIARESULT_H +#define JELLYFIN_DTO_THEMEMEDIARESULT_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class BaseItemDto; + +class ThemeMediaResult : public QObject { + Q_OBJECT +public: + explicit ThemeMediaResult(QObject *parent = nullptr); + static ThemeMediaResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the items. + */ + Q_PROPERTY(QList items READ items WRITE setItems NOTIFY itemsChanged) + /** + * @brief The total number of records available. + */ + Q_PROPERTY(qint32 totalRecordCount READ totalRecordCount WRITE setTotalRecordCount NOTIFY totalRecordCountChanged) + /** + * @brief The index of the first record in Items. + */ + Q_PROPERTY(qint32 startIndex READ startIndex WRITE setStartIndex NOTIFY startIndexChanged) + /** + * @brief Gets or sets the owner id. + */ + Q_PROPERTY(QString ownerId READ ownerId WRITE setOwnerId NOTIFY ownerIdChanged) + + QList items() const; + void setItems(QList newItems); + + qint32 totalRecordCount() const; + void setTotalRecordCount(qint32 newTotalRecordCount); + + qint32 startIndex() const; + void setStartIndex(qint32 newStartIndex); + + QString ownerId() const; + void setOwnerId(QString newOwnerId); + +signals: + void itemsChanged(QList newItems); + void totalRecordCountChanged(qint32 newTotalRecordCount); + void startIndexChanged(qint32 newStartIndex); + void ownerIdChanged(QString newOwnerId); +protected: + QList m_items; + qint32 m_totalRecordCount; + qint32 m_startIndex; + QString m_ownerId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_THEMEMEDIARESULT_H diff --git a/core/include/JellyfinQt/DTO/timereventinfo.h b/core/include/JellyfinQt/DTO/timereventinfo.h new file mode 100644 index 0000000..d1153ba --- /dev/null +++ b/core/include/JellyfinQt/DTO/timereventinfo.h @@ -0,0 +1,68 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TIMEREVENTINFO_H +#define JELLYFIN_DTO_TIMEREVENTINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class TimerEventInfo : public QObject { + Q_OBJECT +public: + explicit TimerEventInfo(QObject *parent = nullptr); + static TimerEventInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(QString programId READ programId WRITE setProgramId NOTIFY programIdChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString programId() const; + void setProgramId(QString newProgramId); + +signals: + void jellyfinIdChanged(QString newJellyfinId); + void programIdChanged(QString newProgramId); +protected: + QString m_jellyfinId; + QString m_programId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TIMEREVENTINFO_H diff --git a/core/include/JellyfinQt/DTO/timerinfodto.h b/core/include/JellyfinQt/DTO/timerinfodto.h new file mode 100644 index 0000000..7185982 --- /dev/null +++ b/core/include/JellyfinQt/DTO/timerinfodto.h @@ -0,0 +1,301 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TIMERINFODTO_H +#define JELLYFIN_DTO_TIMERINFODTO_H + +#include +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/keepuntil.h" +#include "JellyfinQt/DTO/recordingstatus.h" + +namespace Jellyfin { +namespace DTO { + +class BaseItemDto; + +class TimerInfoDto : public QObject { + Q_OBJECT +public: + explicit TimerInfoDto(QObject *parent = nullptr); + static TimerInfoDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Id of the recording. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + /** + * @brief Gets or sets the server identifier. + */ + Q_PROPERTY(QString serverId READ serverId WRITE setServerId NOTIFY serverIdChanged) + /** + * @brief Gets or sets the external identifier. + */ + Q_PROPERTY(QString externalId READ externalId WRITE setExternalId NOTIFY externalIdChanged) + /** + * @brief ChannelId of the recording. + */ + Q_PROPERTY(QString channelId READ channelId WRITE setChannelId NOTIFY channelIdChanged) + /** + * @brief Gets or sets the external channel identifier. + */ + Q_PROPERTY(QString externalChannelId READ externalChannelId WRITE setExternalChannelId NOTIFY externalChannelIdChanged) + /** + * @brief ChannelName of the recording. + */ + Q_PROPERTY(QString channelName READ channelName WRITE setChannelName NOTIFY channelNameChanged) + Q_PROPERTY(QString channelPrimaryImageTag READ channelPrimaryImageTag WRITE setChannelPrimaryImageTag NOTIFY channelPrimaryImageTagChanged) + /** + * @brief Gets or sets the program identifier. + */ + Q_PROPERTY(QString programId READ programId WRITE setProgramId NOTIFY programIdChanged) + /** + * @brief Gets or sets the external program identifier. + */ + Q_PROPERTY(QString externalProgramId READ externalProgramId WRITE setExternalProgramId NOTIFY externalProgramIdChanged) + /** + * @brief Name of the recording. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Description of the recording. + */ + Q_PROPERTY(QString overview READ overview WRITE setOverview NOTIFY overviewChanged) + /** + * @brief The start date of the recording, in UTC. + */ + Q_PROPERTY(QDateTime startDate READ startDate WRITE setStartDate NOTIFY startDateChanged) + /** + * @brief The end date of the recording, in UTC. + */ + Q_PROPERTY(QDateTime endDate READ endDate WRITE setEndDate NOTIFY endDateChanged) + /** + * @brief Gets or sets the name of the service. + */ + Q_PROPERTY(QString serviceName READ serviceName WRITE setServiceName NOTIFY serviceNameChanged) + /** + * @brief Gets or sets the priority. + */ + Q_PROPERTY(qint32 priority READ priority WRITE setPriority NOTIFY priorityChanged) + /** + * @brief Gets or sets the pre padding seconds. + */ + Q_PROPERTY(qint32 prePaddingSeconds READ prePaddingSeconds WRITE setPrePaddingSeconds NOTIFY prePaddingSecondsChanged) + /** + * @brief Gets or sets the post padding seconds. + */ + Q_PROPERTY(qint32 postPaddingSeconds READ postPaddingSeconds WRITE setPostPaddingSeconds NOTIFY postPaddingSecondsChanged) + /** + * @brief Gets or sets a value indicating whether this instance is pre padding required. + */ + Q_PROPERTY(bool isPrePaddingRequired READ isPrePaddingRequired WRITE setIsPrePaddingRequired NOTIFY isPrePaddingRequiredChanged) + /** + * @brief If the item does not have any backdrops, this will hold the Id of the Parent that has one. + */ + Q_PROPERTY(QString parentBackdropItemId READ parentBackdropItemId WRITE setParentBackdropItemId NOTIFY parentBackdropItemIdChanged) + /** + * @brief Gets or sets the parent backdrop image tags. + */ + Q_PROPERTY(QStringList parentBackdropImageTags READ parentBackdropImageTags WRITE setParentBackdropImageTags NOTIFY parentBackdropImageTagsChanged) + /** + * @brief Gets or sets a value indicating whether this instance is post padding required. + */ + Q_PROPERTY(bool isPostPaddingRequired READ isPostPaddingRequired WRITE setIsPostPaddingRequired NOTIFY isPostPaddingRequiredChanged) + Q_PROPERTY(KeepUntil keepUntil READ keepUntil WRITE setKeepUntil NOTIFY keepUntilChanged) + Q_PROPERTY(RecordingStatus status READ status WRITE setStatus NOTIFY statusChanged) + /** + * @brief Gets or sets the series timer identifier. + */ + Q_PROPERTY(QString seriesTimerId READ seriesTimerId WRITE setSeriesTimerId NOTIFY seriesTimerIdChanged) + /** + * @brief Gets or sets the external series timer identifier. + */ + Q_PROPERTY(QString externalSeriesTimerId READ externalSeriesTimerId WRITE setExternalSeriesTimerId NOTIFY externalSeriesTimerIdChanged) + /** + * @brief Gets or sets the run time ticks. + */ + Q_PROPERTY(qint64 runTimeTicks READ runTimeTicks WRITE setRunTimeTicks NOTIFY runTimeTicksChanged) + Q_PROPERTY(BaseItemDto * programInfo READ programInfo WRITE setProgramInfo NOTIFY programInfoChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString type() const; + void setType(QString newType); + + QString serverId() const; + void setServerId(QString newServerId); + + QString externalId() const; + void setExternalId(QString newExternalId); + + QString channelId() const; + void setChannelId(QString newChannelId); + + QString externalChannelId() const; + void setExternalChannelId(QString newExternalChannelId); + + QString channelName() const; + void setChannelName(QString newChannelName); + + QString channelPrimaryImageTag() const; + void setChannelPrimaryImageTag(QString newChannelPrimaryImageTag); + + QString programId() const; + void setProgramId(QString newProgramId); + + QString externalProgramId() const; + void setExternalProgramId(QString newExternalProgramId); + + QString name() const; + void setName(QString newName); + + QString overview() const; + void setOverview(QString newOverview); + + QDateTime startDate() const; + void setStartDate(QDateTime newStartDate); + + QDateTime endDate() const; + void setEndDate(QDateTime newEndDate); + + QString serviceName() const; + void setServiceName(QString newServiceName); + + qint32 priority() const; + void setPriority(qint32 newPriority); + + qint32 prePaddingSeconds() const; + void setPrePaddingSeconds(qint32 newPrePaddingSeconds); + + qint32 postPaddingSeconds() const; + void setPostPaddingSeconds(qint32 newPostPaddingSeconds); + + bool isPrePaddingRequired() const; + void setIsPrePaddingRequired(bool newIsPrePaddingRequired); + + QString parentBackdropItemId() const; + void setParentBackdropItemId(QString newParentBackdropItemId); + + QStringList parentBackdropImageTags() const; + void setParentBackdropImageTags(QStringList newParentBackdropImageTags); + + bool isPostPaddingRequired() const; + void setIsPostPaddingRequired(bool newIsPostPaddingRequired); + + KeepUntil keepUntil() const; + void setKeepUntil(KeepUntil newKeepUntil); + + RecordingStatus status() const; + void setStatus(RecordingStatus newStatus); + + QString seriesTimerId() const; + void setSeriesTimerId(QString newSeriesTimerId); + + QString externalSeriesTimerId() const; + void setExternalSeriesTimerId(QString newExternalSeriesTimerId); + + qint64 runTimeTicks() const; + void setRunTimeTicks(qint64 newRunTimeTicks); + + BaseItemDto * programInfo() const; + void setProgramInfo(BaseItemDto * newProgramInfo); + +signals: + void jellyfinIdChanged(QString newJellyfinId); + void typeChanged(QString newType); + void serverIdChanged(QString newServerId); + void externalIdChanged(QString newExternalId); + void channelIdChanged(QString newChannelId); + void externalChannelIdChanged(QString newExternalChannelId); + void channelNameChanged(QString newChannelName); + void channelPrimaryImageTagChanged(QString newChannelPrimaryImageTag); + void programIdChanged(QString newProgramId); + void externalProgramIdChanged(QString newExternalProgramId); + void nameChanged(QString newName); + void overviewChanged(QString newOverview); + void startDateChanged(QDateTime newStartDate); + void endDateChanged(QDateTime newEndDate); + void serviceNameChanged(QString newServiceName); + void priorityChanged(qint32 newPriority); + void prePaddingSecondsChanged(qint32 newPrePaddingSeconds); + void postPaddingSecondsChanged(qint32 newPostPaddingSeconds); + void isPrePaddingRequiredChanged(bool newIsPrePaddingRequired); + void parentBackdropItemIdChanged(QString newParentBackdropItemId); + void parentBackdropImageTagsChanged(QStringList newParentBackdropImageTags); + void isPostPaddingRequiredChanged(bool newIsPostPaddingRequired); + void keepUntilChanged(KeepUntil newKeepUntil); + void statusChanged(RecordingStatus newStatus); + void seriesTimerIdChanged(QString newSeriesTimerId); + void externalSeriesTimerIdChanged(QString newExternalSeriesTimerId); + void runTimeTicksChanged(qint64 newRunTimeTicks); + void programInfoChanged(BaseItemDto * newProgramInfo); +protected: + QString m_jellyfinId; + QString m_type; + QString m_serverId; + QString m_externalId; + QString m_channelId; + QString m_externalChannelId; + QString m_channelName; + QString m_channelPrimaryImageTag; + QString m_programId; + QString m_externalProgramId; + QString m_name; + QString m_overview; + QDateTime m_startDate; + QDateTime m_endDate; + QString m_serviceName; + qint32 m_priority; + qint32 m_prePaddingSeconds; + qint32 m_postPaddingSeconds; + bool m_isPrePaddingRequired; + QString m_parentBackdropItemId; + QStringList m_parentBackdropImageTags; + bool m_isPostPaddingRequired; + KeepUntil m_keepUntil; + RecordingStatus m_status; + QString m_seriesTimerId; + QString m_externalSeriesTimerId; + qint64 m_runTimeTicks; + BaseItemDto * m_programInfo = nullptr; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TIMERINFODTO_H diff --git a/core/include/JellyfinQt/DTO/timerinfodtoqueryresult.h b/core/include/JellyfinQt/DTO/timerinfodtoqueryresult.h new file mode 100644 index 0000000..000fbb7 --- /dev/null +++ b/core/include/JellyfinQt/DTO/timerinfodtoqueryresult.h @@ -0,0 +1,86 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TIMERINFODTOQUERYRESULT_H +#define JELLYFIN_DTO_TIMERINFODTOQUERYRESULT_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class TimerInfoDto; + +class TimerInfoDtoQueryResult : public QObject { + Q_OBJECT +public: + explicit TimerInfoDtoQueryResult(QObject *parent = nullptr); + static TimerInfoDtoQueryResult *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the items. + */ + Q_PROPERTY(QList items READ items WRITE setItems NOTIFY itemsChanged) + /** + * @brief The total number of records available. + */ + Q_PROPERTY(qint32 totalRecordCount READ totalRecordCount WRITE setTotalRecordCount NOTIFY totalRecordCountChanged) + /** + * @brief The index of the first record in Items. + */ + Q_PROPERTY(qint32 startIndex READ startIndex WRITE setStartIndex NOTIFY startIndexChanged) + + QList items() const; + void setItems(QList newItems); + + qint32 totalRecordCount() const; + void setTotalRecordCount(qint32 newTotalRecordCount); + + qint32 startIndex() const; + void setStartIndex(qint32 newStartIndex); + +signals: + void itemsChanged(QList newItems); + void totalRecordCountChanged(qint32 newTotalRecordCount); + void startIndexChanged(qint32 newStartIndex); +protected: + QList m_items; + qint32 m_totalRecordCount; + qint32 m_startIndex; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TIMERINFODTOQUERYRESULT_H diff --git a/core/include/JellyfinQt/DTO/trailerinfo.h b/core/include/JellyfinQt/DTO/trailerinfo.h new file mode 100644 index 0000000..d6a417d --- /dev/null +++ b/core/include/JellyfinQt/DTO/trailerinfo.h @@ -0,0 +1,135 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TRAILERINFO_H +#define JELLYFIN_DTO_TRAILERINFO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class TrailerInfo : public QObject { + Q_OBJECT +public: + explicit TrailerInfo(QObject *parent = nullptr); + static TrailerInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets the metadata language. + */ + Q_PROPERTY(QString metadataLanguage READ metadataLanguage WRITE setMetadataLanguage NOTIFY metadataLanguageChanged) + /** + * @brief Gets or sets the metadata country code. + */ + Q_PROPERTY(QString metadataCountryCode READ metadataCountryCode WRITE setMetadataCountryCode NOTIFY metadataCountryCodeChanged) + /** + * @brief Gets or sets the provider ids. + */ + Q_PROPERTY(QJsonObject providerIds READ providerIds WRITE setProviderIds NOTIFY providerIdsChanged) + /** + * @brief Gets or sets the year. + */ + Q_PROPERTY(qint32 year READ year WRITE setYear NOTIFY yearChanged) + Q_PROPERTY(qint32 indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) + Q_PROPERTY(qint32 parentIndexNumber READ parentIndexNumber WRITE setParentIndexNumber NOTIFY parentIndexNumberChanged) + Q_PROPERTY(QDateTime premiereDate READ premiereDate WRITE setPremiereDate NOTIFY premiereDateChanged) + Q_PROPERTY(bool isAutomated READ isAutomated WRITE setIsAutomated NOTIFY isAutomatedChanged) + + QString name() const; + void setName(QString newName); + + QString path() const; + void setPath(QString newPath); + + QString metadataLanguage() const; + void setMetadataLanguage(QString newMetadataLanguage); + + QString metadataCountryCode() const; + void setMetadataCountryCode(QString newMetadataCountryCode); + + QJsonObject providerIds() const; + void setProviderIds(QJsonObject newProviderIds); + + qint32 year() const; + void setYear(qint32 newYear); + + qint32 indexNumber() const; + void setIndexNumber(qint32 newIndexNumber); + + qint32 parentIndexNumber() const; + void setParentIndexNumber(qint32 newParentIndexNumber); + + QDateTime premiereDate() const; + void setPremiereDate(QDateTime newPremiereDate); + + bool isAutomated() const; + void setIsAutomated(bool newIsAutomated); + +signals: + void nameChanged(QString newName); + void pathChanged(QString newPath); + void metadataLanguageChanged(QString newMetadataLanguage); + void metadataCountryCodeChanged(QString newMetadataCountryCode); + void providerIdsChanged(QJsonObject newProviderIds); + void yearChanged(qint32 newYear); + void indexNumberChanged(qint32 newIndexNumber); + void parentIndexNumberChanged(qint32 newParentIndexNumber); + void premiereDateChanged(QDateTime newPremiereDate); + void isAutomatedChanged(bool newIsAutomated); +protected: + QString m_name; + QString m_path; + QString m_metadataLanguage; + QString m_metadataCountryCode; + QJsonObject m_providerIds; + qint32 m_year; + qint32 m_indexNumber; + qint32 m_parentIndexNumber; + QDateTime m_premiereDate; + bool m_isAutomated; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TRAILERINFO_H diff --git a/core/include/JellyfinQt/DTO/trailerinforemotesearchquery.h b/core/include/JellyfinQt/DTO/trailerinforemotesearchquery.h new file mode 100644 index 0000000..d82d279 --- /dev/null +++ b/core/include/JellyfinQt/DTO/trailerinforemotesearchquery.h @@ -0,0 +1,88 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TRAILERINFOREMOTESEARCHQUERY_H +#define JELLYFIN_DTO_TRAILERINFOREMOTESEARCHQUERY_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class TrailerInfo; + +class TrailerInfoRemoteSearchQuery : public QObject { + Q_OBJECT +public: + explicit TrailerInfoRemoteSearchQuery(QObject *parent = nullptr); + static TrailerInfoRemoteSearchQuery *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(TrailerInfo * searchInfo READ searchInfo WRITE setSearchInfo NOTIFY searchInfoChanged) + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Will only search within the given provider when set. + */ + Q_PROPERTY(QString searchProviderName READ searchProviderName WRITE setSearchProviderName NOTIFY searchProviderNameChanged) + /** + * @brief Gets or sets a value indicating whether disabled providers should be included. + */ + Q_PROPERTY(bool includeDisabledProviders READ includeDisabledProviders WRITE setIncludeDisabledProviders NOTIFY includeDisabledProvidersChanged) + + TrailerInfo * searchInfo() const; + void setSearchInfo(TrailerInfo * newSearchInfo); + + QString itemId() const; + void setItemId(QString newItemId); + + QString searchProviderName() const; + void setSearchProviderName(QString newSearchProviderName); + + bool includeDisabledProviders() const; + void setIncludeDisabledProviders(bool newIncludeDisabledProviders); + +signals: + void searchInfoChanged(TrailerInfo * newSearchInfo); + void itemIdChanged(QString newItemId); + void searchProviderNameChanged(QString newSearchProviderName); + void includeDisabledProvidersChanged(bool newIncludeDisabledProviders); +protected: + TrailerInfo * m_searchInfo = nullptr; + QString m_itemId; + QString m_searchProviderName; + bool m_includeDisabledProviders; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TRAILERINFOREMOTESEARCHQUERY_H diff --git a/core/include/JellyfinQt/DTO/transcodereason.h b/core/include/JellyfinQt/DTO/transcodereason.h new file mode 100644 index 0000000..10abd31 --- /dev/null +++ b/core/include/JellyfinQt/DTO/transcodereason.h @@ -0,0 +1,75 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TRANSCODEREASON_H +#define JELLYFIN_DTO_TRANSCODEREASON_H + +#include + +namespace Jellyfin { +namespace DTO { + +class TranscodeReasonClass { + Q_GADGET +public: + enum Value { + ContainerNotSupported, + VideoCodecNotSupported, + AudioCodecNotSupported, + ContainerBitrateExceedsLimit, + AudioBitrateNotSupported, + AudioChannelsNotSupported, + VideoResolutionNotSupported, + UnknownVideoStreamInfo, + UnknownAudioStreamInfo, + AudioProfileNotSupported, + AudioSampleRateNotSupported, + AnamorphicVideoNotSupported, + InterlacedVideoNotSupported, + SecondaryAudioNotSupported, + RefFramesNotSupported, + VideoBitDepthNotSupported, + VideoBitrateNotSupported, + VideoFramerateNotSupported, + VideoLevelNotSupported, + VideoProfileNotSupported, + AudioBitDepthNotSupported, + SubtitleCodecNotSupported, + DirectPlayError, + }; + Q_ENUM(Value) +private: + explicit TranscodeReasonClass(); +}; +typedef TranscodeReasonClass::Value TranscodeReason; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TRANSCODEREASON_H diff --git a/core/include/JellyfinQt/DTO/transcodeseekinfo.h b/core/include/JellyfinQt/DTO/transcodeseekinfo.h new file mode 100644 index 0000000..4a086f1 --- /dev/null +++ b/core/include/JellyfinQt/DTO/transcodeseekinfo.h @@ -0,0 +1,54 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TRANSCODESEEKINFO_H +#define JELLYFIN_DTO_TRANSCODESEEKINFO_H + +#include + +namespace Jellyfin { +namespace DTO { + +class TranscodeSeekInfoClass { + Q_GADGET +public: + enum Value { + Auto, + Bytes, + }; + Q_ENUM(Value) +private: + explicit TranscodeSeekInfoClass(); +}; +typedef TranscodeSeekInfoClass::Value TranscodeSeekInfo; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TRANSCODESEEKINFO_H diff --git a/core/include/JellyfinQt/DTO/transcodinginfo.h b/core/include/JellyfinQt/DTO/transcodinginfo.h new file mode 100644 index 0000000..b00dfbe --- /dev/null +++ b/core/include/JellyfinQt/DTO/transcodinginfo.h @@ -0,0 +1,132 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TRANSCODINGINFO_H +#define JELLYFIN_DTO_TRANSCODINGINFO_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/transcodereason.h" + +namespace Jellyfin { +namespace DTO { + +class TranscodingInfo : public QObject { + Q_OBJECT +public: + explicit TranscodingInfo(QObject *parent = nullptr); + static TranscodingInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString audioCodec READ audioCodec WRITE setAudioCodec NOTIFY audioCodecChanged) + Q_PROPERTY(QString videoCodec READ videoCodec WRITE setVideoCodec NOTIFY videoCodecChanged) + Q_PROPERTY(QString container READ container WRITE setContainer NOTIFY containerChanged) + Q_PROPERTY(bool isVideoDirect READ isVideoDirect WRITE setIsVideoDirect NOTIFY isVideoDirectChanged) + Q_PROPERTY(bool isAudioDirect READ isAudioDirect WRITE setIsAudioDirect NOTIFY isAudioDirectChanged) + Q_PROPERTY(qint32 bitrate READ bitrate WRITE setBitrate NOTIFY bitrateChanged) + Q_PROPERTY(float framerate READ framerate WRITE setFramerate NOTIFY framerateChanged) + Q_PROPERTY(double completionPercentage READ completionPercentage WRITE setCompletionPercentage NOTIFY completionPercentageChanged) + Q_PROPERTY(qint32 width READ width WRITE setWidth NOTIFY widthChanged) + Q_PROPERTY(qint32 height READ height WRITE setHeight NOTIFY heightChanged) + Q_PROPERTY(qint32 audioChannels READ audioChannels WRITE setAudioChannels NOTIFY audioChannelsChanged) + Q_PROPERTY(QList transcodeReasons READ transcodeReasons WRITE setTranscodeReasons NOTIFY transcodeReasonsChanged) + + QString audioCodec() const; + void setAudioCodec(QString newAudioCodec); + + QString videoCodec() const; + void setVideoCodec(QString newVideoCodec); + + QString container() const; + void setContainer(QString newContainer); + + bool isVideoDirect() const; + void setIsVideoDirect(bool newIsVideoDirect); + + bool isAudioDirect() const; + void setIsAudioDirect(bool newIsAudioDirect); + + qint32 bitrate() const; + void setBitrate(qint32 newBitrate); + + float framerate() const; + void setFramerate(float newFramerate); + + double completionPercentage() const; + void setCompletionPercentage(double newCompletionPercentage); + + qint32 width() const; + void setWidth(qint32 newWidth); + + qint32 height() const; + void setHeight(qint32 newHeight); + + qint32 audioChannels() const; + void setAudioChannels(qint32 newAudioChannels); + + QList transcodeReasons() const; + void setTranscodeReasons(QList newTranscodeReasons); + +signals: + void audioCodecChanged(QString newAudioCodec); + void videoCodecChanged(QString newVideoCodec); + void containerChanged(QString newContainer); + void isVideoDirectChanged(bool newIsVideoDirect); + void isAudioDirectChanged(bool newIsAudioDirect); + void bitrateChanged(qint32 newBitrate); + void framerateChanged(float newFramerate); + void completionPercentageChanged(double newCompletionPercentage); + void widthChanged(qint32 newWidth); + void heightChanged(qint32 newHeight); + void audioChannelsChanged(qint32 newAudioChannels); + void transcodeReasonsChanged(QList newTranscodeReasons); +protected: + QString m_audioCodec; + QString m_videoCodec; + QString m_container; + bool m_isVideoDirect; + bool m_isAudioDirect; + qint32 m_bitrate; + float m_framerate; + double m_completionPercentage; + qint32 m_width; + qint32 m_height; + qint32 m_audioChannels; + QList m_transcodeReasons; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TRANSCODINGINFO_H diff --git a/core/include/JellyfinQt/DTO/transcodingprofile.h b/core/include/JellyfinQt/DTO/transcodingprofile.h new file mode 100644 index 0000000..306c8cb --- /dev/null +++ b/core/include/JellyfinQt/DTO/transcodingprofile.h @@ -0,0 +1,150 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TRANSCODINGPROFILE_H +#define JELLYFIN_DTO_TRANSCODINGPROFILE_H + +#include +#include +#include + +#include "JellyfinQt/DTO/dlnaprofiletype.h" +#include "JellyfinQt/DTO/encodingcontext.h" +#include "JellyfinQt/DTO/transcodeseekinfo.h" + +namespace Jellyfin { +namespace DTO { + +class TranscodingProfile : public QObject { + Q_OBJECT +public: + explicit TranscodingProfile(QObject *parent = nullptr); + static TranscodingProfile *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString container READ container WRITE setContainer NOTIFY containerChanged) + Q_PROPERTY(DlnaProfileType type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QString videoCodec READ videoCodec WRITE setVideoCodec NOTIFY videoCodecChanged) + Q_PROPERTY(QString audioCodec READ audioCodec WRITE setAudioCodec NOTIFY audioCodecChanged) + Q_PROPERTY(QString protocol READ protocol WRITE setProtocol NOTIFY protocolChanged) + Q_PROPERTY(bool estimateContentLength READ estimateContentLength WRITE setEstimateContentLength NOTIFY estimateContentLengthChanged) + Q_PROPERTY(bool enableMpegtsM2TsMode READ enableMpegtsM2TsMode WRITE setEnableMpegtsM2TsMode NOTIFY enableMpegtsM2TsModeChanged) + Q_PROPERTY(TranscodeSeekInfo transcodeSeekInfo READ transcodeSeekInfo WRITE setTranscodeSeekInfo NOTIFY transcodeSeekInfoChanged) + Q_PROPERTY(bool copyTimestamps READ copyTimestamps WRITE setCopyTimestamps NOTIFY copyTimestampsChanged) + Q_PROPERTY(EncodingContext context READ context WRITE setContext NOTIFY contextChanged) + Q_PROPERTY(bool enableSubtitlesInManifest READ enableSubtitlesInManifest WRITE setEnableSubtitlesInManifest NOTIFY enableSubtitlesInManifestChanged) + Q_PROPERTY(QString maxAudioChannels READ maxAudioChannels WRITE setMaxAudioChannels NOTIFY maxAudioChannelsChanged) + Q_PROPERTY(qint32 minSegments READ minSegments WRITE setMinSegments NOTIFY minSegmentsChanged) + Q_PROPERTY(qint32 segmentLength READ segmentLength WRITE setSegmentLength NOTIFY segmentLengthChanged) + Q_PROPERTY(bool breakOnNonKeyFrames READ breakOnNonKeyFrames WRITE setBreakOnNonKeyFrames NOTIFY breakOnNonKeyFramesChanged) + + QString container() const; + void setContainer(QString newContainer); + + DlnaProfileType type() const; + void setType(DlnaProfileType newType); + + QString videoCodec() const; + void setVideoCodec(QString newVideoCodec); + + QString audioCodec() const; + void setAudioCodec(QString newAudioCodec); + + QString protocol() const; + void setProtocol(QString newProtocol); + + bool estimateContentLength() const; + void setEstimateContentLength(bool newEstimateContentLength); + + bool enableMpegtsM2TsMode() const; + void setEnableMpegtsM2TsMode(bool newEnableMpegtsM2TsMode); + + TranscodeSeekInfo transcodeSeekInfo() const; + void setTranscodeSeekInfo(TranscodeSeekInfo newTranscodeSeekInfo); + + bool copyTimestamps() const; + void setCopyTimestamps(bool newCopyTimestamps); + + EncodingContext context() const; + void setContext(EncodingContext newContext); + + bool enableSubtitlesInManifest() const; + void setEnableSubtitlesInManifest(bool newEnableSubtitlesInManifest); + + QString maxAudioChannels() const; + void setMaxAudioChannels(QString newMaxAudioChannels); + + qint32 minSegments() const; + void setMinSegments(qint32 newMinSegments); + + qint32 segmentLength() const; + void setSegmentLength(qint32 newSegmentLength); + + bool breakOnNonKeyFrames() const; + void setBreakOnNonKeyFrames(bool newBreakOnNonKeyFrames); + +signals: + void containerChanged(QString newContainer); + void typeChanged(DlnaProfileType newType); + void videoCodecChanged(QString newVideoCodec); + void audioCodecChanged(QString newAudioCodec); + void protocolChanged(QString newProtocol); + void estimateContentLengthChanged(bool newEstimateContentLength); + void enableMpegtsM2TsModeChanged(bool newEnableMpegtsM2TsMode); + void transcodeSeekInfoChanged(TranscodeSeekInfo newTranscodeSeekInfo); + void copyTimestampsChanged(bool newCopyTimestamps); + void contextChanged(EncodingContext newContext); + void enableSubtitlesInManifestChanged(bool newEnableSubtitlesInManifest); + void maxAudioChannelsChanged(QString newMaxAudioChannels); + void minSegmentsChanged(qint32 newMinSegments); + void segmentLengthChanged(qint32 newSegmentLength); + void breakOnNonKeyFramesChanged(bool newBreakOnNonKeyFrames); +protected: + QString m_container; + DlnaProfileType m_type; + QString m_videoCodec; + QString m_audioCodec; + QString m_protocol; + bool m_estimateContentLength; + bool m_enableMpegtsM2TsMode; + TranscodeSeekInfo m_transcodeSeekInfo; + bool m_copyTimestamps; + EncodingContext m_context; + bool m_enableSubtitlesInManifest; + QString m_maxAudioChannels; + qint32 m_minSegments; + qint32 m_segmentLength; + bool m_breakOnNonKeyFrames; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TRANSCODINGPROFILE_H diff --git a/core/include/JellyfinQt/DTO/transportstreamtimestamp.h b/core/include/JellyfinQt/DTO/transportstreamtimestamp.h new file mode 100644 index 0000000..f4e4da9 --- /dev/null +++ b/core/include/JellyfinQt/DTO/transportstreamtimestamp.h @@ -0,0 +1,55 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TRANSPORTSTREAMTIMESTAMP_H +#define JELLYFIN_DTO_TRANSPORTSTREAMTIMESTAMP_H + +#include + +namespace Jellyfin { +namespace DTO { + +class TransportStreamTimestampClass { + Q_GADGET +public: + enum Value { + None, + Zero, + Valid, + }; + Q_ENUM(Value) +private: + explicit TransportStreamTimestampClass(); +}; +typedef TransportStreamTimestampClass::Value TransportStreamTimestamp; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TRANSPORTSTREAMTIMESTAMP_H diff --git a/core/include/JellyfinQt/DTO/tunerchannelmapping.h b/core/include/JellyfinQt/DTO/tunerchannelmapping.h new file mode 100644 index 0000000..ba82e31 --- /dev/null +++ b/core/include/JellyfinQt/DTO/tunerchannelmapping.h @@ -0,0 +1,80 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TUNERCHANNELMAPPING_H +#define JELLYFIN_DTO_TUNERCHANNELMAPPING_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class TunerChannelMapping : public QObject { + Q_OBJECT +public: + explicit TunerChannelMapping(QObject *parent = nullptr); + static TunerChannelMapping *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString providerChannelName READ providerChannelName WRITE setProviderChannelName NOTIFY providerChannelNameChanged) + Q_PROPERTY(QString providerChannelId READ providerChannelId WRITE setProviderChannelId NOTIFY providerChannelIdChanged) + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + + QString name() const; + void setName(QString newName); + + QString providerChannelName() const; + void setProviderChannelName(QString newProviderChannelName); + + QString providerChannelId() const; + void setProviderChannelId(QString newProviderChannelId); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + +signals: + void nameChanged(QString newName); + void providerChannelNameChanged(QString newProviderChannelName); + void providerChannelIdChanged(QString newProviderChannelId); + void jellyfinIdChanged(QString newJellyfinId); +protected: + QString m_name; + QString m_providerChannelName; + QString m_providerChannelId; + QString m_jellyfinId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TUNERCHANNELMAPPING_H diff --git a/core/include/JellyfinQt/DTO/tunerhostinfo.h b/core/include/JellyfinQt/DTO/tunerhostinfo.h new file mode 100644 index 0000000..546301f --- /dev/null +++ b/core/include/JellyfinQt/DTO/tunerhostinfo.h @@ -0,0 +1,122 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TUNERHOSTINFO_H +#define JELLYFIN_DTO_TUNERHOSTINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class TunerHostInfo : public QObject { + Q_OBJECT +public: + explicit TunerHostInfo(QObject *parent = nullptr); + static TunerHostInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QString deviceId READ deviceId WRITE setDeviceId NOTIFY deviceIdChanged) + Q_PROPERTY(QString friendlyName READ friendlyName WRITE setFriendlyName NOTIFY friendlyNameChanged) + Q_PROPERTY(bool importFavoritesOnly READ importFavoritesOnly WRITE setImportFavoritesOnly NOTIFY importFavoritesOnlyChanged) + Q_PROPERTY(bool allowHWTranscoding READ allowHWTranscoding WRITE setAllowHWTranscoding NOTIFY allowHWTranscodingChanged) + Q_PROPERTY(bool enableStreamLooping READ enableStreamLooping WRITE setEnableStreamLooping NOTIFY enableStreamLoopingChanged) + Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChanged) + Q_PROPERTY(qint32 tunerCount READ tunerCount WRITE setTunerCount NOTIFY tunerCountChanged) + Q_PROPERTY(QString userAgent READ userAgent WRITE setUserAgent NOTIFY userAgentChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString url() const; + void setUrl(QString newUrl); + + QString type() const; + void setType(QString newType); + + QString deviceId() const; + void setDeviceId(QString newDeviceId); + + QString friendlyName() const; + void setFriendlyName(QString newFriendlyName); + + bool importFavoritesOnly() const; + void setImportFavoritesOnly(bool newImportFavoritesOnly); + + bool allowHWTranscoding() const; + void setAllowHWTranscoding(bool newAllowHWTranscoding); + + bool enableStreamLooping() const; + void setEnableStreamLooping(bool newEnableStreamLooping); + + QString source() const; + void setSource(QString newSource); + + qint32 tunerCount() const; + void setTunerCount(qint32 newTunerCount); + + QString userAgent() const; + void setUserAgent(QString newUserAgent); + +signals: + void jellyfinIdChanged(QString newJellyfinId); + void urlChanged(QString newUrl); + void typeChanged(QString newType); + void deviceIdChanged(QString newDeviceId); + void friendlyNameChanged(QString newFriendlyName); + void importFavoritesOnlyChanged(bool newImportFavoritesOnly); + void allowHWTranscodingChanged(bool newAllowHWTranscoding); + void enableStreamLoopingChanged(bool newEnableStreamLooping); + void sourceChanged(QString newSource); + void tunerCountChanged(qint32 newTunerCount); + void userAgentChanged(QString newUserAgent); +protected: + QString m_jellyfinId; + QString m_url; + QString m_type; + QString m_deviceId; + QString m_friendlyName; + bool m_importFavoritesOnly; + bool m_allowHWTranscoding; + bool m_enableStreamLooping; + QString m_source; + qint32 m_tunerCount; + QString m_userAgent; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TUNERHOSTINFO_H diff --git a/core/include/JellyfinQt/DTO/typeoptions.h b/core/include/JellyfinQt/DTO/typeoptions.h new file mode 100644 index 0000000..cbb3f7e --- /dev/null +++ b/core/include/JellyfinQt/DTO/typeoptions.h @@ -0,0 +1,96 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_TYPEOPTIONS_H +#define JELLYFIN_DTO_TYPEOPTIONS_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ImageOption; + +class TypeOptions : public QObject { + Q_OBJECT +public: + explicit TypeOptions(QObject *parent = nullptr); + static TypeOptions *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QStringList metadataFetchers READ metadataFetchers WRITE setMetadataFetchers NOTIFY metadataFetchersChanged) + Q_PROPERTY(QStringList metadataFetcherOrder READ metadataFetcherOrder WRITE setMetadataFetcherOrder NOTIFY metadataFetcherOrderChanged) + Q_PROPERTY(QStringList imageFetchers READ imageFetchers WRITE setImageFetchers NOTIFY imageFetchersChanged) + Q_PROPERTY(QStringList imageFetcherOrder READ imageFetcherOrder WRITE setImageFetcherOrder NOTIFY imageFetcherOrderChanged) + Q_PROPERTY(QList imageOptions READ imageOptions WRITE setImageOptions NOTIFY imageOptionsChanged) + + QString type() const; + void setType(QString newType); + + QStringList metadataFetchers() const; + void setMetadataFetchers(QStringList newMetadataFetchers); + + QStringList metadataFetcherOrder() const; + void setMetadataFetcherOrder(QStringList newMetadataFetcherOrder); + + QStringList imageFetchers() const; + void setImageFetchers(QStringList newImageFetchers); + + QStringList imageFetcherOrder() const; + void setImageFetcherOrder(QStringList newImageFetcherOrder); + + QList imageOptions() const; + void setImageOptions(QList newImageOptions); + +signals: + void typeChanged(QString newType); + void metadataFetchersChanged(QStringList newMetadataFetchers); + void metadataFetcherOrderChanged(QStringList newMetadataFetcherOrder); + void imageFetchersChanged(QStringList newImageFetchers); + void imageFetcherOrderChanged(QStringList newImageFetcherOrder); + void imageOptionsChanged(QList newImageOptions); +protected: + QString m_type; + QStringList m_metadataFetchers; + QStringList m_metadataFetcherOrder; + QStringList m_imageFetchers; + QStringList m_imageFetcherOrder; + QList m_imageOptions; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_TYPEOPTIONS_H diff --git a/core/include/JellyfinQt/DTO/unrateditem.h b/core/include/JellyfinQt/DTO/unrateditem.h new file mode 100644 index 0000000..6ff08bd --- /dev/null +++ b/core/include/JellyfinQt/DTO/unrateditem.h @@ -0,0 +1,61 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_UNRATEDITEM_H +#define JELLYFIN_DTO_UNRATEDITEM_H + +#include + +namespace Jellyfin { +namespace DTO { + +class UnratedItemClass { + Q_GADGET +public: + enum Value { + Movie, + Trailer, + Series, + Music, + Book, + LiveTvChannel, + LiveTvProgram, + ChannelContent, + Other, + }; + Q_ENUM(Value) +private: + explicit UnratedItemClass(); +}; +typedef UnratedItemClass::Value UnratedItem; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_UNRATEDITEM_H diff --git a/core/include/JellyfinQt/DTO/updatelibraryoptionsdto.h b/core/include/JellyfinQt/DTO/updatelibraryoptionsdto.h new file mode 100644 index 0000000..ca74050 --- /dev/null +++ b/core/include/JellyfinQt/DTO/updatelibraryoptionsdto.h @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_UPDATELIBRARYOPTIONSDTO_H +#define JELLYFIN_DTO_UPDATELIBRARYOPTIONSDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class LibraryOptions; + +class UpdateLibraryOptionsDto : public QObject { + Q_OBJECT +public: + explicit UpdateLibraryOptionsDto(QObject *parent = nullptr); + static UpdateLibraryOptionsDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the library item id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + Q_PROPERTY(LibraryOptions * libraryOptions READ libraryOptions WRITE setLibraryOptions NOTIFY libraryOptionsChanged) + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + LibraryOptions * libraryOptions() const; + void setLibraryOptions(LibraryOptions * newLibraryOptions); + +signals: + void jellyfinIdChanged(QString newJellyfinId); + void libraryOptionsChanged(LibraryOptions * newLibraryOptions); +protected: + QString m_jellyfinId; + LibraryOptions * m_libraryOptions = nullptr; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_UPDATELIBRARYOPTIONSDTO_H diff --git a/core/include/JellyfinQt/DTO/updateusereasypassword.h b/core/include/JellyfinQt/DTO/updateusereasypassword.h new file mode 100644 index 0000000..1648605 --- /dev/null +++ b/core/include/JellyfinQt/DTO/updateusereasypassword.h @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_UPDATEUSEREASYPASSWORD_H +#define JELLYFIN_DTO_UPDATEUSEREASYPASSWORD_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class UpdateUserEasyPassword : public QObject { + Q_OBJECT +public: + explicit UpdateUserEasyPassword(QObject *parent = nullptr); + static UpdateUserEasyPassword *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the new sha1-hashed password. + */ + Q_PROPERTY(QString newPassword READ newPassword WRITE setNewPassword NOTIFY newPasswordChanged) + /** + * @brief Gets or sets the new password. + */ + Q_PROPERTY(QString newPw READ newPw WRITE setNewPw NOTIFY newPwChanged) + /** + * @brief Gets or sets a value indicating whether to reset the password. + */ + Q_PROPERTY(bool resetPassword READ resetPassword WRITE setResetPassword NOTIFY resetPasswordChanged) + + QString newPassword() const; + void setNewPassword(QString newNewPassword); + + QString newPw() const; + void setNewPw(QString newNewPw); + + bool resetPassword() const; + void setResetPassword(bool newResetPassword); + +signals: + void newPasswordChanged(QString newNewPassword); + void newPwChanged(QString newNewPw); + void resetPasswordChanged(bool newResetPassword); +protected: + QString m_newPassword; + QString m_newPw; + bool m_resetPassword; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_UPDATEUSEREASYPASSWORD_H diff --git a/core/include/JellyfinQt/DTO/updateuserpassword.h b/core/include/JellyfinQt/DTO/updateuserpassword.h new file mode 100644 index 0000000..241c9df --- /dev/null +++ b/core/include/JellyfinQt/DTO/updateuserpassword.h @@ -0,0 +1,92 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_UPDATEUSERPASSWORD_H +#define JELLYFIN_DTO_UPDATEUSERPASSWORD_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class UpdateUserPassword : public QObject { + Q_OBJECT +public: + explicit UpdateUserPassword(QObject *parent = nullptr); + static UpdateUserPassword *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the current sha1-hashed password. + */ + Q_PROPERTY(QString currentPassword READ currentPassword WRITE setCurrentPassword NOTIFY currentPasswordChanged) + /** + * @brief Gets or sets the current plain text password. + */ + Q_PROPERTY(QString currentPw READ currentPw WRITE setCurrentPw NOTIFY currentPwChanged) + /** + * @brief Gets or sets the new plain text password. + */ + Q_PROPERTY(QString newPw READ newPw WRITE setNewPw NOTIFY newPwChanged) + /** + * @brief Gets or sets a value indicating whether to reset the password. + */ + Q_PROPERTY(bool resetPassword READ resetPassword WRITE setResetPassword NOTIFY resetPasswordChanged) + + QString currentPassword() const; + void setCurrentPassword(QString newCurrentPassword); + + QString currentPw() const; + void setCurrentPw(QString newCurrentPw); + + QString newPw() const; + void setNewPw(QString newNewPw); + + bool resetPassword() const; + void setResetPassword(bool newResetPassword); + +signals: + void currentPasswordChanged(QString newCurrentPassword); + void currentPwChanged(QString newCurrentPw); + void newPwChanged(QString newNewPw); + void resetPasswordChanged(bool newResetPassword); +protected: + QString m_currentPassword; + QString m_currentPw; + QString m_newPw; + bool m_resetPassword; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_UPDATEUSERPASSWORD_H diff --git a/core/include/JellyfinQt/DTO/uploadsubtitledto.h b/core/include/JellyfinQt/DTO/uploadsubtitledto.h new file mode 100644 index 0000000..4908653 --- /dev/null +++ b/core/include/JellyfinQt/DTO/uploadsubtitledto.h @@ -0,0 +1,92 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_UPLOADSUBTITLEDTO_H +#define JELLYFIN_DTO_UPLOADSUBTITLEDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class UploadSubtitleDto : public QObject { + Q_OBJECT +public: + explicit UploadSubtitleDto(QObject *parent = nullptr); + static UploadSubtitleDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the subtitle language. + */ + Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged) + /** + * @brief Gets or sets the subtitle format. + */ + Q_PROPERTY(QString format READ format WRITE setFormat NOTIFY formatChanged) + /** + * @brief Gets or sets a value indicating whether the subtitle is forced. + */ + Q_PROPERTY(bool isForced READ isForced WRITE setIsForced NOTIFY isForcedChanged) + /** + * @brief Gets or sets the subtitle data. + */ + Q_PROPERTY(QString data READ data WRITE setData NOTIFY dataChanged) + + QString language() const; + void setLanguage(QString newLanguage); + + QString format() const; + void setFormat(QString newFormat); + + bool isForced() const; + void setIsForced(bool newIsForced); + + QString data() const; + void setData(QString newData); + +signals: + void languageChanged(QString newLanguage); + void formatChanged(QString newFormat); + void isForcedChanged(bool newIsForced); + void dataChanged(QString newData); +protected: + QString m_language; + QString m_format; + bool m_isForced; + QString m_data; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_UPLOADSUBTITLEDTO_H diff --git a/core/include/JellyfinQt/DTO/user.h b/core/include/JellyfinQt/DTO/user.h new file mode 100644 index 0000000..dbd37eb --- /dev/null +++ b/core/include/JellyfinQt/DTO/user.h @@ -0,0 +1,43 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_USER_H +#define JELLYFIN_DTO_USER_H + +#include "JellyfinQt/DTO/userdto.h" + +namespace Jellyfin { +namespace DTO { + +using User = UserDto; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_USER_H diff --git a/core/include/JellyfinQt/DTO/userconfiguration.h b/core/include/JellyfinQt/DTO/userconfiguration.h new file mode 100644 index 0000000..92386f6 --- /dev/null +++ b/core/include/JellyfinQt/DTO/userconfiguration.h @@ -0,0 +1,159 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_USERCONFIGURATION_H +#define JELLYFIN_DTO_USERCONFIGURATION_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/subtitleplaybackmode.h" + +namespace Jellyfin { +namespace DTO { + +class UserConfiguration : public QObject { + Q_OBJECT +public: + explicit UserConfiguration(QObject *parent = nullptr); + static UserConfiguration *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the audio language preference. + */ + Q_PROPERTY(QString audioLanguagePreference READ audioLanguagePreference WRITE setAudioLanguagePreference NOTIFY audioLanguagePreferenceChanged) + /** + * @brief Gets or sets a value indicating whether [play default audio track]. + */ + Q_PROPERTY(bool playDefaultAudioTrack READ playDefaultAudioTrack WRITE setPlayDefaultAudioTrack NOTIFY playDefaultAudioTrackChanged) + /** + * @brief Gets or sets the subtitle language preference. + */ + Q_PROPERTY(QString subtitleLanguagePreference READ subtitleLanguagePreference WRITE setSubtitleLanguagePreference NOTIFY subtitleLanguagePreferenceChanged) + Q_PROPERTY(bool displayMissingEpisodes READ displayMissingEpisodes WRITE setDisplayMissingEpisodes NOTIFY displayMissingEpisodesChanged) + Q_PROPERTY(QStringList groupedFolders READ groupedFolders WRITE setGroupedFolders NOTIFY groupedFoldersChanged) + Q_PROPERTY(SubtitlePlaybackMode subtitleMode READ subtitleMode WRITE setSubtitleMode NOTIFY subtitleModeChanged) + Q_PROPERTY(bool displayCollectionsView READ displayCollectionsView WRITE setDisplayCollectionsView NOTIFY displayCollectionsViewChanged) + Q_PROPERTY(bool enableLocalPassword READ enableLocalPassword WRITE setEnableLocalPassword NOTIFY enableLocalPasswordChanged) + Q_PROPERTY(QStringList orderedViews READ orderedViews WRITE setOrderedViews NOTIFY orderedViewsChanged) + Q_PROPERTY(QStringList latestItemsExcludes READ latestItemsExcludes WRITE setLatestItemsExcludes NOTIFY latestItemsExcludesChanged) + Q_PROPERTY(QStringList myMediaExcludes READ myMediaExcludes WRITE setMyMediaExcludes NOTIFY myMediaExcludesChanged) + Q_PROPERTY(bool hidePlayedInLatest READ hidePlayedInLatest WRITE setHidePlayedInLatest NOTIFY hidePlayedInLatestChanged) + Q_PROPERTY(bool rememberAudioSelections READ rememberAudioSelections WRITE setRememberAudioSelections NOTIFY rememberAudioSelectionsChanged) + Q_PROPERTY(bool rememberSubtitleSelections READ rememberSubtitleSelections WRITE setRememberSubtitleSelections NOTIFY rememberSubtitleSelectionsChanged) + Q_PROPERTY(bool enableNextEpisodeAutoPlay READ enableNextEpisodeAutoPlay WRITE setEnableNextEpisodeAutoPlay NOTIFY enableNextEpisodeAutoPlayChanged) + + QString audioLanguagePreference() const; + void setAudioLanguagePreference(QString newAudioLanguagePreference); + + bool playDefaultAudioTrack() const; + void setPlayDefaultAudioTrack(bool newPlayDefaultAudioTrack); + + QString subtitleLanguagePreference() const; + void setSubtitleLanguagePreference(QString newSubtitleLanguagePreference); + + bool displayMissingEpisodes() const; + void setDisplayMissingEpisodes(bool newDisplayMissingEpisodes); + + QStringList groupedFolders() const; + void setGroupedFolders(QStringList newGroupedFolders); + + SubtitlePlaybackMode subtitleMode() const; + void setSubtitleMode(SubtitlePlaybackMode newSubtitleMode); + + bool displayCollectionsView() const; + void setDisplayCollectionsView(bool newDisplayCollectionsView); + + bool enableLocalPassword() const; + void setEnableLocalPassword(bool newEnableLocalPassword); + + QStringList orderedViews() const; + void setOrderedViews(QStringList newOrderedViews); + + QStringList latestItemsExcludes() const; + void setLatestItemsExcludes(QStringList newLatestItemsExcludes); + + QStringList myMediaExcludes() const; + void setMyMediaExcludes(QStringList newMyMediaExcludes); + + bool hidePlayedInLatest() const; + void setHidePlayedInLatest(bool newHidePlayedInLatest); + + bool rememberAudioSelections() const; + void setRememberAudioSelections(bool newRememberAudioSelections); + + bool rememberSubtitleSelections() const; + void setRememberSubtitleSelections(bool newRememberSubtitleSelections); + + bool enableNextEpisodeAutoPlay() const; + void setEnableNextEpisodeAutoPlay(bool newEnableNextEpisodeAutoPlay); + +signals: + void audioLanguagePreferenceChanged(QString newAudioLanguagePreference); + void playDefaultAudioTrackChanged(bool newPlayDefaultAudioTrack); + void subtitleLanguagePreferenceChanged(QString newSubtitleLanguagePreference); + void displayMissingEpisodesChanged(bool newDisplayMissingEpisodes); + void groupedFoldersChanged(QStringList newGroupedFolders); + void subtitleModeChanged(SubtitlePlaybackMode newSubtitleMode); + void displayCollectionsViewChanged(bool newDisplayCollectionsView); + void enableLocalPasswordChanged(bool newEnableLocalPassword); + void orderedViewsChanged(QStringList newOrderedViews); + void latestItemsExcludesChanged(QStringList newLatestItemsExcludes); + void myMediaExcludesChanged(QStringList newMyMediaExcludes); + void hidePlayedInLatestChanged(bool newHidePlayedInLatest); + void rememberAudioSelectionsChanged(bool newRememberAudioSelections); + void rememberSubtitleSelectionsChanged(bool newRememberSubtitleSelections); + void enableNextEpisodeAutoPlayChanged(bool newEnableNextEpisodeAutoPlay); +protected: + QString m_audioLanguagePreference; + bool m_playDefaultAudioTrack; + QString m_subtitleLanguagePreference; + bool m_displayMissingEpisodes; + QStringList m_groupedFolders; + SubtitlePlaybackMode m_subtitleMode; + bool m_displayCollectionsView; + bool m_enableLocalPassword; + QStringList m_orderedViews; + QStringList m_latestItemsExcludes; + QStringList m_myMediaExcludes; + bool m_hidePlayedInLatest; + bool m_rememberAudioSelections; + bool m_rememberSubtitleSelections; + bool m_enableNextEpisodeAutoPlay; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_USERCONFIGURATION_H diff --git a/core/include/JellyfinQt/DTO/userdata.h b/core/include/JellyfinQt/DTO/userdata.h new file mode 100644 index 0000000..b7b2027 --- /dev/null +++ b/core/include/JellyfinQt/DTO/userdata.h @@ -0,0 +1,43 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_USERDATA_H +#define JELLYFIN_DTO_USERDATA_H + +#include "JellyfinQt/DTO/useritemdatadto.h" + +namespace Jellyfin { +namespace DTO { + +using UserData = UserItemDataDto; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_USERDATA_H diff --git a/core/include/JellyfinQt/DTO/userdto.h b/core/include/JellyfinQt/DTO/userdto.h new file mode 100644 index 0000000..10a7980 --- /dev/null +++ b/core/include/JellyfinQt/DTO/userdto.h @@ -0,0 +1,181 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_USERDTO_H +#define JELLYFIN_DTO_USERDTO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class UserConfiguration; +class UserPolicy; + +class UserDto : public QObject { + Q_OBJECT +public: + explicit UserDto(QObject *parent = nullptr); + static UserDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the server identifier. + */ + Q_PROPERTY(QString serverId READ serverId WRITE setServerId NOTIFY serverIdChanged) + /** + * @brief Gets or sets the name of the server. +This is not used by the server and is for client-side usage only. + */ + Q_PROPERTY(QString serverName READ serverName WRITE setServerName NOTIFY serverNameChanged) + /** + * @brief Gets or sets the id. + */ + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + /** + * @brief Gets or sets the primary image tag. + */ + Q_PROPERTY(QString primaryImageTag READ primaryImageTag WRITE setPrimaryImageTag NOTIFY primaryImageTagChanged) + /** + * @brief Gets or sets a value indicating whether this instance has password. + */ + Q_PROPERTY(bool hasPassword READ hasPassword WRITE setHasPassword NOTIFY hasPasswordChanged) + /** + * @brief Gets or sets a value indicating whether this instance has configured password. + */ + Q_PROPERTY(bool hasConfiguredPassword READ hasConfiguredPassword WRITE setHasConfiguredPassword NOTIFY hasConfiguredPasswordChanged) + /** + * @brief Gets or sets a value indicating whether this instance has configured easy password. + */ + Q_PROPERTY(bool hasConfiguredEasyPassword READ hasConfiguredEasyPassword WRITE setHasConfiguredEasyPassword NOTIFY hasConfiguredEasyPasswordChanged) + /** + * @brief Gets or sets whether async login is enabled or not. + */ + Q_PROPERTY(bool enableAutoLogin READ enableAutoLogin WRITE setEnableAutoLogin NOTIFY enableAutoLoginChanged) + /** + * @brief Gets or sets the last login date. + */ + Q_PROPERTY(QDateTime lastLoginDate READ lastLoginDate WRITE setLastLoginDate NOTIFY lastLoginDateChanged) + /** + * @brief Gets or sets the last activity date. + */ + Q_PROPERTY(QDateTime lastActivityDate READ lastActivityDate WRITE setLastActivityDate NOTIFY lastActivityDateChanged) + Q_PROPERTY(UserConfiguration * configuration READ configuration WRITE setConfiguration NOTIFY configurationChanged) + Q_PROPERTY(UserPolicy * policy READ policy WRITE setPolicy NOTIFY policyChanged) + /** + * @brief Gets or sets the primary image aspect ratio. + */ + Q_PROPERTY(double primaryImageAspectRatio READ primaryImageAspectRatio WRITE setPrimaryImageAspectRatio NOTIFY primaryImageAspectRatioChanged) + + QString name() const; + void setName(QString newName); + + QString serverId() const; + void setServerId(QString newServerId); + + QString serverName() const; + void setServerName(QString newServerName); + + QString jellyfinId() const; + void setJellyfinId(QString newJellyfinId); + + QString primaryImageTag() const; + void setPrimaryImageTag(QString newPrimaryImageTag); + + bool hasPassword() const; + void setHasPassword(bool newHasPassword); + + bool hasConfiguredPassword() const; + void setHasConfiguredPassword(bool newHasConfiguredPassword); + + bool hasConfiguredEasyPassword() const; + void setHasConfiguredEasyPassword(bool newHasConfiguredEasyPassword); + + bool enableAutoLogin() const; + void setEnableAutoLogin(bool newEnableAutoLogin); + + QDateTime lastLoginDate() const; + void setLastLoginDate(QDateTime newLastLoginDate); + + QDateTime lastActivityDate() const; + void setLastActivityDate(QDateTime newLastActivityDate); + + UserConfiguration * configuration() const; + void setConfiguration(UserConfiguration * newConfiguration); + + UserPolicy * policy() const; + void setPolicy(UserPolicy * newPolicy); + + double primaryImageAspectRatio() const; + void setPrimaryImageAspectRatio(double newPrimaryImageAspectRatio); + +signals: + void nameChanged(QString newName); + void serverIdChanged(QString newServerId); + void serverNameChanged(QString newServerName); + void jellyfinIdChanged(QString newJellyfinId); + void primaryImageTagChanged(QString newPrimaryImageTag); + void hasPasswordChanged(bool newHasPassword); + void hasConfiguredPasswordChanged(bool newHasConfiguredPassword); + void hasConfiguredEasyPasswordChanged(bool newHasConfiguredEasyPassword); + void enableAutoLoginChanged(bool newEnableAutoLogin); + void lastLoginDateChanged(QDateTime newLastLoginDate); + void lastActivityDateChanged(QDateTime newLastActivityDate); + void configurationChanged(UserConfiguration * newConfiguration); + void policyChanged(UserPolicy * newPolicy); + void primaryImageAspectRatioChanged(double newPrimaryImageAspectRatio); +protected: + QString m_name; + QString m_serverId; + QString m_serverName; + QString m_jellyfinId; + QString m_primaryImageTag; + bool m_hasPassword; + bool m_hasConfiguredPassword; + bool m_hasConfiguredEasyPassword; + bool m_enableAutoLogin; + QDateTime m_lastLoginDate; + QDateTime m_lastActivityDate; + UserConfiguration * m_configuration = nullptr; + UserPolicy * m_policy = nullptr; + double m_primaryImageAspectRatio; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_USERDTO_H diff --git a/core/include/JellyfinQt/DTO/useritemdatadto.h b/core/include/JellyfinQt/DTO/useritemdatadto.h new file mode 100644 index 0000000..12e4a07 --- /dev/null +++ b/core/include/JellyfinQt/DTO/useritemdatadto.h @@ -0,0 +1,156 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_USERITEMDATADTO_H +#define JELLYFIN_DTO_USERITEMDATADTO_H + +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class UserItemDataDto : public QObject { + Q_OBJECT +public: + explicit UserItemDataDto(QObject *parent = nullptr); + static UserItemDataDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the rating. + */ + Q_PROPERTY(double rating READ rating WRITE setRating NOTIFY ratingChanged) + /** + * @brief Gets or sets the played percentage. + */ + Q_PROPERTY(double playedPercentage READ playedPercentage WRITE setPlayedPercentage NOTIFY playedPercentageChanged) + /** + * @brief Gets or sets the unplayed item count. + */ + Q_PROPERTY(qint32 unplayedItemCount READ unplayedItemCount WRITE setUnplayedItemCount NOTIFY unplayedItemCountChanged) + /** + * @brief Gets or sets the playback position ticks. + */ + Q_PROPERTY(qint64 playbackPositionTicks READ playbackPositionTicks WRITE setPlaybackPositionTicks NOTIFY playbackPositionTicksChanged) + /** + * @brief Gets or sets the play count. + */ + Q_PROPERTY(qint32 playCount READ playCount WRITE setPlayCount NOTIFY playCountChanged) + /** + * @brief Gets or sets a value indicating whether this instance is favorite. + */ + Q_PROPERTY(bool isFavorite READ isFavorite WRITE setIsFavorite NOTIFY isFavoriteChanged) + /** + * @brief Gets or sets a value indicating whether this MediaBrowser.Model.Dto.UserItemDataDto is likes. + */ + Q_PROPERTY(bool likes READ likes WRITE setLikes NOTIFY likesChanged) + /** + * @brief Gets or sets the last played date. + */ + Q_PROPERTY(QDateTime lastPlayedDate READ lastPlayedDate WRITE setLastPlayedDate NOTIFY lastPlayedDateChanged) + /** + * @brief Gets or sets a value indicating whether this MediaBrowser.Model.Dto.UserItemDataDto is played. + */ + Q_PROPERTY(bool played READ played WRITE setPlayed NOTIFY playedChanged) + /** + * @brief Gets or sets the key. + */ + Q_PROPERTY(QString key READ key WRITE setKey NOTIFY keyChanged) + /** + * @brief Gets or sets the item identifier. + */ + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + + double rating() const; + void setRating(double newRating); + + double playedPercentage() const; + void setPlayedPercentage(double newPlayedPercentage); + + qint32 unplayedItemCount() const; + void setUnplayedItemCount(qint32 newUnplayedItemCount); + + qint64 playbackPositionTicks() const; + void setPlaybackPositionTicks(qint64 newPlaybackPositionTicks); + + qint32 playCount() const; + void setPlayCount(qint32 newPlayCount); + + bool isFavorite() const; + void setIsFavorite(bool newIsFavorite); + + bool likes() const; + void setLikes(bool newLikes); + + QDateTime lastPlayedDate() const; + void setLastPlayedDate(QDateTime newLastPlayedDate); + + bool played() const; + void setPlayed(bool newPlayed); + + QString key() const; + void setKey(QString newKey); + + QString itemId() const; + void setItemId(QString newItemId); + +signals: + void ratingChanged(double newRating); + void playedPercentageChanged(double newPlayedPercentage); + void unplayedItemCountChanged(qint32 newUnplayedItemCount); + void playbackPositionTicksChanged(qint64 newPlaybackPositionTicks); + void playCountChanged(qint32 newPlayCount); + void isFavoriteChanged(bool newIsFavorite); + void likesChanged(bool newLikes); + void lastPlayedDateChanged(QDateTime newLastPlayedDate); + void playedChanged(bool newPlayed); + void keyChanged(QString newKey); + void itemIdChanged(QString newItemId); +protected: + double m_rating; + double m_playedPercentage; + qint32 m_unplayedItemCount; + qint64 m_playbackPositionTicks; + qint32 m_playCount; + bool m_isFavorite; + bool m_likes; + QDateTime m_lastPlayedDate; + bool m_played; + QString m_key; + QString m_itemId; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_USERITEMDATADTO_H diff --git a/core/include/JellyfinQt/DTO/userpolicy.h b/core/include/JellyfinQt/DTO/userpolicy.h new file mode 100644 index 0000000..36050fa --- /dev/null +++ b/core/include/JellyfinQt/DTO/userpolicy.h @@ -0,0 +1,312 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_USERPOLICY_H +#define JELLYFIN_DTO_USERPOLICY_H + +#include +#include +#include +#include +#include + +#include "JellyfinQt/DTO/syncplayuseraccesstype.h" +#include "JellyfinQt/DTO/unrateditem.h" + +namespace Jellyfin { +namespace DTO { + +class AccessSchedule; + +class UserPolicy : public QObject { + Q_OBJECT +public: + explicit UserPolicy(QObject *parent = nullptr); + static UserPolicy *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets a value indicating whether this instance is administrator. + */ + Q_PROPERTY(bool isAdministrator READ isAdministrator WRITE setIsAdministrator NOTIFY isAdministratorChanged) + /** + * @brief Gets or sets a value indicating whether this instance is hidden. + */ + Q_PROPERTY(bool isHidden READ isHidden WRITE setIsHidden NOTIFY isHiddenChanged) + /** + * @brief Gets or sets a value indicating whether this instance is disabled. + */ + Q_PROPERTY(bool isDisabled READ isDisabled WRITE setIsDisabled NOTIFY isDisabledChanged) + /** + * @brief Gets or sets the max parental rating. + */ + Q_PROPERTY(qint32 maxParentalRating READ maxParentalRating WRITE setMaxParentalRating NOTIFY maxParentalRatingChanged) + Q_PROPERTY(QStringList blockedTags READ blockedTags WRITE setBlockedTags NOTIFY blockedTagsChanged) + Q_PROPERTY(bool enableUserPreferenceAccess READ enableUserPreferenceAccess WRITE setEnableUserPreferenceAccess NOTIFY enableUserPreferenceAccessChanged) + Q_PROPERTY(QList accessSchedules READ accessSchedules WRITE setAccessSchedules NOTIFY accessSchedulesChanged) + Q_PROPERTY(QList blockUnratedItems READ blockUnratedItems WRITE setBlockUnratedItems NOTIFY blockUnratedItemsChanged) + Q_PROPERTY(bool enableRemoteControlOfOtherUsers READ enableRemoteControlOfOtherUsers WRITE setEnableRemoteControlOfOtherUsers NOTIFY enableRemoteControlOfOtherUsersChanged) + Q_PROPERTY(bool enableSharedDeviceControl READ enableSharedDeviceControl WRITE setEnableSharedDeviceControl NOTIFY enableSharedDeviceControlChanged) + Q_PROPERTY(bool enableRemoteAccess READ enableRemoteAccess WRITE setEnableRemoteAccess NOTIFY enableRemoteAccessChanged) + Q_PROPERTY(bool enableLiveTvManagement READ enableLiveTvManagement WRITE setEnableLiveTvManagement NOTIFY enableLiveTvManagementChanged) + Q_PROPERTY(bool enableLiveTvAccess READ enableLiveTvAccess WRITE setEnableLiveTvAccess NOTIFY enableLiveTvAccessChanged) + Q_PROPERTY(bool enableMediaPlayback READ enableMediaPlayback WRITE setEnableMediaPlayback NOTIFY enableMediaPlaybackChanged) + Q_PROPERTY(bool enableAudioPlaybackTranscoding READ enableAudioPlaybackTranscoding WRITE setEnableAudioPlaybackTranscoding NOTIFY enableAudioPlaybackTranscodingChanged) + Q_PROPERTY(bool enableVideoPlaybackTranscoding READ enableVideoPlaybackTranscoding WRITE setEnableVideoPlaybackTranscoding NOTIFY enableVideoPlaybackTranscodingChanged) + Q_PROPERTY(bool enablePlaybackRemuxing READ enablePlaybackRemuxing WRITE setEnablePlaybackRemuxing NOTIFY enablePlaybackRemuxingChanged) + Q_PROPERTY(bool forceRemoteSourceTranscoding READ forceRemoteSourceTranscoding WRITE setForceRemoteSourceTranscoding NOTIFY forceRemoteSourceTranscodingChanged) + Q_PROPERTY(bool enableContentDeletion READ enableContentDeletion WRITE setEnableContentDeletion NOTIFY enableContentDeletionChanged) + Q_PROPERTY(QStringList enableContentDeletionFromFolders READ enableContentDeletionFromFolders WRITE setEnableContentDeletionFromFolders NOTIFY enableContentDeletionFromFoldersChanged) + Q_PROPERTY(bool enableContentDownloading READ enableContentDownloading WRITE setEnableContentDownloading NOTIFY enableContentDownloadingChanged) + /** + * @brief Gets or sets a value indicating whether [enable synchronize]. + */ + Q_PROPERTY(bool enableSyncTranscoding READ enableSyncTranscoding WRITE setEnableSyncTranscoding NOTIFY enableSyncTranscodingChanged) + Q_PROPERTY(bool enableMediaConversion READ enableMediaConversion WRITE setEnableMediaConversion NOTIFY enableMediaConversionChanged) + Q_PROPERTY(QStringList enabledDevices READ enabledDevices WRITE setEnabledDevices NOTIFY enabledDevicesChanged) + Q_PROPERTY(bool enableAllDevices READ enableAllDevices WRITE setEnableAllDevices NOTIFY enableAllDevicesChanged) + Q_PROPERTY(QStringList enabledChannels READ enabledChannels WRITE setEnabledChannels NOTIFY enabledChannelsChanged) + Q_PROPERTY(bool enableAllChannels READ enableAllChannels WRITE setEnableAllChannels NOTIFY enableAllChannelsChanged) + Q_PROPERTY(QStringList enabledFolders READ enabledFolders WRITE setEnabledFolders NOTIFY enabledFoldersChanged) + Q_PROPERTY(bool enableAllFolders READ enableAllFolders WRITE setEnableAllFolders NOTIFY enableAllFoldersChanged) + Q_PROPERTY(qint32 invalidLoginAttemptCount READ invalidLoginAttemptCount WRITE setInvalidLoginAttemptCount NOTIFY invalidLoginAttemptCountChanged) + Q_PROPERTY(qint32 loginAttemptsBeforeLockout READ loginAttemptsBeforeLockout WRITE setLoginAttemptsBeforeLockout NOTIFY loginAttemptsBeforeLockoutChanged) + Q_PROPERTY(qint32 maxActiveSessions READ maxActiveSessions WRITE setMaxActiveSessions NOTIFY maxActiveSessionsChanged) + Q_PROPERTY(bool enablePublicSharing READ enablePublicSharing WRITE setEnablePublicSharing NOTIFY enablePublicSharingChanged) + Q_PROPERTY(QStringList blockedMediaFolders READ blockedMediaFolders WRITE setBlockedMediaFolders NOTIFY blockedMediaFoldersChanged) + Q_PROPERTY(QStringList blockedChannels READ blockedChannels WRITE setBlockedChannels NOTIFY blockedChannelsChanged) + Q_PROPERTY(qint32 remoteClientBitrateLimit READ remoteClientBitrateLimit WRITE setRemoteClientBitrateLimit NOTIFY remoteClientBitrateLimitChanged) + Q_PROPERTY(QString authenticationProviderId READ authenticationProviderId WRITE setAuthenticationProviderId NOTIFY authenticationProviderIdChanged) + Q_PROPERTY(QString passwordResetProviderId READ passwordResetProviderId WRITE setPasswordResetProviderId NOTIFY passwordResetProviderIdChanged) + Q_PROPERTY(SyncPlayUserAccessType syncPlayAccess READ syncPlayAccess WRITE setSyncPlayAccess NOTIFY syncPlayAccessChanged) + + bool isAdministrator() const; + void setIsAdministrator(bool newIsAdministrator); + + bool isHidden() const; + void setIsHidden(bool newIsHidden); + + bool isDisabled() const; + void setIsDisabled(bool newIsDisabled); + + qint32 maxParentalRating() const; + void setMaxParentalRating(qint32 newMaxParentalRating); + + QStringList blockedTags() const; + void setBlockedTags(QStringList newBlockedTags); + + bool enableUserPreferenceAccess() const; + void setEnableUserPreferenceAccess(bool newEnableUserPreferenceAccess); + + QList accessSchedules() const; + void setAccessSchedules(QList newAccessSchedules); + + QList blockUnratedItems() const; + void setBlockUnratedItems(QList newBlockUnratedItems); + + bool enableRemoteControlOfOtherUsers() const; + void setEnableRemoteControlOfOtherUsers(bool newEnableRemoteControlOfOtherUsers); + + bool enableSharedDeviceControl() const; + void setEnableSharedDeviceControl(bool newEnableSharedDeviceControl); + + bool enableRemoteAccess() const; + void setEnableRemoteAccess(bool newEnableRemoteAccess); + + bool enableLiveTvManagement() const; + void setEnableLiveTvManagement(bool newEnableLiveTvManagement); + + bool enableLiveTvAccess() const; + void setEnableLiveTvAccess(bool newEnableLiveTvAccess); + + bool enableMediaPlayback() const; + void setEnableMediaPlayback(bool newEnableMediaPlayback); + + bool enableAudioPlaybackTranscoding() const; + void setEnableAudioPlaybackTranscoding(bool newEnableAudioPlaybackTranscoding); + + bool enableVideoPlaybackTranscoding() const; + void setEnableVideoPlaybackTranscoding(bool newEnableVideoPlaybackTranscoding); + + bool enablePlaybackRemuxing() const; + void setEnablePlaybackRemuxing(bool newEnablePlaybackRemuxing); + + bool forceRemoteSourceTranscoding() const; + void setForceRemoteSourceTranscoding(bool newForceRemoteSourceTranscoding); + + bool enableContentDeletion() const; + void setEnableContentDeletion(bool newEnableContentDeletion); + + QStringList enableContentDeletionFromFolders() const; + void setEnableContentDeletionFromFolders(QStringList newEnableContentDeletionFromFolders); + + bool enableContentDownloading() const; + void setEnableContentDownloading(bool newEnableContentDownloading); + + bool enableSyncTranscoding() const; + void setEnableSyncTranscoding(bool newEnableSyncTranscoding); + + bool enableMediaConversion() const; + void setEnableMediaConversion(bool newEnableMediaConversion); + + QStringList enabledDevices() const; + void setEnabledDevices(QStringList newEnabledDevices); + + bool enableAllDevices() const; + void setEnableAllDevices(bool newEnableAllDevices); + + QStringList enabledChannels() const; + void setEnabledChannels(QStringList newEnabledChannels); + + bool enableAllChannels() const; + void setEnableAllChannels(bool newEnableAllChannels); + + QStringList enabledFolders() const; + void setEnabledFolders(QStringList newEnabledFolders); + + bool enableAllFolders() const; + void setEnableAllFolders(bool newEnableAllFolders); + + qint32 invalidLoginAttemptCount() const; + void setInvalidLoginAttemptCount(qint32 newInvalidLoginAttemptCount); + + qint32 loginAttemptsBeforeLockout() const; + void setLoginAttemptsBeforeLockout(qint32 newLoginAttemptsBeforeLockout); + + qint32 maxActiveSessions() const; + void setMaxActiveSessions(qint32 newMaxActiveSessions); + + bool enablePublicSharing() const; + void setEnablePublicSharing(bool newEnablePublicSharing); + + QStringList blockedMediaFolders() const; + void setBlockedMediaFolders(QStringList newBlockedMediaFolders); + + QStringList blockedChannels() const; + void setBlockedChannels(QStringList newBlockedChannels); + + qint32 remoteClientBitrateLimit() const; + void setRemoteClientBitrateLimit(qint32 newRemoteClientBitrateLimit); + + QString authenticationProviderId() const; + void setAuthenticationProviderId(QString newAuthenticationProviderId); + + QString passwordResetProviderId() const; + void setPasswordResetProviderId(QString newPasswordResetProviderId); + + SyncPlayUserAccessType syncPlayAccess() const; + void setSyncPlayAccess(SyncPlayUserAccessType newSyncPlayAccess); + +signals: + void isAdministratorChanged(bool newIsAdministrator); + void isHiddenChanged(bool newIsHidden); + void isDisabledChanged(bool newIsDisabled); + void maxParentalRatingChanged(qint32 newMaxParentalRating); + void blockedTagsChanged(QStringList newBlockedTags); + void enableUserPreferenceAccessChanged(bool newEnableUserPreferenceAccess); + void accessSchedulesChanged(QList newAccessSchedules); + void blockUnratedItemsChanged(QList newBlockUnratedItems); + void enableRemoteControlOfOtherUsersChanged(bool newEnableRemoteControlOfOtherUsers); + void enableSharedDeviceControlChanged(bool newEnableSharedDeviceControl); + void enableRemoteAccessChanged(bool newEnableRemoteAccess); + void enableLiveTvManagementChanged(bool newEnableLiveTvManagement); + void enableLiveTvAccessChanged(bool newEnableLiveTvAccess); + void enableMediaPlaybackChanged(bool newEnableMediaPlayback); + void enableAudioPlaybackTranscodingChanged(bool newEnableAudioPlaybackTranscoding); + void enableVideoPlaybackTranscodingChanged(bool newEnableVideoPlaybackTranscoding); + void enablePlaybackRemuxingChanged(bool newEnablePlaybackRemuxing); + void forceRemoteSourceTranscodingChanged(bool newForceRemoteSourceTranscoding); + void enableContentDeletionChanged(bool newEnableContentDeletion); + void enableContentDeletionFromFoldersChanged(QStringList newEnableContentDeletionFromFolders); + void enableContentDownloadingChanged(bool newEnableContentDownloading); + void enableSyncTranscodingChanged(bool newEnableSyncTranscoding); + void enableMediaConversionChanged(bool newEnableMediaConversion); + void enabledDevicesChanged(QStringList newEnabledDevices); + void enableAllDevicesChanged(bool newEnableAllDevices); + void enabledChannelsChanged(QStringList newEnabledChannels); + void enableAllChannelsChanged(bool newEnableAllChannels); + void enabledFoldersChanged(QStringList newEnabledFolders); + void enableAllFoldersChanged(bool newEnableAllFolders); + void invalidLoginAttemptCountChanged(qint32 newInvalidLoginAttemptCount); + void loginAttemptsBeforeLockoutChanged(qint32 newLoginAttemptsBeforeLockout); + void maxActiveSessionsChanged(qint32 newMaxActiveSessions); + void enablePublicSharingChanged(bool newEnablePublicSharing); + void blockedMediaFoldersChanged(QStringList newBlockedMediaFolders); + void blockedChannelsChanged(QStringList newBlockedChannels); + void remoteClientBitrateLimitChanged(qint32 newRemoteClientBitrateLimit); + void authenticationProviderIdChanged(QString newAuthenticationProviderId); + void passwordResetProviderIdChanged(QString newPasswordResetProviderId); + void syncPlayAccessChanged(SyncPlayUserAccessType newSyncPlayAccess); +protected: + bool m_isAdministrator; + bool m_isHidden; + bool m_isDisabled; + qint32 m_maxParentalRating; + QStringList m_blockedTags; + bool m_enableUserPreferenceAccess; + QList m_accessSchedules; + QList m_blockUnratedItems; + bool m_enableRemoteControlOfOtherUsers; + bool m_enableSharedDeviceControl; + bool m_enableRemoteAccess; + bool m_enableLiveTvManagement; + bool m_enableLiveTvAccess; + bool m_enableMediaPlayback; + bool m_enableAudioPlaybackTranscoding; + bool m_enableVideoPlaybackTranscoding; + bool m_enablePlaybackRemuxing; + bool m_forceRemoteSourceTranscoding; + bool m_enableContentDeletion; + QStringList m_enableContentDeletionFromFolders; + bool m_enableContentDownloading; + bool m_enableSyncTranscoding; + bool m_enableMediaConversion; + QStringList m_enabledDevices; + bool m_enableAllDevices; + QStringList m_enabledChannels; + bool m_enableAllChannels; + QStringList m_enabledFolders; + bool m_enableAllFolders; + qint32 m_invalidLoginAttemptCount; + qint32 m_loginAttemptsBeforeLockout; + qint32 m_maxActiveSessions; + bool m_enablePublicSharing; + QStringList m_blockedMediaFolders; + QStringList m_blockedChannels; + qint32 m_remoteClientBitrateLimit; + QString m_authenticationProviderId; + QString m_passwordResetProviderId; + SyncPlayUserAccessType m_syncPlayAccess; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_USERPOLICY_H diff --git a/core/include/JellyfinQt/DTO/utctimeresponse.h b/core/include/JellyfinQt/DTO/utctimeresponse.h new file mode 100644 index 0000000..45e94c2 --- /dev/null +++ b/core/include/JellyfinQt/DTO/utctimeresponse.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_UTCTIMERESPONSE_H +#define JELLYFIN_DTO_UTCTIMERESPONSE_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class UtcTimeResponse : public QObject { + Q_OBJECT +public: + explicit UtcTimeResponse(QObject *parent = nullptr); + static UtcTimeResponse *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets the UTC time when request has been received. + */ + Q_PROPERTY(QDateTime requestReceptionTime READ requestReceptionTime WRITE setRequestReceptionTime NOTIFY requestReceptionTimeChanged) + /** + * @brief Gets the UTC time when response has been sent. + */ + Q_PROPERTY(QDateTime responseTransmissionTime READ responseTransmissionTime WRITE setResponseTransmissionTime NOTIFY responseTransmissionTimeChanged) + + QDateTime requestReceptionTime() const; + void setRequestReceptionTime(QDateTime newRequestReceptionTime); + + QDateTime responseTransmissionTime() const; + void setResponseTransmissionTime(QDateTime newResponseTransmissionTime); + +signals: + void requestReceptionTimeChanged(QDateTime newRequestReceptionTime); + void responseTransmissionTimeChanged(QDateTime newResponseTransmissionTime); +protected: + QDateTime m_requestReceptionTime; + QDateTime m_responseTransmissionTime; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_UTCTIMERESPONSE_H diff --git a/core/include/JellyfinQt/DTO/validatepathdto.h b/core/include/JellyfinQt/DTO/validatepathdto.h new file mode 100644 index 0000000..6766be9 --- /dev/null +++ b/core/include/JellyfinQt/DTO/validatepathdto.h @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_VALIDATEPATHDTO_H +#define JELLYFIN_DTO_VALIDATEPATHDTO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class ValidatePathDto : public QObject { + Q_OBJECT +public: + explicit ValidatePathDto(QObject *parent = nullptr); + static ValidatePathDto *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets a value indicating whether validate if path is writable. + */ + Q_PROPERTY(bool validateWritable READ validateWritable WRITE setValidateWritable NOTIFY validateWritableChanged) + /** + * @brief Gets or sets the path. + */ + Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) + /** + * @brief Gets or sets is path file. + */ + Q_PROPERTY(bool isFile READ isFile WRITE setIsFile NOTIFY isFileChanged) + + bool validateWritable() const; + void setValidateWritable(bool newValidateWritable); + + QString path() const; + void setPath(QString newPath); + + bool isFile() const; + void setIsFile(bool newIsFile); + +signals: + void validateWritableChanged(bool newValidateWritable); + void pathChanged(QString newPath); + void isFileChanged(bool newIsFile); +protected: + bool m_validateWritable; + QString m_path; + bool m_isFile; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_VALIDATEPATHDTO_H diff --git a/core/include/JellyfinQt/DTO/version.h b/core/include/JellyfinQt/DTO/version.h new file mode 100644 index 0000000..75ac77c --- /dev/null +++ b/core/include/JellyfinQt/DTO/version.h @@ -0,0 +1,91 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_VERSION_H +#define JELLYFIN_DTO_VERSION_H + +#include +#include + +namespace Jellyfin { +namespace DTO { + +class Version : public QObject { + Q_OBJECT +public: + explicit Version(QObject *parent = nullptr); + static Version *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + Q_PROPERTY(qint32 major READ major WRITE setMajor NOTIFY majorChanged) + Q_PROPERTY(qint32 minor READ minor WRITE setMinor NOTIFY minorChanged) + Q_PROPERTY(qint32 build READ build WRITE setBuild NOTIFY buildChanged) + Q_PROPERTY(qint32 revision READ revision WRITE setRevision NOTIFY revisionChanged) + Q_PROPERTY(qint32 majorRevision READ majorRevision WRITE setMajorRevision NOTIFY majorRevisionChanged) + Q_PROPERTY(qint32 minorRevision READ minorRevision WRITE setMinorRevision NOTIFY minorRevisionChanged) + + qint32 major() const; + void setMajor(qint32 newMajor); + + qint32 minor() const; + void setMinor(qint32 newMinor); + + qint32 build() const; + void setBuild(qint32 newBuild); + + qint32 revision() const; + void setRevision(qint32 newRevision); + + qint32 majorRevision() const; + void setMajorRevision(qint32 newMajorRevision); + + qint32 minorRevision() const; + void setMinorRevision(qint32 newMinorRevision); + +signals: + void majorChanged(qint32 newMajor); + void minorChanged(qint32 newMinor); + void buildChanged(qint32 newBuild); + void revisionChanged(qint32 newRevision); + void majorRevisionChanged(qint32 newMajorRevision); + void minorRevisionChanged(qint32 newMinorRevision); +protected: + qint32 m_major; + qint32 m_minor; + qint32 m_build; + qint32 m_revision; + qint32 m_majorRevision; + qint32 m_minorRevision; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_VERSION_H diff --git a/core/include/JellyfinQt/DTO/versioninfo.h b/core/include/JellyfinQt/DTO/versioninfo.h new file mode 100644 index 0000000..945cea0 --- /dev/null +++ b/core/include/JellyfinQt/DTO/versioninfo.h @@ -0,0 +1,136 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_VERSIONINFO_H +#define JELLYFIN_DTO_VERSIONINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class Version; + +class VersionInfo : public QObject { + Q_OBJECT +public: + explicit VersionInfo(QObject *parent = nullptr); + static VersionInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the version. + */ + Q_PROPERTY(QString version READ version WRITE setVersion NOTIFY versionChanged) + Q_PROPERTY(Version * versionNumber READ versionNumber WRITE setVersionNumber NOTIFY versionNumberChanged) + /** + * @brief Gets or sets the changelog for this version. + */ + Q_PROPERTY(QString changelog READ changelog WRITE setChangelog NOTIFY changelogChanged) + /** + * @brief Gets or sets the ABI that this version was built against. + */ + Q_PROPERTY(QString targetAbi READ targetAbi WRITE setTargetAbi NOTIFY targetAbiChanged) + /** + * @brief Gets or sets the source URL. + */ + Q_PROPERTY(QString sourceUrl READ sourceUrl WRITE setSourceUrl NOTIFY sourceUrlChanged) + /** + * @brief Gets or sets a checksum for the binary. + */ + Q_PROPERTY(QString checksum READ checksum WRITE setChecksum NOTIFY checksumChanged) + /** + * @brief Gets or sets a timestamp of when the binary was built. + */ + Q_PROPERTY(QString timestamp READ timestamp WRITE setTimestamp NOTIFY timestampChanged) + /** + * @brief Gets or sets the repository name. + */ + Q_PROPERTY(QString repositoryName READ repositoryName WRITE setRepositoryName NOTIFY repositoryNameChanged) + /** + * @brief Gets or sets the repository url. + */ + Q_PROPERTY(QString repositoryUrl READ repositoryUrl WRITE setRepositoryUrl NOTIFY repositoryUrlChanged) + + QString version() const; + void setVersion(QString newVersion); + + Version * versionNumber() const; + void setVersionNumber(Version * newVersionNumber); + + QString changelog() const; + void setChangelog(QString newChangelog); + + QString targetAbi() const; + void setTargetAbi(QString newTargetAbi); + + QString sourceUrl() const; + void setSourceUrl(QString newSourceUrl); + + QString checksum() const; + void setChecksum(QString newChecksum); + + QString timestamp() const; + void setTimestamp(QString newTimestamp); + + QString repositoryName() const; + void setRepositoryName(QString newRepositoryName); + + QString repositoryUrl() const; + void setRepositoryUrl(QString newRepositoryUrl); + +signals: + void versionChanged(QString newVersion); + void versionNumberChanged(Version * newVersionNumber); + void changelogChanged(QString newChangelog); + void targetAbiChanged(QString newTargetAbi); + void sourceUrlChanged(QString newSourceUrl); + void checksumChanged(QString newChecksum); + void timestampChanged(QString newTimestamp); + void repositoryNameChanged(QString newRepositoryName); + void repositoryUrlChanged(QString newRepositoryUrl); +protected: + QString m_version; + Version * m_versionNumber = nullptr; + QString m_changelog; + QString m_targetAbi; + QString m_sourceUrl; + QString m_checksum; + QString m_timestamp; + QString m_repositoryName; + QString m_repositoryUrl; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_VERSIONINFO_H diff --git a/core/include/JellyfinQt/DTO/video3dformat.h b/core/include/JellyfinQt/DTO/video3dformat.h new file mode 100644 index 0000000..7e5e8c6 --- /dev/null +++ b/core/include/JellyfinQt/DTO/video3dformat.h @@ -0,0 +1,57 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_VIDEO3DFORMAT_H +#define JELLYFIN_DTO_VIDEO3DFORMAT_H + +#include + +namespace Jellyfin { +namespace DTO { + +class Video3DFormatClass { + Q_GADGET +public: + enum Value { + HalfSideBySide, + FullSideBySide, + FullTopAndBottom, + HalfTopAndBottom, + MVC, + }; + Q_ENUM(Value) +private: + explicit Video3DFormatClass(); +}; +typedef Video3DFormatClass::Value Video3DFormat; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_VIDEO3DFORMAT_H diff --git a/core/include/JellyfinQt/DTO/videotype.h b/core/include/JellyfinQt/DTO/videotype.h new file mode 100644 index 0000000..9be962f --- /dev/null +++ b/core/include/JellyfinQt/DTO/videotype.h @@ -0,0 +1,56 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_VIDEOTYPE_H +#define JELLYFIN_DTO_VIDEOTYPE_H + +#include + +namespace Jellyfin { +namespace DTO { + +class VideoTypeClass { + Q_GADGET +public: + enum Value { + VideoFile, + Iso, + Dvd, + BluRay, + }; + Q_ENUM(Value) +private: + explicit VideoTypeClass(); +}; +typedef VideoTypeClass::Value VideoType; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_VIDEOTYPE_H diff --git a/core/include/JellyfinQt/DTO/virtualfolderinfo.h b/core/include/JellyfinQt/DTO/virtualfolderinfo.h new file mode 100644 index 0000000..ce278bd --- /dev/null +++ b/core/include/JellyfinQt/DTO/virtualfolderinfo.h @@ -0,0 +1,123 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_VIRTUALFOLDERINFO_H +#define JELLYFIN_DTO_VIRTUALFOLDERINFO_H + +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class LibraryOptions; + +class VirtualFolderInfo : public QObject { + Q_OBJECT +public: + explicit VirtualFolderInfo(QObject *parent = nullptr); + static VirtualFolderInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the locations. + */ + Q_PROPERTY(QStringList locations READ locations WRITE setLocations NOTIFY locationsChanged) + /** + * @brief Gets or sets the type of the collection. + */ + Q_PROPERTY(QString collectionType READ collectionType WRITE setCollectionType NOTIFY collectionTypeChanged) + Q_PROPERTY(LibraryOptions * libraryOptions READ libraryOptions WRITE setLibraryOptions NOTIFY libraryOptionsChanged) + /** + * @brief Gets or sets the item identifier. + */ + Q_PROPERTY(QString itemId READ itemId WRITE setItemId NOTIFY itemIdChanged) + /** + * @brief Gets or sets the primary image item identifier. + */ + Q_PROPERTY(QString primaryImageItemId READ primaryImageItemId WRITE setPrimaryImageItemId NOTIFY primaryImageItemIdChanged) + Q_PROPERTY(double refreshProgress READ refreshProgress WRITE setRefreshProgress NOTIFY refreshProgressChanged) + Q_PROPERTY(QString refreshStatus READ refreshStatus WRITE setRefreshStatus NOTIFY refreshStatusChanged) + + QString name() const; + void setName(QString newName); + + QStringList locations() const; + void setLocations(QStringList newLocations); + + QString collectionType() const; + void setCollectionType(QString newCollectionType); + + LibraryOptions * libraryOptions() const; + void setLibraryOptions(LibraryOptions * newLibraryOptions); + + QString itemId() const; + void setItemId(QString newItemId); + + QString primaryImageItemId() const; + void setPrimaryImageItemId(QString newPrimaryImageItemId); + + double refreshProgress() const; + void setRefreshProgress(double newRefreshProgress); + + QString refreshStatus() const; + void setRefreshStatus(QString newRefreshStatus); + +signals: + void nameChanged(QString newName); + void locationsChanged(QStringList newLocations); + void collectionTypeChanged(QString newCollectionType); + void libraryOptionsChanged(LibraryOptions * newLibraryOptions); + void itemIdChanged(QString newItemId); + void primaryImageItemIdChanged(QString newPrimaryImageItemId); + void refreshProgressChanged(double newRefreshProgress); + void refreshStatusChanged(QString newRefreshStatus); +protected: + QString m_name; + QStringList m_locations; + QString m_collectionType; + LibraryOptions * m_libraryOptions = nullptr; + QString m_itemId; + QString m_primaryImageItemId; + double m_refreshProgress; + QString m_refreshStatus; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_VIRTUALFOLDERINFO_H diff --git a/core/include/JellyfinQt/DTO/wakeonlaninfo.h b/core/include/JellyfinQt/DTO/wakeonlaninfo.h new file mode 100644 index 0000000..628c071 --- /dev/null +++ b/core/include/JellyfinQt/DTO/wakeonlaninfo.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_WAKEONLANINFO_H +#define JELLYFIN_DTO_WAKEONLANINFO_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class WakeOnLanInfo : public QObject { + Q_OBJECT +public: + explicit WakeOnLanInfo(QObject *parent = nullptr); + static WakeOnLanInfo *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets the MAC address of the device. + */ + Q_PROPERTY(QString macAddress READ macAddress WRITE setMacAddress NOTIFY macAddressChanged) + /** + * @brief Gets or sets the wake-on-LAN port. + */ + Q_PROPERTY(qint32 port READ port WRITE setPort NOTIFY portChanged) + + QString macAddress() const; + void setMacAddress(QString newMacAddress); + + qint32 port() const; + void setPort(qint32 newPort); + +signals: + void macAddressChanged(QString newMacAddress); + void portChanged(qint32 newPort); +protected: + QString m_macAddress; + qint32 m_port; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_WAKEONLANINFO_H diff --git a/core/include/JellyfinQt/DTO/xmlattribute.h b/core/include/JellyfinQt/DTO/xmlattribute.h new file mode 100644 index 0000000..7dea96e --- /dev/null +++ b/core/include/JellyfinQt/DTO/xmlattribute.h @@ -0,0 +1,74 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#ifndef JELLYFIN_DTO_XMLATTRIBUTE_H +#define JELLYFIN_DTO_XMLATTRIBUTE_H + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +class XmlAttribute : public QObject { + Q_OBJECT +public: + explicit XmlAttribute(QObject *parent = nullptr); + static XmlAttribute *fromJSON(QJsonObject source, QObject *parent = nullptr); + void updateFromJSON(QJsonObject source); + QJsonObject toJSON(); + + /** + * @brief Gets or sets the name of the attribute. + */ + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + /** + * @brief Gets or sets the value of the attribute. + */ + Q_PROPERTY(QString value READ value WRITE setValue NOTIFY valueChanged) + + QString name() const; + void setName(QString newName); + + QString value() const; + void setValue(QString newValue); + +signals: + void nameChanged(QString newName); + void valueChanged(QString newValue); +protected: + QString m_name; + QString m_value; +}; + +} // NS Jellyfin +} // NS DTO + +#endif // JELLYFIN_DTO_XMLATTRIBUTE_H diff --git a/core/include/JellyfinQt/jellyfinapiclient.h b/core/include/JellyfinQt/apiclient.h similarity index 95% rename from core/include/JellyfinQt/jellyfinapiclient.h rename to core/include/JellyfinQt/apiclient.h index dbefcdc..7cb4d64 100644 --- a/core/include/JellyfinQt/jellyfinapiclient.h +++ b/core/include/JellyfinQt/apiclient.h @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -37,15 +37,21 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #include #include "credentialmanager.h" -#include "jellyfindeviceprofile.h" -#include "jellyfinitem.h" -#include "jellyfinplaybackmanager.h" -#include "jellyfinwebsocket.h" +#include "deviceprofile.h" +#include "websocket.h" namespace Jellyfin { class MediaSource; class WebSocket; class PlaybackManager; + +namespace DTO { + class UserItemDataDto; // Keep it as an opaque pointer + using UserData = UserItemDataDto; +} + +using namespace DTO; + /** * @brief An Api client for Jellyfin. Handles requests and authentication. * @@ -157,8 +163,9 @@ signals: * @param userData The new user data * * Note: only Jellyfin::UserData should connect to this signal, they will update themselves! + * Note: the userData is only valid during this callback, afterwards it is deleted! */ - void userDataChanged(const QString &itemId, QSharedPointer userData); + void userDataChanged(const QString &itemId, UserData *userData); public slots: /** @@ -187,7 +194,7 @@ public slots: protected slots: void defaultNetworkErrorHandler(QNetworkReply::NetworkError error); - void onUserDataChanged(const QString &itemId, QSharedPointer newData); + void onUserDataChanged(const QString &itemId, UserData *newData); protected: /** diff --git a/core/include/JellyfinQt/jellyfinapimodel.h b/core/include/JellyfinQt/apimodel.h similarity index 70% rename from core/include/JellyfinQt/jellyfinapimodel.h rename to core/include/JellyfinQt/apimodel.h index 0ab5e06..fa6e91f 100644 --- a/core/include/JellyfinQt/jellyfinapimodel.h +++ b/core/include/JellyfinQt/apimodel.h @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -27,13 +27,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #include #include #include +#include #include -#include "jellyfinapiclient.h" +#include "apiclient.h" #include "jsonhelper.h" +#include "DTO/item.h" +#include "DTO/user.h" +#include "DTO/userdata.h" + namespace Jellyfin { -class SortOptions : public QObject{ + +class SortOptions : public QObject { Q_OBJECT public: explicit SortOptions (QObject *parent = nullptr) : QObject(parent) {} @@ -57,6 +63,134 @@ public: Q_ENUM(SortBy) }; +/** + * Q_OBJECT does not support template classes. This base class declares the + * Q_OBJECT related properties and signals. + */ +class BaseApiModel : public QAbstractListModel, public QQmlParserStatus { + Q_OBJECT +public: + explicit BaseApiModel(QString path, bool hasRecordResponse, bool addUserId, QObject *parent = nullptr); + enum ModelStatus { + Uninitialised, + Loading, + Ready, + Error, + LoadingMore + }; + Q_ENUM(ModelStatus) + + enum SortOrder { + Unspecified, + Ascending, + Descending + }; + Q_ENUM(SortOrder) + Q_PROPERTY(ApiClient *apiClient MEMBER m_apiClient NOTIFY apiClientChanged) + Q_PROPERTY(ModelStatus status READ status NOTIFY statusChanged) + + // Query properties + Q_PROPERTY(int limit MEMBER m_limit NOTIFY limitChanged) + Q_PROPERTY(QList sortBy MEMBER m_sortBy NOTIFY sortByChanged) + Q_PROPERTY(QList fields MEMBER m_fields NOTIFY fieldsChanged) + Q_PROPERTY(SortOrder sortOrder MEMBER m_sortOrder NOTIFY sortOrderChanged) + + ModelStatus status() const { return m_status; } + void setApiClient(ApiClient *newApiClient); + void setLimit(int newLimit); + + // From AbstractListModel, gets implemented in ApiModel + virtual int rowCount(const QModelIndex &index) const override = 0; + virtual QHash roleNames() const override = 0; + virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override = 0; + virtual bool canFetchMore(const QModelIndex &parent) const override = 0; + virtual void fetchMore(const QModelIndex &parent) override = 0; + + +signals: + void ready(); + void apiClientChanged(ApiClient *newApiClient); + void statusChanged(ModelStatus newStatus); + void limitChanged(int newLimit); + void sortByChanged(QList newSortOrder); + void sortOrderChanged(SortOrder newSortOrder); + void fieldsChanged(QList newFields); + +public slots: + /** + * @brief (Re)loads the data into this model. This might make a network request. + */ + void reload(); + +protected: + enum LoadType { + RELOAD, + LOAD_MORE + }; + + ApiClient *m_apiClient = nullptr; + bool m_isBeingParsed = false; + // Per-model specific settings. + QString m_path; + bool m_hasRecordResponse; + bool m_addUserId; + bool padding; bool padding2; + + // Query/record controlling properties + int m_limit = -1; + int m_startIndex = 0; + int m_totalRecordCount = 0; + const int DEFAULT_LIMIT = 100; + + // Query properties + QList m_fields = {}; + QList m_sortBy = {}; + SortOrder m_sortOrder = Unspecified; + + // State properties. + ModelStatus m_status = Uninitialised; + + void setStatus(ModelStatus newStatus) { + if (this->m_status != newStatus) { + this->m_status = newStatus; + emit this->statusChanged(newStatus); + if (m_status == Ready) { + emit ready(); + } + } + } + + void load(LoadType loadType); + virtual void setModelData(QJsonArray &data) = 0; + virtual void appendModelData(QJsonArray &data) = 0; + /** + * @brief Adds parameters to the query + * @param query The query to add parameters to + * + * This method is intended to be overrided by subclasses. It gets called + * before a request is made to the server and can be used to enable + * query types specific for a certain model to be available. + * + * Make sure to call the method in the superclass as well! + */ + virtual void addQueryParameters(QUrlQuery &query); + + /** + * @brief Replaces placeholders in an URL. + * @param path The path in which placeholders should be replaced. + * + * This method is intended to be overrided by subclasses. It gets called + * before a request is made to the server and can be used to enable + * query types specific for a certain model to be available. + * + * Make sure to call the method in the superclass as well! + */ + virtual void replacePathPlaceholders(QString &path); + + virtual void classBegin() override; + virtual void componentComplete() override; +}; + /** * @brief Abstract model for displaying a REST JSON collection. Role names will be based on the fields encountered in the @@ -82,25 +216,9 @@ public: * The model will have roleNames for "name" and "id". * */ -class ApiModel : public QAbstractListModel { - Q_OBJECT +template +class ApiModel : public BaseApiModel { public: - enum ModelStatus { - Uninitialised, - Loading, - Ready, - Error, - LoadingMore - }; - Q_ENUM(ModelStatus) - - enum SortOrder { - Unspecified, - Ascending, - Descending - }; - Q_ENUM(SortOrder) - /** * @brief Creates a new basemodel * @param path The path (relative to the baseUrl of JellyfinApiClient) to make the call to. @@ -130,22 +248,6 @@ public: * responseHasRecords should be true */ explicit ApiModel(QString path, bool responseHasRecords, bool passUserId = false, QObject *parent = nullptr); - Q_PROPERTY(ApiClient *apiClient MEMBER m_apiClient NOTIFY apiClientChanged) - Q_PROPERTY(ModelStatus status READ status NOTIFY statusChanged) - - // Query properties - Q_PROPERTY(int limit MEMBER m_limit NOTIFY limitChanged) - Q_PROPERTY(QString parentId MEMBER m_parentId NOTIFY parentIdChanged) - Q_PROPERTY(QList sortBy MEMBER m_sortBy NOTIFY sortByChanged) - Q_PROPERTY(QList fields MEMBER m_fields NOTIFY fieldsChanged) - Q_PROPERTY(QString seasonId MEMBER m_seasonId NOTIFY seasonIdChanged) - Q_PROPERTY(QList imageTypes MEMBER m_imageTypes NOTIFY imageTypesChanged) - Q_PROPERTY(QList includeItemTypes MEMBER m_includeItemTypes NOTIFY includeItemTypesChanged) - Q_PROPERTY(bool recursive MEMBER m_recursive) - Q_PROPERTY(SortOrder sortOrder MEMBER m_sortOrder NOTIFY sortOrderChanged) - - // Path properties - Q_PROPERTY(QString show MEMBER m_show NOTIFY showChanged) // Standard QAbstractItemModel overrides int rowCount(const QModelIndex &index) const override { @@ -157,12 +259,18 @@ public: bool canFetchMore(const QModelIndex &parent) const override; void fetchMore(const QModelIndex &parent) override; - ModelStatus status() const { return m_status; } - // Helper methods template QString enumToString (const QEnum anEnum) { return QVariant::fromValue(anEnum).toString(); } + // QList-like API + T* at(int index) { return m_array.at(index); } + int size() { return rowCount(QModelIndex()); } + void insert(int index, T* object); + void append(T* object) { insert(size(), object); } + void removeAt(int index); + void removeOne(T* object); + template QString enumListToString (const QList enumList) { QString result; @@ -172,74 +280,20 @@ public: return result; } -signals: - void apiClientChanged(ApiClient *newApiClient); - void statusChanged(ModelStatus newStatus); - void limitChanged(int newLimit); - void parentIdChanged(QString newParentId); - void sortByChanged(QList newSortOrder); - void sortOrderChanged(SortOrder newSortOrder); - void showChanged(QString newShow); - void seasonIdChanged(QString newSeasonId); - void fieldsChanged(QList newFields); - void imageTypesChanged(QList newImageTypes); - void includeItemTypesChanged(const QList &newIncludeItemTypes); - -public slots: - /** - * @brief (Re)loads the data into this model. This might make a network request. - */ - void reload(); protected: - - enum LoadType { - RELOAD, - LOAD_MORE - }; - - void load(LoadType loadType); - /** - * @brief Adds parameters to the query - * @param query The query to add parameters to - * - * This method is intended to be overrided by subclasses. It gets called - * before a request is made to the server and can be used to enable - * query types specific for a certain model to be available. - */ - virtual void addQueryParameters(QUrlQuery &query); - ApiClient *m_apiClient = nullptr; - ModelStatus m_status = Uninitialised; - - QString m_path; - QJsonArray m_array; - bool m_hasRecordResponse; - - // Path properties - QString m_show; - - // Query/record controlling properties - int m_limit = -1; - int m_startIndex = 0; - int m_totalRecordCount = 0; - const int DEFAULT_LIMIT = 100; - - // Query properties - bool m_addUserId = false; - QString m_parentId; - QString m_seasonId; - QList m_fields = {}; - QList m_imageTypes = {}; - QList m_sortBy = {}; - QList m_includeItemTypes = {}; - SortOrder m_sortOrder = Unspecified; - bool m_recursive = false; - + // AbstractItemModel bookkeeping QHash m_roles; - void setStatus(ModelStatus newStatus) { - this->m_status = newStatus; - emit this->statusChanged(newStatus); - } + // Helper methods. + T *deserializeResult(QJsonValueRef source); + virtual void addQueryParameters(QUrlQuery &query) override; + virtual void replacePathPlaceholders(QString &path) override; + + virtual void setModelData(QJsonArray &data) override; + virtual void appendModelData(QJsonArray &data) override; + + // Model-specific properties. + QList m_array; private: /** @@ -252,7 +306,7 @@ private: /** * @brief List of the public users on the server. */ -class PublicUserModel : public ApiModel { +class PublicUserModel : public ApiModel { public: explicit PublicUserModel (QObject *parent = nullptr); }; @@ -262,15 +316,54 @@ public: * * Listens for updates in the library and updates the model accordingly. */ -class ItemModel : public ApiModel { +class ItemModel : public ApiModel { Q_OBJECT public: explicit ItemModel (QString path, bool responseHasRecords, bool replaceUser, QObject *parent = nullptr); + // Query parameters + Q_PROPERTY(QString parentId MEMBER m_parentId WRITE setParentId NOTIFY parentIdChanged) + Q_PROPERTY(QString seasonId MEMBER m_seasonId NOTIFY seasonIdChanged) + Q_PROPERTY(QList imageTypes MEMBER m_imageTypes NOTIFY imageTypesChanged) + Q_PROPERTY(QList includeItemTypes MEMBER m_includeItemTypes NOTIFY includeItemTypesChanged) + Q_PROPERTY(bool recursive MEMBER m_recursive) + QList m_includeItemTypes = {}; + + // Path properties + Q_PROPERTY(QString show MEMBER m_show NOTIFY showChanged) + + void setParentId(const QString &parentId) { + m_parentId = parentId; + emit parentIdChanged(m_parentId); + } +signals: + // Query property signals + void parentIdChanged(QString newParentId); + void seasonIdChanged(QString newSeasonId); + void imageTypesChanged(QList newImageTypes); + void includeItemTypesChanged(const QList &newIncludeItemTypes); + + // Path property signals + void showChanged(QString newShow); public slots: - void onUserDataChanged(const QString &itemId, QSharedPointer userData); + void onUserDataChanged(const QString &itemId, DTO::UserData *userData); +protected: + virtual void addQueryParameters(QUrlQuery &query) override; + virtual void replacePathPlaceholders(QString &path) override; +private: + // Path properties + QString m_show; + + // Query parameters + QString m_parentId; + QString m_seasonId; + QList m_imageTypes = {}; + bool m_recursive = false; }; -class UserViewModel : public ApiModel { +//template<> +//void ApiModel::apiClientChanged(); + +class UserViewModel : public ItemModel { public: explicit UserViewModel (QObject *parent = nullptr); }; diff --git a/core/include/JellyfinQt/credentialmanager.h b/core/include/JellyfinQt/credentialmanager.h index 9594671..15e2779 100644 --- a/core/include/JellyfinQt/credentialmanager.h +++ b/core/include/JellyfinQt/credentialmanager.h @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff --git a/core/include/JellyfinQt/jellyfindeviceprofile.h b/core/include/JellyfinQt/deviceprofile.h similarity index 97% rename from core/include/JellyfinQt/jellyfindeviceprofile.h rename to core/include/JellyfinQt/deviceprofile.h index 7049287..cc3e1a0 100644 --- a/core/include/JellyfinQt/jellyfindeviceprofile.h +++ b/core/include/JellyfinQt/deviceprofile.h @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff --git a/core/include/JellyfinQt/jellyfin.h b/core/include/JellyfinQt/jellyfin.h index fbd5f3e..2b0255b 100644 --- a/core/include/JellyfinQt/jellyfin.h +++ b/core/include/JellyfinQt/jellyfin.h @@ -1,16 +1,43 @@ +/* +Sailfin: a Jellyfin client written using Qt +Copyright (C) 2021 Chris Josten + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ #ifndef JELLYFIN_H #define JELLYFIN_H #include -#include "JellyfinQt/jellyfinapiclient.h" -#include "JellyfinQt/jellyfinapimodel.h" -#include "JellyfinQt/jellyfinitem.h" -#include "JellyfinQt/serverdiscoverymodel.h" -#include "JellyfinQt/jellyfinplaybackmanager.h" +// #include "DTO/dto.h" +#include "DTO/item.h" +#include "DTO/mediastream.h" +#include "DTO/nameguidpair.h" +#include "DTO/userdto.h" +#include "DTO/useritemdatadto.h" + +#include "apiclient.h" +#include "apimodel.h" +#include "serverdiscoverymodel.h" +#include "playbackmanager.h" +#include "remotedata.h" namespace Jellyfin { + void registerTypes(const char *uri = "nl.netsoj.chris.Jellyfin"); + } #endif // JELLYFIN_H diff --git a/core/include/JellyfinQt/jellyfinitem.h b/core/include/JellyfinQt/jellyfinitem.h deleted file mode 100644 index eb9e322..0000000 --- a/core/include/JellyfinQt/jellyfinitem.h +++ /dev/null @@ -1,550 +0,0 @@ -/* -Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef JELLYFIN_ITEM_H -#define JELLYFIN_ITEM_H - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include - -#include - -#include "jellyfinapiclient.h" -#include "jsonhelper.h" - -namespace Jellyfin { -class ApiClient; -/** - * @brief Base class for a serializable object. - * - * This class will be (de)serialized based on its properties. - * Note: it must have a constructor without arguments marked with Q_INVOKABLE - */ -class JsonSerializable : public QObject { - Q_OBJECT -public: - Q_INVOKABLE JsonSerializable(QObject *parent); - - /** - * @brief Sets this objects properties based on obj. - * @param obj The data to load into this object. - */ - void deserialize(const QJsonObject &obj); - QJsonObject serialize(bool capitalize = true) const; -private: - QVariant jsonToVariant(QMetaProperty prop, const QJsonValue &val, const QJsonObject &root); - QJsonValue variantToJson(const QVariant var) const; - QVariant deserializeQobject(const QJsonObject &obj, const QMetaProperty &prop); - - /** - * @brief Sets the first letter of the string to lower case (to make it camelCase). - * @param str The string to modify - * @return THe modified string - */ - static QString fromPascalCase(QString str); - /** - * @brief Sets the first letter of the string to uper case (to make it PascalCase). - * @param str The string to modify - * @return THe modified string - */ - static QString toPascalCase(QString st); - - static const QRegularExpression m_listExpression; - /** - * @brief Qt is doing weird. I'll keep track of the metatypes myself. - */ - QHash m_nameMetatypeMap; -}; - - -/** - * @brief An "interface" for a remote data source - * - * This class is basically a base class for JSON data that can be fetched from over the network. - * Subclasses should reimplement reload and call setStatus to update the QML part of the code - * appropiatly. - */ -class RemoteData : public JsonSerializable { - Q_OBJECT -public: - enum Status { - /// The data is unitialized and not loading either. - Uninitialised, - /// The data is being loaded over the network - Loading, - /// The data is ready, the properties in this object are up to date. - Ready, - /// An error has occurred while loading the data. See error() for more details. - Error - }; - Q_ENUM(Status) - - explicit RemoteData(QObject *parent = nullptr); - - Q_PROPERTY(ApiClient *apiClient MEMBER m_apiClient WRITE setApiClient NOTIFY apiClientChanged STORED false) - Q_PROPERTY(Status status READ status NOTIFY statusChanged STORED false) - Q_PROPERTY(QNetworkReply::NetworkError error READ error NOTIFY errorChanged STORED false) - Q_PROPERTY(QString errorString READ errorString NOTIFY errorStringChanged STORED false) - - Status status() const { return m_status; } - QNetworkReply::NetworkError error() const { return m_error; } - QString errorString() const { return m_errorString; } - - void setApiClient(ApiClient *newApiClient); -signals: - void statusChanged(Status newStatus); - void apiClientChanged(ApiClient *newApiClient); - void errorChanged(QNetworkReply::NetworkError newError); - void errorStringChanged(QString newErrorString); - /** - * @brief Convenience signal for status == RemoteData.Ready. - */ - void ready(); -public slots: - - /** - * @brief Overload this method to reimplement the fetching mechanism to - * populate the RemoteData with data from the server. - * - * The default implementation makes a GET request to getDataUrl() and parses the resulting JSON, - * which should be enough for most cases. Consider overriding getDataUrl() and - * canRelaod() if possible. Manual overrides need to make sure that - * they're calling setStatus(Status), setError(QNetworkReply::NetworkError) and - * setErrorString() to let the QML side know what this thing is up to. - */ - virtual void reload(); -protected: - /** - * @brief Subclasses should implement this to determine if they can - * load data from the server. - * - * Usage cases include checking if the - * required properties, such as the item id are set. - */ - virtual bool canReload() const = 0; - - /** - * @brief Construct the URL to fetch the data from. - * @return The URL to load data from. - */ - virtual QString getDataUrl() const = 0; - - void setStatus(Status newStatus); - void setError(QNetworkReply::NetworkError error); - void setErrorString(const QString &newErrorString); - ApiClient *m_apiClient = nullptr; -private: - Status m_status = Uninitialised; - QNetworkReply::NetworkError m_error = QNetworkReply::NoError; - QString m_errorString; -}; - -class NameGuidPair : public JsonSerializable { - Q_OBJECT -public: - Q_INVOKABLE NameGuidPair(QObject *parent = nullptr); - Q_PROPERTY(QString name MEMBER m_name NOTIFY nameChanged) - // Once again the Jellyfin id workaround - Q_PROPERTY(QString jellyfinId MEMBER m_id NOTIFY jellyfinIdChanged) -signals: - void nameChanged(const QString &newName); - void jellyfinIdChanged(const QString &newJellyfinId); -private: - QString m_name; - QString m_id; -}; - -class User : public RemoteData { - Q_OBJECT -public: - Q_INVOKABLE User(QObject *parent = nullptr); - - Q_PROPERTY(QString userId MEMBER m_userId WRITE setUserId NOTIFY userIdChanged) - Q_PROPERTY(QString name MEMBER m_name NOTIFY nameChanged) - Q_PROPERTY(QString primaryImageTag MEMBER m_primaryImageTag NOTIFY primaryImageTagChanged) - - void setUserId(const QString &newUserId) { - this->m_userId = newUserId; - emit userIdChanged(newUserId); - reload(); - } -signals: - void userIdChanged(const QString &newUserId); - void nameChanged(const QString &newName); - void primaryImageTagChanged(const QString &newPrimaryImageTag); -protected: - QString getDataUrl() const override; - bool canReload() const override; -private: - QString m_userId; - QString m_name; - QString m_primaryImageTag; -}; - -class MediaStream : public JsonSerializable { - Q_OBJECT -public: - Q_INVOKABLE explicit MediaStream(QObject *parent = nullptr); - MediaStream(const MediaStream &other); - bool operator==(const MediaStream &other); - virtual ~MediaStream() { qDebug() << "MediaStream destroyed"; } - - enum MediaStreamType { - Undefined, - Audio, - Video, - Subtitle, - EmbeddedImage - }; - Q_ENUM(MediaStreamType) - - Q_PROPERTY(QString codec MEMBER m_codec NOTIFY codecChanged) - Q_PROPERTY(QString codecTag MEMBER m_codecTag NOTIFY codecTagChanged) - Q_PROPERTY(QString language MEMBER m_language NOTIFY languageChanged) - Q_PROPERTY(QString displayTitle MEMBER m_displayTitle NOTIFY displayTitleChanged) - Q_PROPERTY(MediaStreamType type MEMBER m_type NOTIFY typeChanged) - Q_PROPERTY(int index MEMBER m_index NOTIFY indexChanged) -signals: - void codecChanged(const QString &newCodec); - void codecTagChanged(const QString &newCodecTag); - void languageChanged(const QString &newLanguage); - void displayTitleChanged(const QString &newDisplayTitle); - void typeChanged(MediaStreamType newType); - void indexChanged(int newIndex); -private: - QString m_codec; - QString m_codecTag; - QString m_language; - QString m_displayTitle; - MediaStreamType m_type = Undefined; - int m_index = -1; -}; - -class UserData : public JsonSerializable { - Q_OBJECT -public: - Q_INVOKABLE explicit UserData(QObject *parent = nullptr); - - Q_PROPERTY(double playedPercentage READ playedPercentage WRITE setPlayedPercentage RESET resetPlayedPercentage NOTIFY playedPercentageChanged) - Q_PROPERTY(qint64 playbackPositionTicks READ playbackPositionTicks WRITE setPlaybackPositionTicks NOTIFY playbackPositionTicksChanged) - Q_PROPERTY(bool isFavorite READ isFavorite WRITE setIsFavorite NOTIFY isFavoriteChanged) - Q_PROPERTY(bool likes READ likes WRITE setLikes RESET resetLikes NOTIFY likesChanged) - Q_PROPERTY(bool played READ played WRITE setPlayed NOTIFY playedChanged) - Q_PROPERTY(QString itemId READ itemId MEMBER m_itemId); - - double playedPercentage() const { return m_playedPercentage.value_or(0.0); } - void setPlayedPercentage(double newPlayedPercentage) { m_playedPercentage = newPlayedPercentage; emit playedPercentageChanged(newPlayedPercentage); } - void resetPlayedPercentage() { m_playedPercentage = std::nullopt; emit playedPercentageChanged(0.0); updateOnServer(); } - - qint64 playbackPositionTicks() const { return m_playbackPositionTicks; } - void setPlaybackPositionTicks(qint64 newPlaybackPositionTicks) { m_playbackPositionTicks = newPlaybackPositionTicks; emit playbackPositionTicksChanged(newPlaybackPositionTicks); } - - bool played() const { return m_played; } - void setPlayed(bool newPlayed) { m_played = newPlayed; emit playedChanged(newPlayed); updateOnServer(); } - - bool likes() const { return m_likes.value_or(false); } - void setLikes(bool newLikes) { m_likes = newLikes; emit likesChanged(newLikes); } - void resetLikes() { m_likes = std::nullopt; emit likesChanged(false); updateOnServer(); } - - bool isFavorite() const { return m_isFavorite; } - void setIsFavorite(bool newIsFavorite) { m_isFavorite = newIsFavorite; emit isFavoriteChanged(newIsFavorite); updateOnServer(); } - - const QString &itemId() const { return m_itemId; } -signals: - void playedPercentageChanged(double newPlayedPercentage); - void playbackPositionTicksChanged(qint64 playbackPositionTicks); - void isFavoriteChanged(bool newIsFavorite); - void likesChanged(bool newLikes); - void playedChanged(bool newPlayed); -public slots: - void updateOnServer(); - void onUpdated(QSharedPointer other); -private: - std::optional m_playedPercentage = std::nullopt; - qint64 m_playbackPositionTicks = 0; - bool m_isFavorite = false; - std::optional m_likes = std::nullopt; - bool m_played; - QString m_itemId; -}; - -class Item : public RemoteData { - Q_OBJECT -public: - Q_INVOKABLE explicit Item(QObject *parent = nullptr); - Item(QString itemId, ApiClient *apiClient, QObject *parent = nullptr); - - Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) - - // Based on https://github.com/jellyfin/jellyfin/blob/907695dec7fda152d0e17c1197637bc0e17c9928/MediaBrowser.Model/Dto/BaseItemDto.cs - // I copy, pasted and replaced. I feel like a Go programmer implementing generic containers. - // If this were D, I would've writed a compile-time C# parser to parse that source code at compile time, extract - // the properties and generate a class based on that. - // Doing that in C++ would be more difficult and I dislike qmake. Does it even support running programs at compile time? - // But here I am, using ctrl-C++ - - // Please keep the order of the properties the same as in the file linked above. - Q_PROPERTY(QString name MEMBER m_name NOTIFY nameChanged) - Q_PROPERTY(QString originalTitle MEMBER m_originalTitle NOTIFY originalTitleChanged) - Q_PROPERTY(QString serverId MEMBER m_serverId NOTIFY serverIdChanged) - Q_PROPERTY(QString etag MEMBER m_etag NOTIFY etagChanged) - Q_PROPERTY(QString sourceType MEMBER m_sourceType NOTIFY sourceTypeChanged) - Q_PROPERTY(QString playlistItemId MEMBER m_playlistItemId NOTIFY playlistItemIdChanged) - Q_PROPERTY(QDateTime dateCreated MEMBER m_dateCreated NOTIFY dateCreatedChanged) - Q_PROPERTY(QDateTime dateLastMediaAdded MEMBER m_dateLastMediaAdded NOTIFY dateLastMediaAddedChanged) - Q_PROPERTY(QString extraType MEMBER m_extraType NOTIFY extraTypeChanged) - Q_PROPERTY(int airsBeforeSeasonNumber READ airsBeforeSeasonNumber WRITE setAirsBeforeSeasonNumber NOTIFY airsBeforeSeasonNumberChanged) - Q_PROPERTY(int airsAfterSeasonNumber READ airsAfterSeasonNumber WRITE setAirsAfterSeasonNumber NOTIFY airsAfterSeasonNumberChanged) - Q_PROPERTY(int airsBeforeEpisodeNumber READ airsBeforeEpisodeNumber WRITE setAirsBeforeEpisodeNumber NOTIFY airsBeforeEpisodeNumberChanged) - Q_PROPERTY(bool canDelete READ canDelete WRITE setCanDelete NOTIFY canDeleteChanged) - Q_PROPERTY(bool canDownload READ canDownload WRITE setCanDownload NOTIFY canDownloadChanged) - Q_PROPERTY(bool hasSubtitles READ hasSubtitles WRITE setHasSubtitles NOTIFY hasSubtitlesChanged) - Q_PROPERTY(QString preferredMetadataLanguage MEMBER m_preferredMetadataLanguage NOTIFY preferredMetadataLanguageChanged) - Q_PROPERTY(QString preferredMetadataCountryCode MEMBER m_preferredMetadataCountryCode NOTIFY preferredMetadataCountryCodeChanged) - Q_PROPERTY(bool supportsSync READ supportsSync WRITE setSupportsSync NOTIFY supportsSyncChanged) - Q_PROPERTY(QString container MEMBER m_container NOTIFY containerChanged) - Q_PROPERTY(QString sortName MEMBER m_sortName NOTIFY sortNameChanged) - Q_PROPERTY(QString forcedSortName MEMBER m_forcedSortName NOTIFY forcedSortNameChanged) - //SKIP: Video3DFormat - Q_PROPERTY(QDateTime premiereData MEMBER m_premiereDate NOTIFY premiereDateChanged) - //SKIP: ExternalUrls - //SKIP: MediaSources - Q_PROPERTY(float criticRating READ criticRating WRITE setCriticRating NOTIFY criticRatingChanged) - Q_PROPERTY(QStringList productionLocations MEMBER m_productionLocations NOTIFY productionLocationsChanged) - - // Handpicked, important ones - Q_PROPERTY(qint64 runTimeTicks READ runTimeTicks WRITE setRunTimeTicks NOTIFY runTimeTicksChanged) - Q_PROPERTY(QString overview MEMBER m_overview NOTIFY overviewChanged) - Q_PROPERTY(int productionYear READ productionYear WRITE setProductionYear NOTIFY productionYearChanged) - Q_PROPERTY(int indexNumber READ indexNumber WRITE setIndexNumber NOTIFY indexNumberChanged) - Q_PROPERTY(int indexNumberEnd READ indexNumberEnd WRITE setIndexNumberEnd NOTIFY indexNumberEndChanged) - Q_PROPERTY(bool isFolder READ isFolder WRITE setIsFolder NOTIFY isFolderChanged) - Q_PROPERTY(QString type MEMBER m_type NOTIFY typeChanged) - Q_PROPERTY(QString parentBackdropItemId MEMBER m_parentBackdropItemId NOTIFY parentBackdropItemIdChanged) - Q_PROPERTY(QStringList parentBackdropImageTags MEMBER m_parentBackdropImageTags NOTIFY parentBackdropImageTagsChanged) - Q_PROPERTY(UserData *userData MEMBER m_userData NOTIFY userDataChanged) - Q_PROPERTY(int recursiveItemCount READ recursiveItemCount WRITE setRecursiveItemCount NOTIFY recursiveItemCountChanged) - Q_PROPERTY(int childCount READ childCount WRITE setChildCount NOTIFY childCountChanged) - Q_PROPERTY(QString albumArtist MEMBER m_albumArtist NOTIFY albumArtistChanged) - Q_PROPERTY(QList __list__albumArtists MEMBER __list__m_albumArtists NOTIFY albumArtistsChanged) - Q_PROPERTY(QVariantList albumArtists MEMBER m_albumArtists NOTIFY albumArtistsChanged STORED false) - Q_PROPERTY(QString seriesName MEMBER m_seriesName NOTIFY seriesNameChanged) - Q_PROPERTY(QString seasonName MEMBER m_seasonName NOTIFY seasonNameChanged) - Q_PROPERTY(QList __list__mediaStreams MEMBER __list__m_mediaStreams NOTIFY mediaStreamsChanged) - Q_PROPERTY(QVariantList mediaStreams MEMBER m_mediaStreams NOTIFY mediaStreamsChanged STORED false) - Q_PROPERTY(QStringList artists MEMBER m_artists NOTIFY artistsChanged) - // Why is this a QJsonObject? Well, because I couldn't be bothered to implement the deserialisations of - // a QHash at the moment. - Q_PROPERTY(QJsonObject imageTags MEMBER m_imageTags NOTIFY imageTagsChanged) - Q_PROPERTY(QStringList backdropImageTags MEMBER m_backdropImageTags NOTIFY backdropImageTagsChanged) - Q_PROPERTY(QJsonObject imageBlurHashes MEMBER m_imageBlurHashes NOTIFY imageBlurHashesChanged) - Q_PROPERTY(QString mediaType MEMBER m_mediaType READ mediaType NOTIFY mediaTypeChanged) - Q_PROPERTY(int width MEMBER m_width NOTIFY widthChanged) - Q_PROPERTY(int height MEMBER m_height NOTIFY heightChanged) - - QString jellyfinId() const { return m_id; } - void setJellyfinId(QString newId); - - int airsBeforeSeasonNumber() const { return m_airsBeforeSeasonNumber.value_or(-1); } - void setAirsBeforeSeasonNumber(int newAirsBeforeSeasonNumber) { m_airsBeforeSeasonNumber = newAirsBeforeSeasonNumber; emit airsBeforeSeasonNumberChanged(newAirsBeforeSeasonNumber); } - int airsAfterSeasonNumber() const { return m_airsAfterSeasonNumber.value_or(-1); } - void setAirsAfterSeasonNumber(int newAirsAfterSeasonNumber) { m_airsAfterSeasonNumber = newAirsAfterSeasonNumber; emit airsAfterSeasonNumberChanged(newAirsAfterSeasonNumber); } - int airsBeforeEpisodeNumber() const { return m_airsBeforeEpisodeNumber.value_or(-1); } - void setAirsBeforeEpisodeNumber(int newAirsBeforeEpisodeNumber) { m_airsBeforeEpisodeNumber = newAirsBeforeEpisodeNumber; emit airsBeforeEpisodeNumberChanged(newAirsBeforeEpisodeNumber); } - - bool canDelete() const { return m_canDelete.value_or(false); } - void setCanDelete(bool newCanDelete) { m_canDelete = newCanDelete; emit canDeleteChanged(newCanDelete); } - bool canDownload() const { return m_canDownload.value_or(false); } - void setCanDownload(bool newCanDownload) { m_canDownload = newCanDownload; emit canDownloadChanged(newCanDownload); } - bool hasSubtitles() const { return m_hasSubtitles.value_or(false); } - void setHasSubtitles(bool newHasSubtitles) { m_hasSubtitles = newHasSubtitles; emit hasSubtitlesChanged(newHasSubtitles); } - bool supportsSync() const { return m_supportsSync.value_or(false); } - void setSupportsSync(bool newSupportsSync) { m_supportsSync = newSupportsSync; emit supportsSyncChanged(newSupportsSync); } - float criticRating() const { return m_criticRating.value_or(std::nanf("")); } - void setCriticRating(float newCriticRating) { m_criticRating = newCriticRating; emit criticRatingChanged(newCriticRating); } - - // Handpicked, important ones - qint64 runTimeTicks() const { return m_runTimeTicks.value_or(-1); } - void setRunTimeTicks(qint64 newRunTimeTicks) { m_runTimeTicks = newRunTimeTicks; emit runTimeTicksChanged(newRunTimeTicks); } - int productionYear() const { return m_productionYear.value_or(-1); } - void setProductionYear(int newProductionYear) { m_productionYear = std::optional(newProductionYear); emit productionYearChanged(newProductionYear); } - int indexNumber() const { return m_indexNumber.value_or(-1); } - void setIndexNumber(int newIndexNumber) { m_indexNumber = std::optional(newIndexNumber); emit indexNumberChanged(newIndexNumber); } - int indexNumberEnd() const { return m_indexNumberEnd.value_or(-1); } - void setIndexNumberEnd(int newIndexNumberEnd) { m_indexNumberEnd = std::optional(newIndexNumberEnd); emit indexNumberEndChanged(newIndexNumberEnd); } - bool isFolder() const { return m_isFolder.value_or(false); } - void setIsFolder(bool newIsFolder) { m_isFolder = newIsFolder; emit isFolderChanged(newIsFolder); } - int recursiveItemCount() const { return m_recursiveItemCount.value_or(-1); } - void setRecursiveItemCount(int newRecursiveItemCount) { m_recursiveItemCount = newRecursiveItemCount; emit recursiveItemCountChanged(newRecursiveItemCount); } - int childCount() const { return m_childCount.value_or(-1); } - void setChildCount(int newChildCount) { m_childCount = newChildCount; emit childCountChanged(newChildCount); } - QString mediaType() const { return m_mediaType; } - - //QQmlListProperty mediaStreams() { return toReadOnlyQmlListProperty(m_mediaStreams); } - //QList mediaStreams() { return *reinterpret_cast *>(&m_mediaStreams); } - QVariantList mediaStreams() { QVariantList l; for (auto e: m_mediaStreams) l.append(QVariant::fromValue(e)); return l;} - -signals: - void jellyfinIdChanged(const QString &newId); - void nameChanged(const QString &newName); - void originalTitleChanged(const QString &newOriginalTitle); - void serverIdChanged(const QString &newServerId); - void etagChanged(const QString &newEtag); - void sourceTypeChanged(const QString &sourceType); - void playlistItemIdChanged(const QString &playlistItemIdChanged); - void dateCreatedChanged(QDateTime newDateCreatedChanged); - void dateLastMediaAddedChanged(QDateTime newDateLastMediaAdded); - void extraTypeChanged(const QString &newExtraType); - void airsBeforeSeasonNumberChanged(int newAirsBeforeSeasonNumber); - void airsAfterSeasonNumberChanged(int newAirsAfterSeasonNumber); - void airsBeforeEpisodeNumberChanged(int newAirsAfterEpisodeNumber); - bool canDeleteChanged(bool newCanDelete); - void canDownloadChanged(bool newCanDownload); - void hasSubtitlesChanged(bool newHasSubtitles); - void preferredMetadataLanguageChanged(const QString &newPreferredMetadataLanguage); - void preferredMetadataCountryCodeChanged(const QString &newPreferredMetadataCountryCode); - void supportsSyncChanged(bool newSupportsSync); - void containerChanged(const QString &newContainer); - void sortNameChanged(const QString &newSortName); - void forcedSortNameChanged(const QString &newForcedSortName); - void premiereDateChanged(QDateTime newPremiereDate); - void criticRatingChanged(float newCriticRating); - void productionLocationsChanged(QStringList newProductionLocations); - - // Handpicked, important ones - void runTimeTicksChanged(qint64 newRunTimeTicks); - void overviewChanged(const QString &newOverview); - void productionYearChanged(int newProductionYear); - void indexNumberChanged(int newIndexNumber); - void indexNumberEndChanged(int newIndexNumberEnd); - void isFolderChanged(bool newIsFolder); - void typeChanged(const QString &newType); - void parentBackdropItemIdChanged(); - void parentBackdropImageTagsChanged(); - void userDataChanged(UserData *newUserData); - void recursiveItemCountChanged(int newRecursiveItemCount); - void childCountChanged(int newChildCount); - void albumArtistChanged(const QString &newAlbumArtist); - void albumArtistsChanged(NameGuidPair *newAlbumArtists); - void seriesNameChanged(const QString &newSeriesName); - void seasonNameChanged(const QString &newSeasonName); - void mediaStreamsChanged(/*const QList &newMediaStreams*/); - void artistsChanged(const QStringList &newArtists); - void imageTagsChanged(); - void backdropImageTagsChanged(); - void imageBlurHashesChanged(); - void mediaTypeChanged(const QString &newMediaType); - void widthChanged(int newWidth); - void heightChanged(int newHeight); - -public slots: - void onUserDataChanged(const QString &itemId, QSharedPointer userData); -protected: - // Overrides - QString getDataUrl() const override; - bool canReload() const override; - - QString m_id = QStringLiteral(""); - QString m_name; - QString m_originalTitle; - QString m_serverId; - QString m_etag; - QString m_sourceType; - QString m_playlistItemId; - QDateTime m_dateCreated; - QDateTime m_dateLastMediaAdded; - QString m_extraType; - std::optional m_airsBeforeSeasonNumber = std::nullopt; - std::optional m_airsAfterSeasonNumber = std::nullopt; - std::optional m_airsBeforeEpisodeNumber = std::nullopt; - std::optional m_canDelete = std::nullopt; - std::optional m_canDownload = std::nullopt; - std::optional m_hasSubtitles = std::nullopt; - QString m_preferredMetadataLanguage; - QString m_preferredMetadataCountryCode; - std::optional m_supportsSync = std::nullopt; - QString m_container; - QString m_sortName; - QString m_forcedSortName; - QDateTime m_premiereDate; - std::optional m_criticRating = std::nullopt; - QStringList m_productionLocations; - - // Handpicked, important ones - std::optional m_runTimeTicks = std::nullopt; - QString m_overview; - std::optional m_productionYear = std::nullopt; - std::optional m_indexNumber = std::nullopt; - std::optional m_indexNumberEnd = std::nullopt; - std::optional m_isFolder = std::nullopt; - QString m_type; - QString m_parentBackdropItemId; - QStringList m_parentBackdropImageTags; - UserData *m_userData = nullptr; - std::optional m_recursiveItemCount = std::nullopt; - std::optional m_childCount = std::nullopt; - QString m_albumArtist; - QList __list__m_albumArtists; - QVariantList m_albumArtists; - QString m_seriesName; - QString m_seasonName; - QList __list__m_mediaStreams; - QVariantList m_mediaStreams; - QStringList m_artists; - QJsonObject m_imageTags; - QStringList m_backdropImageTags; - QJsonObject m_imageBlurHashes; - QString m_mediaType; - int m_width; - int m_height; - - template - QQmlListProperty toReadOnlyQmlListProperty(QList &list) { - return QQmlListProperty(this, std::addressof(list), &qlist_count, &qlist_at); - } - - template - static int qlist_count(QQmlListProperty *p) { - return reinterpret_cast *>(p->data)->count(); - } - - template - static T *qlist_at(QQmlListProperty *p, int idx) { - return reinterpret_cast *>(p->data)->at(idx); - } -}; - -void registerSerializableJsonTypes(const char* URI); -} - -#endif // JELLYFIN_ITEM_H diff --git a/core/include/JellyfinQt/jellyfinplaybackmanager.h b/core/include/JellyfinQt/jellyfinplaybackmanager.h deleted file mode 100644 index 41d372e..0000000 --- a/core/include/JellyfinQt/jellyfinplaybackmanager.h +++ /dev/null @@ -1,151 +0,0 @@ -/* -Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef JELLYFIN_MEDIA_SOURCE_H -#define JELLYFIN_MEDIA_SOURCE_H - -#include -#include -#include -#include -#include - -#include - -#include - - -#include "jellyfinapiclient.h" -#include "jellyfinitem.h" - -namespace Jellyfin { - -// Forward declaration of Jellyfin::Item found in jellyfinitem.h -class Item; -// Forward declaration of Jellyfin::ApiClient found in jellyfinapiclient.h -class ApiClient; - -/** - * @brief The PlaybackManager class manages the playback of Jellyfin items. It fetches streams based on Jellyfin items, posts - * the current playback state to the Jellyfin Server and so on. - */ -class PlaybackManager : public QObject, public QQmlParserStatus { - Q_OBJECT - Q_INTERFACES(QQmlParserStatus) -public: - enum PlayMethod { - Transcode, - Stream, - DirectPlay - }; - Q_ENUM(PlayMethod) - - explicit PlaybackManager(QObject *parent = nullptr); - Q_PROPERTY(ApiClient *apiClient MEMBER m_apiClient) - Q_PROPERTY(Item *item READ item WRITE setItem NOTIFY itemChanged) - Q_PROPERTY(QString streamUrl READ streamUrl NOTIFY streamUrlChanged) - Q_PROPERTY(bool autoOpen MEMBER m_autoOpen NOTIFY autoOpenChanged) - Q_PROPERTY(int audioIndex MEMBER m_audioIndex NOTIFY audioIndexChanged) - Q_PROPERTY(int subtitleIndex MEMBER m_subtitleIndex NOTIFY subtitleIndexChanged) - Q_PROPERTY(bool resumePlayback MEMBER m_resumePlayback NOTIFY resumePlaybackChanged) - Q_PROPERTY(QObject* mediaPlayer READ mediaPlayer WRITE setMediaPlayer NOTIFY mediaPlayerChanged) - Q_PROPERTY(PlayMethod playMethod READ playMethod NOTIFY playMethodChanged) - - Item *item() const { return m_item; } - void setItem(Item *newItem); - - QObject *mediaPlayer() const { - return m_qmlMediaPlayer; - } - void setMediaPlayer(QObject *qmlMediaPlayer); - - QString streamUrl() const { return m_streamUrl; } - PlayMethod playMethod() const { return m_playMethod; } -signals: - void itemChanged(Item *newItemId); - void streamUrlChanged(const QString &newStreamUrl); - void autoOpenChanged(bool autoOpen); - void audioIndexChanged(int audioIndex); - void subtitleIndexChanged(int subtitleIndex); - void mediaPlayerChanged(QObject *newMediaPlayer); - void resumePlaybackChanged(bool newResumePlayback); - void playMethodChanged(PlayMethod newPlayMethod); - -public slots: - void updatePlaybackInfo(); - /** - * @brief playItem Plays the item with the given id. This will construct the Jellyfin::Item internally - * and delete it later. - * @param itemId The id of the item to play. - */ - void playItem(const QString &itemId); -private slots: - void mediaPlayerStateChanged(QMediaPlayer::State newState); - void mediaPlayerPositionChanged(qint64 position); - void mediaPlayerMediaStatusChanged(QMediaPlayer::MediaStatus newStatus); - -private: - QTimer m_updateTimer; - ApiClient *m_apiClient = nullptr; - Item *m_item = nullptr; - QString m_streamUrl; - QString m_playSessionId; - int m_audioIndex = 0; - int m_subtitleIndex = -1; - qint64 m_resumePosition = 0; - qint64 m_oldPosition = 0; - qint64 m_stopPosition = 0; - QMediaPlayer::State m_oldState = QMediaPlayer::StoppedState; - PlayMethod m_playMethod = Transcode; - QObject *m_qmlMediaPlayer = nullptr; - QMediaPlayer * m_mediaPlayer = nullptr; - bool m_resumePlayback = true; - - bool m_qmlIsParsingComponent = false; - - /** - * @brief Whether to automatically open the livestream of the item; - */ - bool m_autoOpen = false; - - /** - * @brief Retrieves the URL of the stream to open. - */ - void fetchStreamUrl(); - void setStreamUrl(const QString &streamUrl); - - // Factor to multiply with when converting from milliseconds to ticks. - const static int MS_TICK_FACTOR = 10000; - - enum PlaybackInfoType { Started, Stopped, Progress }; - - /** - * @brief Posts the playback information - */ - void postPlaybackInfo(PlaybackInfoType type); - - void classBegin() override { - m_qmlIsParsingComponent = true; - } - void componentComplete() override; -}; - -} - -#endif // JELLYFIN_MEDIA_SOURCE_H diff --git a/core/include/JellyfinQt/jsonhelper.h b/core/include/JellyfinQt/jsonhelper.h index 8ea5fe5..dd4a8dc 100644 --- a/core/include/JellyfinQt/jsonhelper.h +++ b/core/include/JellyfinQt/jsonhelper.h @@ -1,3 +1,21 @@ +/* +Sailfin: a Jellyfin client written using Qt +Copyright (C) 2021 Chris Josten + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ #ifndef JSON_SERIALIZER_H #define JSON_SERIALIZER_H @@ -13,6 +31,7 @@ namespace Jellyfin { namespace JsonHelper { void convertToCamelCase(QJsonValueRef val); + void convertToCamelCase(QJsonValue &val); QString convertToCamelCaseHelper(const QString &str); }; diff --git a/core/include/JellyfinQt/playbackmanager.h b/core/include/JellyfinQt/playbackmanager.h new file mode 100644 index 0000000..08efa7b --- /dev/null +++ b/core/include/JellyfinQt/playbackmanager.h @@ -0,0 +1,229 @@ +/* +Sailfin: a Jellyfin client written using Qt +Copyright (C) 2021 Chris Josten + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef JELLYFIN_MEDIA_SOURCE_H +#define JELLYFIN_MEDIA_SOURCE_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include "remotedata.h" + +#include "apiclient.h" + + +namespace Jellyfin { + +// Forward declaration of Jellyfin::ApiClient found in jellyfinapiclient.h +class ApiClient; +class ItemModel; +class RemoteItem; + + +/** + * @brief The PlaybackManager class manages the playback of Jellyfin items. It fetches streams based on Jellyfin items, posts + * the current playback state to the Jellyfin Server, contains the actual media player and so on. + * + * The PlaybackManager actually keeps two mediaPlayers, m_mediaPlayer1 and m_mediaPlayer2. When one is playing, the other is + * preloading the next item in the queue. The current media player is pointed to by m_mediaPlayer. + */ +class PlaybackManager : public QObject, public QQmlParserStatus { + Q_OBJECT + Q_INTERFACES(QQmlParserStatus) +public: + enum PlayMethod { + Transcode, + Stream, + DirectPlay + }; + Q_ENUM(PlayMethod) + using FetchCallback = std::function; + + explicit PlaybackManager(QObject *parent = nullptr); + + Q_PROPERTY(ApiClient *apiClient MEMBER m_apiClient WRITE setApiClient) + Q_PROPERTY(QString streamUrl READ streamUrl NOTIFY streamUrlChanged) + Q_PROPERTY(bool autoOpen MEMBER m_autoOpen NOTIFY autoOpenChanged) + Q_PROPERTY(int audioIndex MEMBER m_audioIndex NOTIFY audioIndexChanged) + Q_PROPERTY(int subtitleIndex MEMBER m_subtitleIndex NOTIFY subtitleIndexChanged) + Q_PROPERTY(bool resumePlayback MEMBER m_resumePlayback NOTIFY resumePlaybackChanged) + Q_PROPERTY(PlayMethod playMethod READ playMethod NOTIFY playMethodChanged) + + // Current Item and queue informatoion + Q_PROPERTY(Item *item READ item NOTIFY itemChanged) + Q_PROPERTY(QAbstractItemModel *queue READ queue NOTIFY queueChanged) + Q_PROPERTY(int queueIndex READ queueIndex NOTIFY queueIndexChanged) + + // Current media player related property getters + Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged) + Q_PROPERTY(QMediaPlayer::Error error READ error NOTIFY errorChanged) + Q_PROPERTY(QString errorString READ errorString NOTIFY errorStringChanged) + Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged) + Q_PROPERTY(QObject* mediaObject READ mediaObject NOTIFY mediaObjectChanged) + Q_PROPERTY(QMediaPlayer::MediaStatus mediaStatus READ mediaStatus NOTIFY mediaStatusChanged) + Q_PROPERTY(QMediaPlayer::State playbackState READ playbackState NOTIFY playbackStateChanged) + Q_PROPERTY(qint64 position READ position NOTIFY positionChanged) + + BaseItemDto *item() const { return m_item->data(); } + void setApiClient(ApiClient *apiClient); + + QString streamUrl() const { return m_streamUrl; } + PlayMethod playMethod() const { return m_playMethod; } + QObject *mediaObject() const { return m_mediaPlayer; } + qint64 position() const { return m_mediaPlayer->position(); } + qint64 duration() const { return m_mediaPlayer->duration(); } + ItemModel *queue() const { return m_queue; } + int queueIndex() const { return m_queueIndex; } + + // Current media player related property getters + QMediaPlayer::State playbackState() const { return m_playbackState; } + QMediaPlayer::MediaStatus mediaStatus() const { return m_mediaPlayer->mediaStatus(); } + bool hasVideo() const { return m_mediaPlayer->isVideoAvailable(); } + QMediaPlayer::Error error () const { return m_mediaPlayer->error(); } + QString errorString() const { return m_mediaPlayer->errorString(); } +signals: + void itemChanged(BaseItemDto *newItemId); + void streamUrlChanged(const QString &newStreamUrl); + void autoOpenChanged(bool autoOpen); + void audioIndexChanged(int audioIndex); + void subtitleIndexChanged(int subtitleIndex); + void mediaPlayerChanged(QObject *newMediaPlayer); + void resumePlaybackChanged(bool newResumePlayback); + void playMethodChanged(PlayMethod newPlayMethod); + + // Current media player related property signals + void mediaObjectChanged(QObject *newMediaObject); + void positionChanged(qint64 newPosition); + void durationChanged(qint64 newDuration); + void queueChanged(ItemModel *newQue); + void queueIndexChanged(int newIndex); + void playbackStateChanged(QMediaPlayer::State newState); + void mediaStatusChanged(QMediaPlayer::MediaStatus newMediaStatus); + void hasVideoChanged(bool newHasVideo); + void errorChanged(QMediaPlayer::Error newError); + void errorStringChanged(const QString &newErrorString); +public slots: + /** + * @brief playItem Plays the item with the given id. This will construct the Jellyfin::Item internally + * and delete it later. + * @param itemId The id of the item to play. + */ + void playItem(const QString &itemId); + void playItemInList(ItemModel *itemList, int index); + void play() { m_mediaPlayer->play(); } + void pause() { m_mediaPlayer->pause(); } + void seek(qint64 pos) { m_mediaPlayer->setPosition(pos); } + void stop() { m_mediaPlayer->stop(); } + + /** + * @brief previous Play the previous track in the current playlist. + */ + void previous(); + + /** + * @brief next Play the next track in the current playlist. + */ + void next(); + +private slots: + void mediaPlayerStateChanged(QMediaPlayer::State newState); + void mediaPlayerPositionChanged(qint64 position); + void mediaPlayerMediaStatusChanged(QMediaPlayer::MediaStatus newStatus); + void mediaPlayerError(QMediaPlayer::Error error); + /** + * @brief updatePlaybackInfo Updates the Jellyfin server with the current playback progress etc. + */ + void updatePlaybackInfo(); + +private: + QTimer m_updateTimer; + ApiClient *m_apiClient = nullptr; + RemoteItem *m_item; + QString m_streamUrl; + QString m_playSessionId; + int m_audioIndex = 0; + int m_subtitleIndex = -1; + qint64 m_resumePosition = 0; + qint64 m_oldPosition = 0; + qint64 m_stopPosition = 0; + QMediaPlayer::State m_oldState = QMediaPlayer::StoppedState; + PlayMethod m_playMethod = Transcode; + QMediaPlayer::State m_playbackState = QMediaPlayer::StoppedState; + // Pointer to the current media player. + QMediaPlayer *m_mediaPlayer = nullptr; + + QMediaPlayer *m_mediaPlayer1; + QMediaPlayer *m_mediaPlayer2; + ItemModel *m_queue = nullptr; + int m_queueIndex = 0; + bool m_resumePlayback = true; + + void setItem(BaseItemDto *newItem); + void swapMediaPlayer(); + + bool m_qmlIsParsingComponent = false; + + /** + * @brief Whether to automatically open the livestream of the item; + */ + bool m_autoOpen = false; + + /** + * @brief Retrieves the URL of the stream to open. + */ + void fetchStreamUrl(const BaseItemDto *item, bool autoOpen, const FetchCallback &callback); + void fetchAndSetStreamUrl(const BaseItemDto *item); + void setStreamUrl(const QString &streamUrl); + void setPlaybackState(QMediaPlayer::State newState); + + BaseItemDto *nextItem(); + void setQueue(ItemModel *itemModel); + + // Factor to multiply with when converting from milliseconds to ticks. + const static int MS_TICK_FACTOR = 10000; + + enum PlaybackInfoType { Started, Stopped, Progress }; + + /** + * @brief Posts the playback information + */ + void postPlaybackInfo(PlaybackInfoType type); + + + void classBegin() override { + m_qmlIsParsingComponent = true; + } + void componentComplete() override; +}; + +} + +#endif // JELLYFIN_MEDIA_SOURCE_H diff --git a/core/include/JellyfinQt/remotedata.h b/core/include/JellyfinQt/remotedata.h new file mode 100644 index 0000000..5ba4394 --- /dev/null +++ b/core/include/JellyfinQt/remotedata.h @@ -0,0 +1,233 @@ +/* +Sailfin: a Jellyfin client written using Qt +Copyright (C) 2021 Chris Josten +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef JELLYFIN_DTO_DTO +#define JELLYFIN_DTO_DTO + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "apiclient.h" +#include "jsonhelper.h" + +#include "DTO/baseitemdto.h" + +namespace Jellyfin { +/** + * @brief Base class for a serializable object. + * + * This class will be (de)serialized based on its properties. + * Note: it must have a constructor without arguments marked with Q_INVOKABLE + */ +/*class JsonSerializable : public QObject { + Q_OBJECT +public: + Q_INVOKABLE JsonSerializable(QObject *parent); + virtual ~JsonSerializable(); + + void deserialize(const QJsonObject &obj); + QJsonObject serialize(bool capitalize = true) const; +private: + QVariant jsonToVariant(QMetaProperty prop, const QJsonValue &val, const QJsonObject &root); + QJsonValue variantToJson(const QVariant var) const; + QVariant deserializeQObject(const QJsonObject &obj, const QMetaProperty &prop); + + static QString fromPascalCase(QString str); + static QString toPascalCase(QString st); + + static const QRegularExpression m_listExpression; + static const QRegularExpression m_hashExpression; + static int findTypeIdForProperty(QString type); + QHash m_nameMetatypeMap; +};*/ + + +/** + * @brief An "interface" for a remote data source + * + * This class is basically a base class for JSON data that can be fetched from over the network. + * Subclasses should reimplement reload and call setStatus to update the QML part of the code + * appropiatly. + */ +class RemoteDataBase : public QObject, public QQmlParserStatus { + Q_OBJECT + Q_INTERFACES(QQmlParserStatus) +public: + enum Status { + /// The data is unitialized and not loading either. + Uninitialised, + /// The data is being loaded over the network + Loading, + /// The data is ready, the properties in this object are up to date. + Ready, + /// An error has occurred while loading the data. See error() for more details. + Error + }; + Q_ENUM(Status) + + explicit RemoteDataBase(QObject *parent = nullptr) : QObject(parent) {} + RemoteDataBase(ApiClient *apiClient, QObject *parent = nullptr) + : QObject(parent), m_apiClient(apiClient) {} + + Q_PROPERTY(ApiClient *apiClient MEMBER m_apiClient WRITE setApiClient NOTIFY apiClientChanged STORED false) + Q_PROPERTY(Status status READ status NOTIFY statusChanged STORED false) + Q_PROPERTY(QNetworkReply::NetworkError error READ error NOTIFY errorChanged STORED false) + Q_PROPERTY(QString errorString READ errorString NOTIFY errorStringChanged STORED false) + Q_PROPERTY(QStringList extraFields MEMBER m_extraFields WRITE setExtraFields NOTIFY extraFieldsChanged STORED false) + Q_PROPERTY(bool autoReload MEMBER m_autoReload NOTIFY autoReloadChanged) + + Status status() const { return m_status; } + QNetworkReply::NetworkError error() const { return m_error; } + QString errorString() const { return m_errorString; } + + void setApiClient(ApiClient *newApiClient); + void setExtraFields(const QStringList &extraFields); +signals: + void statusChanged(Status newStatus); + void apiClientChanged(ApiClient *newApiClient); + void errorChanged(QNetworkReply::NetworkError newError); + void errorStringChanged(QString newErrorString); + void extraFieldsChanged(const QStringList &newExtraFields); + void autoReloadChanged(bool newAutoReload); + /** + * @brief Convenience signal for status == RemoteData.Ready. + */ + void ready(); +public slots: + + /** + * @brief Overload this method to reimplement the fetching mechanism to + * populate the RemoteData with data from the server. + * + * The default implementation makes a GET request to getDataUrl() and parses the resulting JSON, + * which should be enough for most cases. Consider overriding getDataUrl() and + * canRelaod() if possible. Manual overrides need to make sure that + * they're calling setStatus(Status), setError(QNetworkReply::NetworkError) and + * setErrorString() to let the QML side know what this thing is up to. + */ + virtual void reload(); +protected: + /** + * @brief Subclasses should implement this to determine if they can + * load data from the server. + * + * Usage cases include checking if the + * required properties, such as the item id are set. + */ + virtual bool canReload() const; + + /** + * @brief Construct the URL to fetch the data from. + * @return The URL to load data from. + */ + virtual QString getDataUrl() const = 0; + virtual void dataFetched(QJsonObject data) = 0; + + void setStatus(Status newStatus); + void setError(QNetworkReply::NetworkError error); + void setErrorString(const QString &newErrorString); + + void classBegin() override { + m_isParsing = true; + } + + void componentComplete() override { + m_isParsing = false; + if (canReload()) { + reload(); + } + } + ApiClient *m_apiClient = nullptr; +protected: + // Returns true if this class is instantiated within QML and is still being parsed. + bool isQmlParsing() const { return m_isParsing; } +private: + Status m_status = Uninitialised; + QNetworkReply::NetworkError m_error = QNetworkReply::NoError; + QString m_errorString; + QStringList m_extraFields; + bool m_autoReload = true; + bool m_isParsing = false; +}; + +template +class RemoteData : public RemoteDataBase { +public: + RemoteData(QObject *parent = nullptr) : RemoteDataBase(parent) { + m_data = new T(this); + } + RemoteData(ApiClient *apiClient, QObject *parent = nullptr) + : RemoteDataBase(apiClient, parent) { + m_data = new T(this); + } + + T *data() const { return m_data; } + void setData(T *newData) { + newData->setParent(this); + m_data->deleteLater(); + m_data = newData; + emitDataChanged(); + } +protected: + T* m_data; + void dataFetched(QJsonObject data) override { + m_data->updateFromJSON(data); + } + virtual void emitDataChanged() = 0; +}; + +class RemoteItem : public RemoteData { + Q_OBJECT +public: + RemoteItem(QObject *parent = nullptr); + RemoteItem(QString id, ApiClient *apiClient, QObject *parent = nullptr); + Q_PROPERTY(DTO::BaseItemDto *data MEMBER m_data READ data NOTIFY dataChanged) + Q_PROPERTY(QString jellyfinId READ jellyfinId WRITE setJellyfinId NOTIFY jellyfinIdChanged) + + QString getDataUrl() const override { + return QString("/Users/") + m_apiClient->userId() + "/Items/" + m_data->jellyfinId(); + } + + bool canReload() const override { + return RemoteData::canReload() && !m_data->jellyfinId().isNull(); + } + + QString jellyfinId() const { return m_data->jellyfinId(); } + void setJellyfinId(QString newId) { + m_data->setJellyfinId(newId); + if (canReload()) reload(); + } +signals: + void dataChanged(DTO::BaseItemDto *newData); + void jellyfinIdChanged(const QString &newId); +protected: + void emitDataChanged() override { + emit dataChanged(m_data); + } +}; + +void registerRemoteTypes(const char *uri); +} // NS Jellyfin + +#endif // JELLYFIN_DTO_DTO_H diff --git a/core/include/JellyfinQt/serverdiscoverymodel.h b/core/include/JellyfinQt/serverdiscoverymodel.h index 95b8165..d069445 100644 --- a/core/include/JellyfinQt/serverdiscoverymodel.h +++ b/core/include/JellyfinQt/serverdiscoverymodel.h @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff --git a/core/include/JellyfinQt/support/loader.h b/core/include/JellyfinQt/support/loader.h new file mode 100644 index 0000000..e633b5b --- /dev/null +++ b/core/include/JellyfinQt/support/loader.h @@ -0,0 +1,90 @@ +#ifndef JELLYFIN_SUPPORT_LOADER_H +#define JELLYFIN_SUPPORT_LOADER_H + +#include +#include + +#include +#include +#include + +#include + +namespace Jellfyin { +namespace Support { + + +class LoadException : public std::runtime_error { +public: + explicit LoadException(const char *message) + : std::runtime_error(message) {} +}; + +static const int HTTP_TIMEOUT = 30000; // 30 seconds; + +/** + * Interface describing a way to load items. Used to abstract away + * the difference between loading from a cache or loading over the network. + * + * @tparam R the type of data that should be fetched, R for result. + * @tparam P the type of paramaters given, to determine which resource should + * be loaded. + */ +template +class Loader { + using ApiClient = Jellyfin::ApiClient; +public: + explicit Loader(ApiClient *apiClient) : m_apiClient(apiClient) {} + /** + * @brief load Loads the given resource. + * @param parameters Parameters to determine which resource should be loaded. + * @return The resource if successfull. + */ + virtual R load(const P ¶meters) const; + /** + * @brief Heuristic to determine if this resource can be loaded via this loaded. + * + * For example, a Loader that requires the network to be available should return false + * if the network is not available. + * @return True if this loader is available, false otherwise. + */ + virtual bool isAvailable() const; +protected: + ApiClient *m_apiClient; +}; + +template +class HttpLoader : public Loader { +public: + R load(const P ¶meters) const override { + QNetworkReply *reply = m_apiClient->get(url(parameters), query(parameters)); + QByteArray array; + while (!reply->atEnd()) { + if (!reply->waitForReadyRead(HTTP_TIMEOUT)) { + if (reply->error() == QNetworkReply::NoError) { + reply->deleteLater(); + throw LoadException("HTTP timeout"); + } + reply->deleteLater(); + throw LoadException("HTTP error"); + } + array.append(reply->readAll()); + } + reply->deleteLater(); + QJsonParseError error; + QJsonDocument document = QJsonDocument::fromJson(array, &error); + if (error.error != QJsonParseError::NoError) { + throw LoadException(error.errorString().toLocal8Bit().constData()); + } + return parse(document); + } +protected: + virtual const QString url(const P ¶meters) const; + virtual const QUrlQuery query(const P ¶meters) const; + virtual R parse(const QJsonObject &object) const; +}; + +} // NS Support +} // NS Jellyfin + +#endif // JELLYFIN_SUPPORT_LOADER_H diff --git a/core/include/JellyfinQt/jellyfinwebsocket.h b/core/include/JellyfinQt/websocket.h similarity index 95% rename from core/include/JellyfinQt/jellyfinwebsocket.h rename to core/include/JellyfinQt/websocket.h index ff1b2c6..c8490a2 100644 --- a/core/include/JellyfinQt/jellyfinwebsocket.h +++ b/core/include/JellyfinQt/websocket.h @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -31,12 +31,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #include -#include "jellyfinapiclient.h" -#include "jellyfinitem.h" +#include "apiclient.h" namespace Jellyfin { class ApiClient; -class UserData; + +namespace DTO { + class UserItemDataDto; + using UserData = UserItemDataDto; +} /** * @brief Keeps a connection with the Jellyfin server to receive real time updates. * diff --git a/core/openapi.json b/core/openapi.json new file mode 100644 index 0000000..e015c54 --- /dev/null +++ b/core/openapi.json @@ -0,0 +1,55380 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Jellyfin API", + "version": "v1", + "x-jellyfin-version": "10.7.0.0" + }, + "servers": [ + { + "url": "http://localhost" + } + ], + "paths": { + "/System/ActivityLog/Entries": { + "get": { + "tags": [ + "ActivityLog" + ], + "summary": "Gets activity log entries.", + "operationId": "GetLogEntries", + "parameters": [ + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minDate", + "in": "query", + "description": "Optional. The minimum date. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The minimum date. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "hasUserId", + "in": "query", + "description": "Optional. Filter log entries if it has user id, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter log entries if it has user id, or not.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Activity log returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActivityLogEntryQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ActivityLogEntryQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ActivityLogEntryQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Auth/Keys": { + "get": { + "tags": [ + "ApiKey" + ], + "summary": "Get all keys.", + "operationId": "GetKeys", + "responses": { + "200": { + "description": "Api keys retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthenticationInfoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/AuthenticationInfoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/AuthenticationInfoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "post": { + "tags": [ + "ApiKey" + ], + "summary": "Create a new api key.", + "operationId": "CreateKey", + "parameters": [ + { + "name": "app", + "in": "query", + "description": "Name of the app using the authentication key.", + "required": true, + "schema": { + "type": "string", + "description": "Name of the app using the authentication key." + } + } + ], + "responses": { + "204": { + "description": "Api key created." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Auth/Keys/{key}": { + "delete": { + "tags": [ + "ApiKey" + ], + "summary": "Remove an api key.", + "operationId": "RevokeKey", + "parameters": [ + { + "name": "key", + "in": "path", + "description": "The access token to delete.", + "required": true, + "schema": { + "type": "string", + "description": "The access token to delete." + } + } + ], + "responses": { + "204": { + "description": "Api key deleted." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Artists": { + "get": { + "tags": [ + "Artists" + ], + "summary": "Gets all artists from a given item, folder, or the entire library.", + "operationId": "GetArtists", + "parameters": [ + { + "name": "minCommunityRating", + "in": "query", + "description": "Optional filter by minimum community rating.", + "schema": { + "type": "number", + "description": "Optional filter by minimum community rating.", + "format": "double", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "Optional. Search term.", + "schema": { + "type": "string", + "description": "Optional. Search term.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "filters", + "in": "query", + "description": "Optional. Specify additional filters to apply.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFilter" + }, + "description": "Optional. Specify additional filters to apply.", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional filter by items that are marked as favorite, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are marked as favorite, or not.", + "nullable": true + } + }, + { + "name": "mediaTypes", + "in": "query", + "description": "Optional filter by MediaType. Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional filter by MediaType. Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "genres", + "in": "query", + "description": "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "genreIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "officialRatings", + "in": "query", + "description": "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "tags", + "in": "query", + "description": "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "years", + "in": "query", + "description": "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "description": "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional, include user data.", + "schema": { + "type": "boolean", + "description": "Optional, include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional, the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional, the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "person", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person.", + "schema": { + "type": "string", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person.", + "nullable": true + } + }, + { + "name": "personIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person ids.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified person ids.", + "nullable": true + } + }, + { + "name": "personTypes", + "in": "query", + "description": "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.", + "nullable": true + } + }, + { + "name": "studios", + "in": "query", + "description": "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "studioIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "User id.", + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "nameStartsWithOrGreater", + "in": "query", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "nullable": true + } + }, + { + "name": "nameStartsWith", + "in": "query", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "nullable": true + } + }, + { + "name": "nameLessThan", + "in": "query", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional, include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional, include image information in output.", + "default": true, + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Total record count.", + "schema": { + "type": "boolean", + "description": "Total record count.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Artists returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Artists/{name}": { + "get": { + "tags": [ + "Artists" + ], + "summary": "Gets an artist by name.", + "operationId": "GetArtistByName", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Studio name.", + "required": true, + "schema": { + "type": "string", + "description": "Studio name." + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Artist returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Artists/AlbumArtists": { + "get": { + "tags": [ + "Artists" + ], + "summary": "Gets all album artists from a given item, folder, or the entire library.", + "operationId": "GetAlbumArtists", + "parameters": [ + { + "name": "minCommunityRating", + "in": "query", + "description": "Optional filter by minimum community rating.", + "schema": { + "type": "number", + "description": "Optional filter by minimum community rating.", + "format": "double", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "Optional. Search term.", + "schema": { + "type": "string", + "description": "Optional. Search term.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "filters", + "in": "query", + "description": "Optional. Specify additional filters to apply.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFilter" + }, + "description": "Optional. Specify additional filters to apply.", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional filter by items that are marked as favorite, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are marked as favorite, or not.", + "nullable": true + } + }, + { + "name": "mediaTypes", + "in": "query", + "description": "Optional filter by MediaType. Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional filter by MediaType. Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "genres", + "in": "query", + "description": "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "genreIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "officialRatings", + "in": "query", + "description": "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "tags", + "in": "query", + "description": "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "years", + "in": "query", + "description": "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "description": "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional, include user data.", + "schema": { + "type": "boolean", + "description": "Optional, include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional, the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional, the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "person", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person.", + "schema": { + "type": "string", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person.", + "nullable": true + } + }, + { + "name": "personIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person ids.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified person ids.", + "nullable": true + } + }, + { + "name": "personTypes", + "in": "query", + "description": "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.", + "nullable": true + } + }, + { + "name": "studios", + "in": "query", + "description": "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "studioIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "User id.", + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "nameStartsWithOrGreater", + "in": "query", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "nullable": true + } + }, + { + "name": "nameStartsWith", + "in": "query", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "nullable": true + } + }, + { + "name": "nameLessThan", + "in": "query", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional, include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional, include image information in output.", + "default": true, + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Total record count.", + "schema": { + "type": "boolean", + "description": "Total record count.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Album artists returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Audio/{itemId}/stream": { + "get": { + "tags": [ + "Audio" + ], + "summary": "Gets an audio stream.", + "operationId": "GetAudioStream", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "query", + "description": "The audio container.", + "schema": { + "type": "string", + "description": "The audio container.", + "nullable": true + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Audio stream returned.", + "content": { + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + }, + "head": { + "tags": [ + "Audio" + ], + "summary": "Gets an audio stream.", + "operationId": "HeadAudioStream", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "query", + "description": "The audio container.", + "schema": { + "type": "string", + "description": "The audio container.", + "nullable": true + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Audio stream returned.", + "content": { + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/Audio/{itemId}/stream.{container}": { + "get": { + "tags": [ + "Audio" + ], + "summary": "Gets an audio stream.", + "operationId": "GetAudioStreamByContainer", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "path", + "description": "The audio container.", + "required": true, + "schema": { + "type": "string", + "description": "The audio container." + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment lenght.", + "schema": { + "type": "integer", + "description": "The segment lenght.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamporphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamporphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Audio stream returned.", + "content": { + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + }, + "head": { + "tags": [ + "Audio" + ], + "summary": "Gets an audio stream.", + "operationId": "HeadAudioStreamByContainer", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "path", + "description": "The audio container.", + "required": true, + "schema": { + "type": "string", + "description": "The audio container." + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment lenght.", + "schema": { + "type": "integer", + "description": "The segment lenght.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamporphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamporphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Audio stream returned.", + "content": { + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/Branding/Configuration": { + "get": { + "tags": [ + "Branding" + ], + "summary": "Gets branding configuration.", + "operationId": "GetBrandingOptions", + "responses": { + "200": { + "description": "Branding configuration returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BrandingOptions" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BrandingOptions" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BrandingOptions" + } + } + } + } + } + } + }, + "/Branding/Css": { + "get": { + "tags": [ + "Branding" + ], + "summary": "Gets branding css.", + "operationId": "GetBrandingCss", + "responses": { + "200": { + "description": "Branding css returned.", + "content": { + "text/css": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "string" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "string" + } + } + } + }, + "204": { + "description": "No branding css configured." + } + } + } + }, + "/Branding/Css.css": { + "get": { + "tags": [ + "Branding" + ], + "summary": "Gets branding css.", + "operationId": "GetBrandingCss_2", + "responses": { + "200": { + "description": "Branding css returned.", + "content": { + "text/css": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "string" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "string" + } + } + } + }, + "204": { + "description": "No branding css configured." + } + } + } + }, + "/Channels": { + "get": { + "tags": [ + "Channels" + ], + "summary": "Gets available channels.", + "operationId": "GetChannels", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "User Id to filter by. Use System.Guid.Empty to not filter by user.", + "schema": { + "type": "string", + "description": "User Id to filter by. Use System.Guid.Empty to not filter by user.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "supportsLatestItems", + "in": "query", + "description": "Optional. Filter by channels that support getting latest items.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by channels that support getting latest items.", + "nullable": true + } + }, + { + "name": "supportsMediaDeletion", + "in": "query", + "description": "Optional. Filter by channels that support media deletion.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by channels that support media deletion.", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional. Filter by channels that are favorite.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by channels that are favorite.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Channels returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Channels/{channelId}/Features": { + "get": { + "tags": [ + "Channels" + ], + "summary": "Get channel features.", + "operationId": "GetChannelFeatures", + "parameters": [ + { + "name": "channelId", + "in": "path", + "description": "Channel id.", + "required": true, + "schema": { + "type": "string", + "description": "Channel id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Channel features returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChannelFeatures" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ChannelFeatures" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ChannelFeatures" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Channels/{channelId}/Items": { + "get": { + "tags": [ + "Channels" + ], + "summary": "Get channel items.", + "operationId": "GetChannelItems", + "parameters": [ + { + "name": "channelId", + "in": "path", + "description": "Channel Id.", + "required": true, + "schema": { + "type": "string", + "description": "Channel Id.", + "format": "uuid" + } + }, + { + "name": "folderId", + "in": "query", + "description": "Optional. Folder Id.", + "schema": { + "type": "string", + "description": "Optional. Folder Id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. User Id.", + "schema": { + "type": "string", + "description": "Optional. User Id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Optional. Sort Order - Ascending,Descending.", + "schema": { + "type": "string", + "description": "Optional. Sort Order - Ascending,Descending.", + "nullable": true + } + }, + { + "name": "filters", + "in": "query", + "description": "Optional. Specify additional filters to apply.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFilter" + }, + "description": "Optional. Specify additional filters to apply.", + "nullable": true + } + }, + { + "name": "sortBy", + "in": "query", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "schema": { + "type": "string", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Channel items returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Channels/Features": { + "get": { + "tags": [ + "Channels" + ], + "summary": "Get all channel features.", + "operationId": "GetAllChannelFeatures", + "responses": { + "200": { + "description": "All channel features returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChannelFeatures" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChannelFeatures" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChannelFeatures" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Channels/Items/Latest": { + "get": { + "tags": [ + "Channels" + ], + "summary": "Gets latest channel items.", + "operationId": "GetLatestChannelItems", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "Optional. User Id.", + "schema": { + "type": "string", + "description": "Optional. User Id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "filters", + "in": "query", + "description": "Optional. Specify additional filters to apply.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFilter" + }, + "description": "Optional. Specify additional filters to apply.", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "channelIds", + "in": "query", + "description": "Optional. Specify one or more channel id's, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. Specify one or more channel id's, comma delimited.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Latest channel items returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Collections": { + "post": { + "tags": [ + "Collection" + ], + "summary": "Creates a new collection.", + "operationId": "CreateCollection", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the collection.", + "schema": { + "type": "string", + "description": "The name of the collection.", + "nullable": true + } + }, + { + "name": "ids", + "in": "query", + "description": "Item Ids to add to the collection.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Item Ids to add to the collection.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Optional. Create the collection within a specific folder.", + "schema": { + "type": "string", + "description": "Optional. Create the collection within a specific folder.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "isLocked", + "in": "query", + "description": "Whether or not to lock the new collection.", + "schema": { + "type": "boolean", + "description": "Whether or not to lock the new collection.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Collection created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionCreationResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/CollectionCreationResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/CollectionCreationResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Collections/{collectionId}/Items": { + "post": { + "tags": [ + "Collection" + ], + "summary": "Adds items to a collection.", + "operationId": "AddToCollection", + "parameters": [ + { + "name": "collectionId", + "in": "path", + "description": "The collection id.", + "required": true, + "schema": { + "type": "string", + "description": "The collection id.", + "format": "uuid" + } + }, + { + "name": "ids", + "in": "query", + "description": "Item ids, comma delimited.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Item ids, comma delimited." + } + } + ], + "responses": { + "204": { + "description": "Items added to collection." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "Collection" + ], + "summary": "Removes items from a collection.", + "operationId": "RemoveFromCollection", + "parameters": [ + { + "name": "collectionId", + "in": "path", + "description": "The collection id.", + "required": true, + "schema": { + "type": "string", + "description": "The collection id.", + "format": "uuid" + } + }, + { + "name": "ids", + "in": "query", + "description": "Item ids, comma delimited.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Item ids, comma delimited." + } + } + ], + "responses": { + "204": { + "description": "Items removed from collection." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/System/Configuration": { + "get": { + "tags": [ + "Configuration" + ], + "summary": "Gets application configuration.", + "operationId": "GetConfiguration", + "responses": { + "200": { + "description": "Application configuration returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ServerConfiguration" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ServerConfiguration" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ServerConfiguration" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "Configuration" + ], + "summary": "Updates application configuration.", + "operationId": "UpdateConfiguration", + "requestBody": { + "description": "Configuration.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ServerConfiguration" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ServerConfiguration" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ServerConfiguration" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Configuration updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/System/Configuration/{key}": { + "get": { + "tags": [ + "Configuration" + ], + "summary": "Gets a named configuration.", + "operationId": "GetNamedConfiguration", + "parameters": [ + { + "name": "key", + "in": "path", + "description": "Configuration key.", + "required": true, + "schema": { + "type": "string", + "description": "Configuration key." + } + } + ], + "responses": { + "200": { + "description": "Configuration returned.", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "Configuration" + ], + "summary": "Updates named configuration.", + "operationId": "UpdateNamedConfiguration", + "parameters": [ + { + "name": "key", + "in": "path", + "description": "Configuration key.", + "required": true, + "schema": { + "type": "string", + "description": "Configuration key." + } + } + ], + "responses": { + "204": { + "description": "Named configuration updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/System/Configuration/MetadataOptions/Default": { + "get": { + "tags": [ + "Configuration" + ], + "summary": "Gets a default MetadataOptions object.", + "operationId": "GetDefaultMetadataOptions", + "responses": { + "200": { + "description": "Metadata options returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataOptions" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/MetadataOptions" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/MetadataOptions" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/System/MediaEncoder/Path": { + "post": { + "tags": [ + "Configuration" + ], + "summary": "Updates the path to the media encoder.", + "operationId": "UpdateMediaEncoderPath", + "requestBody": { + "description": "Media encoder path form body.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaEncoderPathDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MediaEncoderPathDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/MediaEncoderPathDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Media encoder path updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated", + "DefaultAuthorization" + ] + } + ] + } + }, + "/web/ConfigurationPage": { + "get": { + "tags": [ + "Dashboard" + ], + "summary": "Gets a dashboard configuration page.", + "operationId": "GetDashboardConfigurationPage", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the page.", + "schema": { + "type": "string", + "description": "The name of the page.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "ConfigurationPage returned.", + "content": { + "text/html": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "application/x-javascript": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Plugin configuration page not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/web/ConfigurationPages": { + "get": { + "tags": [ + "Dashboard" + ], + "summary": "Gets the configuration pages.", + "operationId": "GetConfigurationPages", + "parameters": [ + { + "name": "enableInMainMenu", + "in": "query", + "description": "Whether to enable in the main menu.", + "schema": { + "type": "boolean", + "description": "Whether to enable in the main menu.", + "nullable": true + } + }, + { + "name": "pageType", + "in": "query", + "description": "The Jellyfin.Api.Models.ConfigurationPageInfo.", + "schema": { + "$ref": "#/components/schemas/ConfigurationPageType" + } + } + ], + "responses": { + "200": { + "description": "ConfigurationPages returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ConfigurationPageInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ConfigurationPageInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ConfigurationPageInfo" + } + } + } + } + }, + "404": { + "description": "Server still loading.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Devices": { + "get": { + "tags": [ + "Devices" + ], + "summary": "Get Devices.", + "operationId": "GetDevices", + "parameters": [ + { + "name": "supportsSync", + "in": "query", + "description": "Gets or sets a value indicating whether [supports synchronize].", + "schema": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [supports synchronize].", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Gets or sets the user identifier.", + "schema": { + "type": "string", + "description": "Gets or sets the user identifier.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Devices retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceInfoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/DeviceInfoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/DeviceInfoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "delete": { + "tags": [ + "Devices" + ], + "summary": "Deletes a device.", + "operationId": "DeleteDevice", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Device Id.", + "required": true, + "schema": { + "type": "string", + "description": "Device Id." + } + } + ], + "responses": { + "204": { + "description": "Device deleted." + }, + "404": { + "description": "Device not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Devices/Info": { + "get": { + "tags": [ + "Devices" + ], + "summary": "Get info for a device.", + "operationId": "GetDeviceInfo", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Device Id.", + "required": true, + "schema": { + "type": "string", + "description": "Device Id." + } + } + ], + "responses": { + "200": { + "description": "Device info retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/DeviceInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/DeviceInfo" + } + } + } + }, + "404": { + "description": "Device not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Devices/Options": { + "get": { + "tags": [ + "Devices" + ], + "summary": "Get options for a device.", + "operationId": "GetDeviceOptions", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Device Id.", + "required": true, + "schema": { + "type": "string", + "description": "Device Id." + } + } + ], + "responses": { + "200": { + "description": "Device options retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceOptions" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/DeviceOptions" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/DeviceOptions" + } + } + } + }, + "404": { + "description": "Device not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "post": { + "tags": [ + "Devices" + ], + "summary": "Update device options.", + "operationId": "UpdateDeviceOptions", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Device Id.", + "required": true, + "schema": { + "type": "string", + "description": "Device Id." + } + } + ], + "requestBody": { + "description": "Device Options.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceOptions" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DeviceOptions" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/DeviceOptions" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Device options updated." + }, + "404": { + "description": "Device not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/DisplayPreferences/{displayPreferencesId}": { + "get": { + "tags": [ + "DisplayPreferences" + ], + "summary": "Get Display Preferences.", + "operationId": "GetDisplayPreferences", + "parameters": [ + { + "name": "displayPreferencesId", + "in": "path", + "description": "Display preferences id.", + "required": true, + "schema": { + "type": "string", + "description": "Display preferences id." + } + }, + { + "name": "userId", + "in": "query", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "client", + "in": "query", + "description": "Client.", + "required": true, + "schema": { + "type": "string", + "description": "Client." + } + } + ], + "responses": { + "200": { + "description": "Display preferences retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DisplayPreferencesDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/DisplayPreferencesDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/DisplayPreferencesDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "DisplayPreferences" + ], + "summary": "Update Display Preferences.", + "operationId": "UpdateDisplayPreferences", + "parameters": [ + { + "name": "displayPreferencesId", + "in": "path", + "description": "Display preferences id.", + "required": true, + "schema": { + "type": "string", + "description": "Display preferences id." + } + }, + { + "name": "userId", + "in": "query", + "description": "User Id.", + "required": true, + "schema": { + "type": "string", + "description": "User Id.", + "format": "uuid" + } + }, + { + "name": "client", + "in": "query", + "description": "Client.", + "required": true, + "schema": { + "type": "string", + "description": "Client." + } + } + ], + "requestBody": { + "description": "New Display Preferences object.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DisplayPreferencesDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DisplayPreferencesDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/DisplayPreferencesDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Display preferences updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Dlna/ProfileInfos": { + "get": { + "tags": [ + "Dlna" + ], + "summary": "Get profile infos.", + "operationId": "GetProfileInfos", + "responses": { + "200": { + "description": "Device profile infos returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceProfileInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceProfileInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceProfileInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Dlna/Profiles": { + "post": { + "tags": [ + "Dlna" + ], + "summary": "Creates a profile.", + "operationId": "CreateProfile", + "requestBody": { + "description": "Device profile.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + } + } + }, + "responses": { + "204": { + "description": "Device profile created." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Dlna/Profiles/{profileId}": { + "get": { + "tags": [ + "Dlna" + ], + "summary": "Gets a single profile.", + "operationId": "GetProfile", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile Id.", + "required": true, + "schema": { + "type": "string", + "description": "Profile Id." + } + } + ], + "responses": { + "200": { + "description": "Device profile returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + } + } + }, + "404": { + "description": "Device profile not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "delete": { + "tags": [ + "Dlna" + ], + "summary": "Deletes a profile.", + "operationId": "DeleteProfile", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile id.", + "required": true, + "schema": { + "type": "string", + "description": "Profile id." + } + } + ], + "responses": { + "204": { + "description": "Device profile deleted." + }, + "404": { + "description": "Device profile not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "post": { + "tags": [ + "Dlna" + ], + "summary": "Updates a profile.", + "operationId": "UpdateProfile", + "parameters": [ + { + "name": "profileId", + "in": "path", + "description": "Profile id.", + "required": true, + "schema": { + "type": "string", + "description": "Profile id." + } + } + ], + "requestBody": { + "description": "Device profile.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + } + } + }, + "responses": { + "204": { + "description": "Device profile updated." + }, + "404": { + "description": "Device profile not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Dlna/Profiles/Default": { + "get": { + "tags": [ + "Dlna" + ], + "summary": "Gets the default profile.", + "operationId": "GetDefaultProfile", + "responses": { + "200": { + "description": "Default device profile returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/DeviceProfile" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Dlna/{serverId}/ConnectionManager": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets Dlna media receiver registrar xml.", + "operationId": "GetConnectionManager", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Dlna media receiver registrar xml returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/ConnectionManager/ConnectionManager": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets Dlna media receiver registrar xml.", + "operationId": "GetConnectionManager_2", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Dlna media receiver registrar xml returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/ConnectionManager/ConnectionManager.xml": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets Dlna media receiver registrar xml.", + "operationId": "GetConnectionManager_3", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Dlna media receiver registrar xml returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/ConnectionManager/Control": { + "post": { + "tags": [ + "DlnaServer" + ], + "summary": "Process a connection manager control request.", + "operationId": "ProcessConnectionManagerControlRequest", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Request processed.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/ContentDirectory": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets Dlna content directory xml.", + "operationId": "GetContentDirectory", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Dlna content directory returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/ContentDirectory/ContentDirectory": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets Dlna content directory xml.", + "operationId": "GetContentDirectory_2", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Dlna content directory returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/ContentDirectory/ContentDirectory.xml": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets Dlna content directory xml.", + "operationId": "GetContentDirectory_3", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Dlna content directory returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/ContentDirectory/Control": { + "post": { + "tags": [ + "DlnaServer" + ], + "summary": "Process a content directory control request.", + "operationId": "ProcessContentDirectoryControlRequest", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Request processed.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/description": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Get Description Xml.", + "operationId": "GetDescriptionXml", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Description xml returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/description.xml": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Get Description Xml.", + "operationId": "GetDescriptionXml_2", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Description xml returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/icons/{fileName}": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets a server icon.", + "operationId": "GetIconId", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + }, + { + "name": "fileName", + "in": "path", + "description": "The icon filename.", + "required": true, + "schema": { + "type": "string", + "description": "The icon filename." + } + } + ], + "responses": { + "200": { + "description": "Request processed.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/MediaReceiverRegistrar": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets Dlna media receiver registrar xml.", + "operationId": "GetMediaReceiverRegistrar", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Dlna media receiver registrar xml returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/MediaReceiverRegistrar/Control": { + "post": { + "tags": [ + "DlnaServer" + ], + "summary": "Process a media receiver registrar control request.", + "operationId": "ProcessMediaReceiverRegistrarControlRequest", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Request processed.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/MediaReceiverRegistrar/MediaReceiverRegistrar": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets Dlna media receiver registrar xml.", + "operationId": "GetMediaReceiverRegistrar_2", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Dlna media receiver registrar xml returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/{serverId}/MediaReceiverRegistrar/MediaReceiverRegistrar.xml": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets Dlna media receiver registrar xml.", + "operationId": "GetMediaReceiverRegistrar_3", + "parameters": [ + { + "name": "serverId", + "in": "path", + "description": "Server UUID.", + "required": true, + "schema": { + "type": "string", + "description": "Server UUID." + } + } + ], + "responses": { + "200": { + "description": "Dlna media receiver registrar xml returned.", + "content": { + "text/xml": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Dlna/icons/{fileName}": { + "get": { + "tags": [ + "DlnaServer" + ], + "summary": "Gets a server icon.", + "operationId": "GetIcon", + "parameters": [ + { + "name": "fileName", + "in": "path", + "description": "The icon filename.", + "required": true, + "schema": { + "type": "string", + "description": "The icon filename." + } + } + ], + "responses": { + "200": { + "description": "Request processed.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Not Found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "503": { + "description": "DLNA is disabled." + } + } + } + }, + "/Audio/{itemId}/hls1/{playlistId}/{segmentId}.{container}": { + "get": { + "tags": [ + "DynamicHls" + ], + "summary": "Gets a video stream using HTTP live streaming.", + "operationId": "GetHlsAudioSegment", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "playlistId", + "in": "path", + "description": "The playlist id.", + "required": true, + "schema": { + "type": "string", + "description": "The playlist id." + } + }, + { + "name": "segmentId", + "in": "path", + "description": "The segment id.", + "required": true, + "schema": { + "type": "integer", + "description": "The segment id.", + "format": "int32" + } + }, + { + "name": "container", + "in": "path", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv.", + "required": true, + "schema": { + "type": "string", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv." + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxStreamingBitrate", + "in": "query", + "description": "Optional. The maximum streaming bitrate.", + "schema": { + "type": "integer", + "description": "Optional. The maximum streaming bitrate.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Video stream returned.", + "content": { + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Audio/{itemId}/main.m3u8": { + "get": { + "tags": [ + "DynamicHls" + ], + "summary": "Gets an audio stream using HTTP live streaming.", + "operationId": "GetVariantHlsAudioPlaylist", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxStreamingBitrate", + "in": "query", + "description": "Optional. The maximum streaming bitrate.", + "schema": { + "type": "integer", + "description": "Optional. The maximum streaming bitrate.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Audio stream returned.", + "content": { + "application/x-mpegURL": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Audio/{itemId}/master.m3u8": { + "get": { + "tags": [ + "DynamicHls" + ], + "summary": "Gets an audio hls playlist stream.", + "operationId": "GetMasterHlsAudioPlaylist", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "required": true, + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version." + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxStreamingBitrate", + "in": "query", + "description": "Optional. The maximum streaming bitrate.", + "schema": { + "type": "integer", + "description": "Optional. The maximum streaming bitrate.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + }, + { + "name": "enableAdaptiveBitrateStreaming", + "in": "query", + "description": "Enable adaptive bitrate streaming.", + "schema": { + "type": "boolean", + "description": "Enable adaptive bitrate streaming.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Audio stream returned.", + "content": { + "application/x-mpegURL": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "head": { + "tags": [ + "DynamicHls" + ], + "summary": "Gets an audio hls playlist stream.", + "operationId": "HeadMasterHlsAudioPlaylist", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "required": true, + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version." + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxStreamingBitrate", + "in": "query", + "description": "Optional. The maximum streaming bitrate.", + "schema": { + "type": "integer", + "description": "Optional. The maximum streaming bitrate.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + }, + { + "name": "enableAdaptiveBitrateStreaming", + "in": "query", + "description": "Enable adaptive bitrate streaming.", + "schema": { + "type": "boolean", + "description": "Enable adaptive bitrate streaming.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Audio stream returned.", + "content": { + "application/x-mpegURL": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Videos/{itemId}/hls1/{playlistId}/{segmentId}.{container}": { + "get": { + "tags": [ + "DynamicHls" + ], + "summary": "Gets a video stream using HTTP live streaming.", + "operationId": "GetHlsVideoSegment", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "playlistId", + "in": "path", + "description": "The playlist id.", + "required": true, + "schema": { + "type": "string", + "description": "The playlist id." + } + }, + { + "name": "segmentId", + "in": "path", + "description": "The segment id.", + "required": true, + "schema": { + "type": "integer", + "description": "The segment id.", + "format": "int32" + } + }, + { + "name": "container", + "in": "path", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv.", + "required": true, + "schema": { + "type": "string", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv." + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment lenght.", + "schema": { + "type": "integer", + "description": "The segment lenght.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Video stream returned.", + "content": { + "video/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Videos/{itemId}/main.m3u8": { + "get": { + "tags": [ + "DynamicHls" + ], + "summary": "Gets a video stream using HTTP live streaming.", + "operationId": "GetVariantHlsVideoPlaylist", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Video stream returned.", + "content": { + "application/x-mpegURL": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Videos/{itemId}/master.m3u8": { + "get": { + "tags": [ + "DynamicHls" + ], + "summary": "Gets a video hls playlist stream.", + "operationId": "GetMasterHlsVideoPlaylist", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "required": true, + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version." + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + }, + { + "name": "enableAdaptiveBitrateStreaming", + "in": "query", + "description": "Enable adaptive bitrate streaming.", + "schema": { + "type": "boolean", + "description": "Enable adaptive bitrate streaming.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Video stream returned.", + "content": { + "application/x-mpegURL": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "head": { + "tags": [ + "DynamicHls" + ], + "summary": "Gets a video hls playlist stream.", + "operationId": "HeadMasterHlsVideoPlaylist", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "required": true, + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version." + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + }, + { + "name": "enableAdaptiveBitrateStreaming", + "in": "query", + "description": "Enable adaptive bitrate streaming.", + "schema": { + "type": "boolean", + "description": "Enable adaptive bitrate streaming.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Video stream returned.", + "content": { + "application/x-mpegURL": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Environment/DefaultDirectoryBrowser": { + "get": { + "tags": [ + "Environment" + ], + "summary": "Get Default directory browser.", + "operationId": "GetDefaultDirectoryBrowser", + "responses": { + "200": { + "description": "Default directory browser returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DefaultDirectoryBrowserInfoDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/DefaultDirectoryBrowserInfoDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/DefaultDirectoryBrowserInfoDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Environment/DirectoryContents": { + "get": { + "tags": [ + "Environment" + ], + "summary": "Gets the contents of a given directory in the file system.", + "operationId": "GetDirectoryContents", + "parameters": [ + { + "name": "path", + "in": "query", + "description": "The path.", + "required": true, + "schema": { + "type": "string", + "description": "The path." + } + }, + { + "name": "includeFiles", + "in": "query", + "description": "An optional filter to include or exclude files from the results. true/false.", + "schema": { + "type": "boolean", + "description": "An optional filter to include or exclude files from the results. true/false.", + "default": false + } + }, + { + "name": "includeDirectories", + "in": "query", + "description": "An optional filter to include or exclude folders from the results. true/false.", + "schema": { + "type": "boolean", + "description": "An optional filter to include or exclude folders from the results. true/false.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Directory contents returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileSystemEntryInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileSystemEntryInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileSystemEntryInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Environment/Drives": { + "get": { + "tags": [ + "Environment" + ], + "summary": "Gets available drives from the server's file system.", + "operationId": "GetDrives", + "responses": { + "200": { + "description": "List of entries returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileSystemEntryInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileSystemEntryInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileSystemEntryInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Environment/NetworkShares": { + "get": { + "tags": [ + "Environment" + ], + "summary": "Gets network paths.", + "operationId": "GetNetworkShares", + "responses": { + "200": { + "description": "Empty array returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileSystemEntryInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileSystemEntryInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileSystemEntryInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": true, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Environment/ParentPath": { + "get": { + "tags": [ + "Environment" + ], + "summary": "Gets the parent path of a given path.", + "operationId": "GetParentPath", + "parameters": [ + { + "name": "path", + "in": "query", + "description": "The path.", + "required": true, + "schema": { + "type": "string", + "description": "The path." + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "string" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "string" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Environment/ValidatePath": { + "post": { + "tags": [ + "Environment" + ], + "summary": "Validates path.", + "operationId": "ValidatePath", + "requestBody": { + "description": "Validate request object.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidatePathDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ValidatePathDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ValidatePathDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Path validated." + }, + "404": { + "description": "Path not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Items/Filters": { + "get": { + "tags": [ + "Filter" + ], + "summary": "Gets legacy query filters.", + "operationId": "GetQueryFiltersLegacy", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "Optional. User id.", + "schema": { + "type": "string", + "description": "Optional. User id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Optional. Parent id.", + "schema": { + "type": "string", + "description": "Optional. Parent id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "mediaTypes", + "in": "query", + "description": "Optional. Filter by MediaType. Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. Filter by MediaType. Allows multiple, comma delimited.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Legacy filters retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueryFiltersLegacy" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/QueryFiltersLegacy" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/QueryFiltersLegacy" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/Filters2": { + "get": { + "tags": [ + "Filter" + ], + "summary": "Gets query filters.", + "operationId": "GetQueryFilters", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "Optional. User id.", + "schema": { + "type": "string", + "description": "Optional. User id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Optional. Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Optional. Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "isAiring", + "in": "query", + "description": "Optional. Is item airing.", + "schema": { + "type": "boolean", + "description": "Optional. Is item airing.", + "nullable": true + } + }, + { + "name": "isMovie", + "in": "query", + "description": "Optional. Is item movie.", + "schema": { + "type": "boolean", + "description": "Optional. Is item movie.", + "nullable": true + } + }, + { + "name": "isSports", + "in": "query", + "description": "Optional. Is item sports.", + "schema": { + "type": "boolean", + "description": "Optional. Is item sports.", + "nullable": true + } + }, + { + "name": "isKids", + "in": "query", + "description": "Optional. Is item kids.", + "schema": { + "type": "boolean", + "description": "Optional. Is item kids.", + "nullable": true + } + }, + { + "name": "isNews", + "in": "query", + "description": "Optional. Is item news.", + "schema": { + "type": "boolean", + "description": "Optional. Is item news.", + "nullable": true + } + }, + { + "name": "isSeries", + "in": "query", + "description": "Optional. Is item series.", + "schema": { + "type": "boolean", + "description": "Optional. Is item series.", + "nullable": true + } + }, + { + "name": "recursive", + "in": "query", + "description": "Optional. Search recursive.", + "schema": { + "type": "boolean", + "description": "Optional. Search recursive.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Filters retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueryFilters" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/QueryFilters" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/QueryFilters" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Genres": { + "get": { + "tags": [ + "Genres" + ], + "summary": "Gets all genres from a given item, folder, or the entire library.", + "operationId": "GetGenres", + "parameters": [ + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "The search term.", + "schema": { + "type": "string", + "description": "The search term.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered in based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered in based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional filter by items that are marked as favorite, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are marked as favorite, or not.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional, the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional, the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "User id.", + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "nameStartsWithOrGreater", + "in": "query", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "nullable": true + } + }, + { + "name": "nameStartsWith", + "in": "query", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "nullable": true + } + }, + { + "name": "nameLessThan", + "in": "query", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional, include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional, include image information in output.", + "default": true, + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Optional. Include total record count.", + "schema": { + "type": "boolean", + "description": "Optional. Include total record count.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Genres returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Genres/{genreName}": { + "get": { + "tags": [ + "Genres" + ], + "summary": "Gets a genre, by name.", + "operationId": "GetGenre", + "parameters": [ + { + "name": "genreName", + "in": "path", + "description": "The genre name.", + "required": true, + "schema": { + "type": "string", + "description": "The genre name." + } + }, + { + "name": "userId", + "in": "query", + "description": "The user id.", + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Genres returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Audio/{itemId}/hls/{segmentId}/stream.aac": { + "get": { + "tags": [ + "HlsSegment" + ], + "summary": "Gets the specified audio segment for an audio item.", + "operationId": "GetHlsAudioSegmentLegacyAac", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id." + } + }, + { + "name": "segmentId", + "in": "path", + "description": "The segment id.", + "required": true, + "schema": { + "type": "string", + "description": "The segment id." + } + } + ], + "responses": { + "200": { + "description": "Hls audio segment returned.", + "content": { + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/Audio/{itemId}/hls/{segmentId}/stream.mp3": { + "get": { + "tags": [ + "HlsSegment" + ], + "summary": "Gets the specified audio segment for an audio item.", + "operationId": "GetHlsAudioSegmentLegacyMp3", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id." + } + }, + { + "name": "segmentId", + "in": "path", + "description": "The segment id.", + "required": true, + "schema": { + "type": "string", + "description": "The segment id." + } + } + ], + "responses": { + "200": { + "description": "Hls audio segment returned.", + "content": { + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/Videos/{itemId}/hls/{playlistId}/{segmentId}.{segmentContainer}": { + "get": { + "tags": [ + "HlsSegment" + ], + "summary": "Gets a hls video segment.", + "operationId": "GetHlsVideoSegmentLegacy", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id." + } + }, + { + "name": "playlistId", + "in": "path", + "description": "The playlist id.", + "required": true, + "schema": { + "type": "string", + "description": "The playlist id." + } + }, + { + "name": "segmentId", + "in": "path", + "description": "The segment id.", + "required": true, + "schema": { + "type": "string", + "description": "The segment id." + } + }, + { + "name": "segmentContainer", + "in": "path", + "description": "The segment container.", + "required": true, + "schema": { + "type": "string", + "description": "The segment container." + } + } + ], + "responses": { + "200": { + "description": "Hls video segment returned.", + "content": { + "video/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Hls segment not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Videos/{itemId}/hls/{playlistId}/stream.m3u8": { + "get": { + "tags": [ + "HlsSegment" + ], + "summary": "Gets a hls video playlist.", + "operationId": "GetHlsPlaylistLegacy", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The video id.", + "required": true, + "schema": { + "type": "string", + "description": "The video id." + } + }, + { + "name": "playlistId", + "in": "path", + "description": "The playlist id.", + "required": true, + "schema": { + "type": "string", + "description": "The playlist id." + } + } + ], + "responses": { + "200": { + "description": "Hls video playlist returned.", + "content": { + "application/x-mpegURL": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Videos/ActiveEncodings": { + "delete": { + "tags": [ + "HlsSegment" + ], + "summary": "Stops an active encoding.", + "operationId": "StopEncodingProcess", + "parameters": [ + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Encoding stopped successfully." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Artists/{name}/Images/{imageType}/{imageIndex}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get artist image by name.", + "operationId": "GetArtistImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Artist name.", + "required": true, + "schema": { + "type": "string", + "description": "Artist name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get artist image by name.", + "operationId": "HeadArtistImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Artist name.", + "required": true, + "schema": { + "type": "string", + "description": "Artist name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Genres/{name}/Images/{imageType}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get genre image by name.", + "operationId": "GetGenreImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Genre name.", + "required": true, + "schema": { + "type": "string", + "description": "Genre name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get genre image by name.", + "operationId": "HeadGenreImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Genre name.", + "required": true, + "schema": { + "type": "string", + "description": "Genre name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Genres/{name}/Images/{imageType}/{imageIndex}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get genre image by name.", + "operationId": "GetGenreImageByIndex", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Genre name.", + "required": true, + "schema": { + "type": "string", + "description": "Genre name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get genre image by name.", + "operationId": "HeadGenreImageByIndex", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Genre name.", + "required": true, + "schema": { + "type": "string", + "description": "Genre name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Items/{itemId}/Images": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get item image infos.", + "operationId": "GetItemImageInfos", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Item images returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageInfo" + } + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/Images/{imageType}": { + "delete": { + "tags": [ + "Image" + ], + "summary": "Delete an item's image.", + "operationId": "DeleteItemImage", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "The image index.", + "schema": { + "type": "integer", + "description": "The image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Image deleted." + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "post": { + "tags": [ + "Image" + ], + "summary": "Set item image.", + "operationId": "SetItemImage", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + } + ], + "responses": { + "204": { + "description": "Image saved." + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "get": { + "tags": [ + "Image" + ], + "summary": "Gets the item's image.", + "operationId": "GetItemImage", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Drawing.ImageFormat of the returned image.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Gets the item's image.", + "operationId": "HeadItemImage", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Drawing.ImageFormat of the returned image.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Items/{itemId}/Images/{imageType}/{imageIndex}": { + "delete": { + "tags": [ + "Image" + ], + "summary": "Delete an item's image.", + "operationId": "DeleteItemImageByIndex", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "The image index.", + "required": true, + "schema": { + "type": "integer", + "description": "The image index.", + "format": "int32" + } + } + ], + "responses": { + "204": { + "description": "Image deleted." + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "post": { + "tags": [ + "Image" + ], + "summary": "Set item image.", + "operationId": "SetItemImageByIndex", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "(Unused) Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "(Unused) Image index.", + "format": "int32" + } + } + ], + "responses": { + "204": { + "description": "Image saved." + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "get": { + "tags": [ + "Image" + ], + "summary": "Gets the item's image.", + "operationId": "GetItemImageByIndex", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Drawing.ImageFormat of the returned image.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Gets the item's image.", + "operationId": "HeadItemImageByIndex", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Drawing.ImageFormat of the returned image.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Items/{itemId}/Images/{imageType}/{imageIndex}/{tag}/{format}/{maxWidth}/{maxHeight}/{percentPlayed}/{unplayedCount}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Gets the item's image.", + "operationId": "GetItemImage2", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "maxWidth", + "in": "path", + "description": "The maximum image width to return.", + "required": true, + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32" + } + }, + { + "name": "maxHeight", + "in": "path", + "description": "The maximum image height to return.", + "required": true, + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32" + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "tag", + "in": "path", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "required": true, + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers." + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "format", + "in": "path", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "path", + "description": "Optional. Percent to render for the percent played overlay.", + "required": true, + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double" + } + }, + { + "name": "unplayedCount", + "in": "path", + "description": "Optional. Unplayed count overlay to render.", + "required": true, + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32" + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Gets the item's image.", + "operationId": "HeadItemImage2", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "maxWidth", + "in": "path", + "description": "The maximum image width to return.", + "required": true, + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32" + } + }, + { + "name": "maxHeight", + "in": "path", + "description": "The maximum image height to return.", + "required": true, + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32" + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "tag", + "in": "path", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "required": true, + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers." + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "format", + "in": "path", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "path", + "description": "Optional. Percent to render for the percent played overlay.", + "required": true, + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double" + } + }, + { + "name": "unplayedCount", + "in": "path", + "description": "Optional. Unplayed count overlay to render.", + "required": true, + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32" + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Items/{itemId}/Images/{imageType}/{imageIndex}/Index": { + "post": { + "tags": [ + "Image" + ], + "summary": "Updates the index for an item image.", + "operationId": "UpdateItemImageIndex", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Old image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Old image index.", + "format": "int32" + } + }, + { + "name": "newIndex", + "in": "query", + "description": "New image index.", + "schema": { + "type": "integer", + "description": "New image index.", + "format": "int32" + } + } + ], + "responses": { + "204": { + "description": "Image index updated." + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/MusicGenres/{name}/Images/{imageType}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get music genre image by name.", + "operationId": "GetMusicGenreImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Music genre name.", + "required": true, + "schema": { + "type": "string", + "description": "Music genre name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get music genre image by name.", + "operationId": "HeadMusicGenreImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Music genre name.", + "required": true, + "schema": { + "type": "string", + "description": "Music genre name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/MusicGenres/{name}/Images/{imageType}/{imageIndex}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get music genre image by name.", + "operationId": "GetMusicGenreImageByIndex", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Music genre name.", + "required": true, + "schema": { + "type": "string", + "description": "Music genre name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get music genre image by name.", + "operationId": "HeadMusicGenreImageByIndex", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Music genre name.", + "required": true, + "schema": { + "type": "string", + "description": "Music genre name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Persons/{name}/Images/{imageType}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get person image by name.", + "operationId": "GetPersonImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Person name.", + "required": true, + "schema": { + "type": "string", + "description": "Person name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get person image by name.", + "operationId": "HeadPersonImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Person name.", + "required": true, + "schema": { + "type": "string", + "description": "Person name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Persons/{name}/Images/{imageType}/{imageIndex}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get person image by name.", + "operationId": "GetPersonImageByIndex", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Person name.", + "required": true, + "schema": { + "type": "string", + "description": "Person name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get person image by name.", + "operationId": "HeadPersonImageByIndex", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Person name.", + "required": true, + "schema": { + "type": "string", + "description": "Person name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Studios/{name}/Images/{imageType}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get studio image by name.", + "operationId": "GetStudioImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Studio name.", + "required": true, + "schema": { + "type": "string", + "description": "Studio name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get studio image by name.", + "operationId": "HeadStudioImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Studio name.", + "required": true, + "schema": { + "type": "string", + "description": "Studio name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Studios/{name}/Images/{imageType}/{imageIndex}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get studio image by name.", + "operationId": "GetStudioImageByIndex", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Studio name.", + "required": true, + "schema": { + "type": "string", + "description": "Studio name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get studio image by name.", + "operationId": "HeadStudioImageByIndex", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Studio name.", + "required": true, + "schema": { + "type": "string", + "description": "Studio name." + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Users/{userId}/Images/{imageType}": { + "post": { + "tags": [ + "Image" + ], + "summary": "Sets the user image.", + "operationId": "PostUserImage", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User Id.", + "required": true, + "schema": { + "type": "string", + "description": "User Id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "(Unused) Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "index", + "in": "query", + "description": "(Unused) Image index.", + "schema": { + "type": "integer", + "description": "(Unused) Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Image updated." + }, + "403": { + "description": "User does not have permission to delete the image.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "Image" + ], + "summary": "Delete the user's image.", + "operationId": "DeleteUserImage", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User Id.", + "required": true, + "schema": { + "type": "string", + "description": "User Id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "(Unused) Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "index", + "in": "query", + "description": "(Unused) Image index.", + "schema": { + "type": "integer", + "description": "(Unused) Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Image deleted." + }, + "403": { + "description": "User does not have permission to delete the image.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "get": { + "tags": [ + "Image" + ], + "summary": "Get user profile image.", + "operationId": "GetUserImage", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get user profile image.", + "operationId": "HeadUserImage", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + }, + { + "name": "imageIndex", + "in": "query", + "description": "Image index.", + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Users/{userId}/Images/{imageType}/{imageIndex}": { + "get": { + "tags": [ + "Image" + ], + "summary": "Get user profile image.", + "operationId": "GetUserImageByIndex", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "head": { + "tags": [ + "Image" + ], + "summary": "Get user profile image.", + "operationId": "HeadUserImageByIndex", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageIndex", + "in": "path", + "description": "Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "Image index.", + "format": "int32" + } + }, + { + "name": "tag", + "in": "query", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "schema": { + "type": "string", + "description": "Optional. Supply the cache tag from the item object to receive strong caching headers.", + "nullable": true + } + }, + { + "name": "format", + "in": "query", + "description": "Determines the output format of the image - original,gif,jpg,png.", + "schema": { + "$ref": "#/components/schemas/ImageFormat" + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "The maximum image width to return.", + "schema": { + "type": "integer", + "description": "The maximum image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "The maximum image height to return.", + "schema": { + "type": "integer", + "description": "The maximum image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "percentPlayed", + "in": "query", + "description": "Optional. Percent to render for the percent played overlay.", + "schema": { + "type": "number", + "description": "Optional. Percent to render for the percent played overlay.", + "format": "double", + "nullable": true + } + }, + { + "name": "unplayedCount", + "in": "query", + "description": "Optional. Unplayed count overlay to render.", + "schema": { + "type": "integer", + "description": "Optional. Unplayed count overlay to render.", + "format": "int32", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "The fixed image width to return.", + "schema": { + "type": "integer", + "description": "The fixed image width to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "The fixed image height to return.", + "schema": { + "type": "integer", + "description": "The fixed image height to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "quality", + "in": "query", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "schema": { + "type": "integer", + "description": "Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cropWhitespace", + "in": "query", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "schema": { + "type": "boolean", + "description": "Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.", + "nullable": true + } + }, + { + "name": "addPlayedIndicator", + "in": "query", + "description": "Optional. Add a played indicator.", + "schema": { + "type": "boolean", + "description": "Optional. Add a played indicator.", + "nullable": true + } + }, + { + "name": "blur", + "in": "query", + "description": "Optional. Blur image.", + "schema": { + "type": "integer", + "description": "Optional. Blur image.", + "format": "int32", + "nullable": true + } + }, + { + "name": "backgroundColor", + "in": "query", + "description": "Optional. Apply a background color for transparent images.", + "schema": { + "type": "string", + "description": "Optional. Apply a background color for transparent images.", + "nullable": true + } + }, + { + "name": "foregroundLayer", + "in": "query", + "description": "Optional. Apply a foreground layer on top of the image.", + "schema": { + "type": "string", + "description": "Optional. Apply a foreground layer on top of the image.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Image stream returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Users/{userId}/Images/{imageType}/{index}": { + "post": { + "tags": [ + "Image" + ], + "summary": "Sets the user image.", + "operationId": "PostUserImageByIndex", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User Id.", + "required": true, + "schema": { + "type": "string", + "description": "User Id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "(Unused) Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "index", + "in": "path", + "description": "(Unused) Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "(Unused) Image index.", + "format": "int32" + } + } + ], + "responses": { + "204": { + "description": "Image updated." + }, + "403": { + "description": "User does not have permission to delete the image.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "Image" + ], + "summary": "Delete the user's image.", + "operationId": "DeleteUserImageByIndex", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User Id.", + "required": true, + "schema": { + "type": "string", + "description": "User Id.", + "format": "uuid" + } + }, + { + "name": "imageType", + "in": "path", + "description": "(Unused) Image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "index", + "in": "path", + "description": "(Unused) Image index.", + "required": true, + "schema": { + "type": "integer", + "description": "(Unused) Image index.", + "format": "int32" + } + } + ], + "responses": { + "204": { + "description": "Image deleted." + }, + "403": { + "description": "User does not have permission to delete the image.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Images/General": { + "get": { + "tags": [ + "ImageByName" + ], + "summary": "Get all general images.", + "operationId": "GetGeneralImages", + "responses": { + "200": { + "description": "Retrieved list of images.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageByNameInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageByNameInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageByNameInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Images/General/{name}/{type}": { + "get": { + "tags": [ + "ImageByName" + ], + "summary": "Get General Image.", + "operationId": "GetGeneralImage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "The name of the image.", + "required": true, + "schema": { + "type": "string", + "description": "The name of the image." + } + }, + { + "name": "type", + "in": "path", + "description": "Image Type (primary, backdrop, logo, etc).", + "required": true, + "schema": { + "type": "string", + "description": "Image Type (primary, backdrop, logo, etc)." + } + } + ], + "responses": { + "200": { + "description": "Image stream retrieved.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Image not found.", + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Images/MediaInfo": { + "get": { + "tags": [ + "ImageByName" + ], + "summary": "Get all media info images.", + "operationId": "GetMediaInfoImages", + "responses": { + "200": { + "description": "Image list retrieved.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageByNameInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageByNameInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageByNameInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Images/MediaInfo/{theme}/{name}": { + "get": { + "tags": [ + "ImageByName" + ], + "summary": "Get media info image.", + "operationId": "GetMediaInfoImage", + "parameters": [ + { + "name": "theme", + "in": "path", + "description": "The theme to get the image from.", + "required": true, + "schema": { + "type": "string", + "description": "The theme to get the image from." + } + }, + { + "name": "name", + "in": "path", + "description": "The name of the image.", + "required": true, + "schema": { + "type": "string", + "description": "The name of the image." + } + } + ], + "responses": { + "200": { + "description": "Image stream retrieved.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Image not found.", + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Images/Ratings": { + "get": { + "tags": [ + "ImageByName" + ], + "summary": "Get all general images.", + "operationId": "GetRatingImages", + "responses": { + "200": { + "description": "Retrieved list of images.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageByNameInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageByNameInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageByNameInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Images/Ratings/{theme}/{name}": { + "get": { + "tags": [ + "ImageByName" + ], + "summary": "Get rating image.", + "operationId": "GetRatingImage", + "parameters": [ + { + "name": "theme", + "in": "path", + "description": "The theme to get the image from.", + "required": true, + "schema": { + "type": "string", + "description": "The theme to get the image from." + } + }, + { + "name": "name", + "in": "path", + "description": "The name of the image.", + "required": true, + "schema": { + "type": "string", + "description": "The name of the image." + } + } + ], + "responses": { + "200": { + "description": "Image stream retrieved.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Image not found.", + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Albums/{id}/InstantMix": { + "get": { + "tags": [ + "InstantMix" + ], + "summary": "Creates an instant playlist based on a given song.", + "operationId": "GetInstantMixFromAlbum", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Instant playlist returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Artists/{id}/InstantMix": { + "get": { + "tags": [ + "InstantMix" + ], + "summary": "Creates an instant playlist based on a given song.", + "operationId": "GetInstantMixFromArtists", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Instant playlist returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{id}/InstantMix": { + "get": { + "tags": [ + "InstantMix" + ], + "summary": "Creates an instant playlist based on a given song.", + "operationId": "GetInstantMixFromItem", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Instant playlist returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/MusicGenres/{id}/InstantMix": { + "get": { + "tags": [ + "InstantMix" + ], + "summary": "Creates an instant playlist based on a given song.", + "operationId": "GetInstantMixFromMusicGenres", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Instant playlist returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/MusicGenres/{name}/InstantMix": { + "get": { + "tags": [ + "InstantMix" + ], + "summary": "Creates an instant playlist based on a given song.", + "operationId": "GetInstantMixFromMusicGenre", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "The genre name.", + "required": true, + "schema": { + "type": "string", + "description": "The genre name." + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Instant playlist returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Playlists/{id}/InstantMix": { + "get": { + "tags": [ + "InstantMix" + ], + "summary": "Creates an instant playlist based on a given song.", + "operationId": "GetInstantMixFromPlaylist", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Instant playlist returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Songs/{id}/InstantMix": { + "get": { + "tags": [ + "InstantMix" + ], + "summary": "Creates an instant playlist based on a given song.", + "operationId": "GetInstantMixFromSong", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Instant playlist returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/ExternalIdInfos": { + "get": { + "tags": [ + "ItemLookup" + ], + "summary": "Get the item's external id info.", + "operationId": "GetExternalIdInfos", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "External id info retrieved.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExternalIdInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExternalIdInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExternalIdInfo" + } + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/Apply/{itemId}": { + "post": { + "tags": [ + "ItemLookup" + ], + "summary": "Applies search criteria to an item and refreshes metadata.", + "operationId": "ApplySearchCriteria", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "replaceAllImages", + "in": "query", + "description": "Optional. Whether or not to replace all images. Default: True.", + "schema": { + "type": "boolean", + "description": "Optional. Whether or not to replace all images. Default: True.", + "default": true + } + } + ], + "requestBody": { + "description": "The remote search result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Item metadata refreshed." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/Book": { + "post": { + "tags": [ + "ItemLookup" + ], + "summary": "Get book remote search.", + "operationId": "GetBookRemoteSearchResults", + "requestBody": { + "description": "Remote search query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BookInfoRemoteSearchQuery" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/BookInfoRemoteSearchQuery" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/BookInfoRemoteSearchQuery" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Book remote search executed.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/BoxSet": { + "post": { + "tags": [ + "ItemLookup" + ], + "summary": "Get box set remote search.", + "operationId": "GetBoxSetRemoteSearchResults", + "requestBody": { + "description": "Remote search query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BoxSetInfoRemoteSearchQuery" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/BoxSetInfoRemoteSearchQuery" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/BoxSetInfoRemoteSearchQuery" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Box set remote search executed.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/Image": { + "get": { + "tags": [ + "ItemLookup" + ], + "summary": "Gets a remote image.", + "operationId": "GetRemoteSearchImage", + "parameters": [ + { + "name": "imageUrl", + "in": "query", + "description": "The image url.", + "required": true, + "schema": { + "type": "string", + "description": "The image url." + } + }, + { + "name": "providerName", + "in": "query", + "description": "The provider name.", + "required": true, + "schema": { + "type": "string", + "description": "The provider name." + } + } + ], + "responses": { + "200": { + "description": "Remote image retrieved.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/Movie": { + "post": { + "tags": [ + "ItemLookup" + ], + "summary": "Get movie remote search.", + "operationId": "GetMovieRemoteSearchResults", + "requestBody": { + "description": "Remote search query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieInfoRemoteSearchQuery" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MovieInfoRemoteSearchQuery" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/MovieInfoRemoteSearchQuery" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Movie remote search executed.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/MusicAlbum": { + "post": { + "tags": [ + "ItemLookup" + ], + "summary": "Get music album remote search.", + "operationId": "GetMusicAlbumRemoteSearchResults", + "requestBody": { + "description": "Remote search query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlbumInfoRemoteSearchQuery" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AlbumInfoRemoteSearchQuery" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/AlbumInfoRemoteSearchQuery" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Music album remote search executed.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/MusicArtist": { + "post": { + "tags": [ + "ItemLookup" + ], + "summary": "Get music artist remote search.", + "operationId": "GetMusicArtistRemoteSearchResults", + "requestBody": { + "description": "Remote search query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArtistInfoRemoteSearchQuery" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ArtistInfoRemoteSearchQuery" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ArtistInfoRemoteSearchQuery" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Music artist remote search executed.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/MusicVideo": { + "post": { + "tags": [ + "ItemLookup" + ], + "summary": "Get music video remote search.", + "operationId": "GetMusicVideoRemoteSearchResults", + "requestBody": { + "description": "Remote search query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MusicVideoInfoRemoteSearchQuery" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MusicVideoInfoRemoteSearchQuery" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/MusicVideoInfoRemoteSearchQuery" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Music video remote search executed.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/Person": { + "post": { + "tags": [ + "ItemLookup" + ], + "summary": "Get person remote search.", + "operationId": "GetPersonRemoteSearchResults", + "requestBody": { + "description": "Remote search query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PersonLookupInfoRemoteSearchQuery" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/PersonLookupInfoRemoteSearchQuery" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/PersonLookupInfoRemoteSearchQuery" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Person remote search executed.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/Series": { + "post": { + "tags": [ + "ItemLookup" + ], + "summary": "Get series remote search.", + "operationId": "GetSeriesRemoteSearchResults", + "requestBody": { + "description": "Remote search query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesInfoRemoteSearchQuery" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SeriesInfoRemoteSearchQuery" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SeriesInfoRemoteSearchQuery" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Series remote search executed.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/RemoteSearch/Trailer": { + "post": { + "tags": [ + "ItemLookup" + ], + "summary": "Get trailer remote search.", + "operationId": "GetTrailerRemoteSearchResults", + "requestBody": { + "description": "Remote search query.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrailerInfoRemoteSearchQuery" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TrailerInfoRemoteSearchQuery" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/TrailerInfoRemoteSearchQuery" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Trailer remote search executed.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/Refresh": { + "post": { + "tags": [ + "ItemRefresh" + ], + "summary": "Refreshes metadata for an item.", + "operationId": "Post", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "metadataRefreshMode", + "in": "query", + "description": "(Optional) Specifies the metadata refresh mode.", + "schema": { + "$ref": "#/components/schemas/MetadataRefreshMode" + } + }, + { + "name": "imageRefreshMode", + "in": "query", + "description": "(Optional) Specifies the image refresh mode.", + "schema": { + "$ref": "#/components/schemas/MetadataRefreshMode" + } + }, + { + "name": "replaceAllMetadata", + "in": "query", + "description": "(Optional) Determines if metadata should be replaced. Only applicable if mode is FullRefresh.", + "schema": { + "type": "boolean", + "description": "(Optional) Determines if metadata should be replaced. Only applicable if mode is FullRefresh.", + "default": false + } + }, + { + "name": "replaceAllImages", + "in": "query", + "description": "(Optional) Determines if images should be replaced. Only applicable if mode is FullRefresh.", + "schema": { + "type": "boolean", + "description": "(Optional) Determines if images should be replaced. Only applicable if mode is FullRefresh.", + "default": false + } + } + ], + "responses": { + "204": { + "description": "Item metadata refresh queued." + }, + "404": { + "description": "Item to refresh not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items": { + "get": { + "tags": [ + "Items" + ], + "summary": "Gets items based on a query.", + "operationId": "GetItems", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "The user id supplied as query parameter.", + "schema": { + "type": "string", + "description": "The user id supplied as query parameter.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "maxOfficialRating", + "in": "query", + "description": "Optional filter by maximum official rating (PG, PG-13, TV-MA, etc).", + "schema": { + "type": "string", + "description": "Optional filter by maximum official rating (PG, PG-13, TV-MA, etc).", + "nullable": true + } + }, + { + "name": "hasThemeSong", + "in": "query", + "description": "Optional filter by items with theme songs.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with theme songs.", + "nullable": true + } + }, + { + "name": "hasThemeVideo", + "in": "query", + "description": "Optional filter by items with theme videos.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with theme videos.", + "nullable": true + } + }, + { + "name": "hasSubtitles", + "in": "query", + "description": "Optional filter by items with subtitles.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with subtitles.", + "nullable": true + } + }, + { + "name": "hasSpecialFeature", + "in": "query", + "description": "Optional filter by items with special features.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with special features.", + "nullable": true + } + }, + { + "name": "hasTrailer", + "in": "query", + "description": "Optional filter by items with trailers.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with trailers.", + "nullable": true + } + }, + { + "name": "adjacentTo", + "in": "query", + "description": "Optional. Return items that are siblings of a supplied item.", + "schema": { + "type": "string", + "description": "Optional. Return items that are siblings of a supplied item.", + "nullable": true + } + }, + { + "name": "parentIndexNumber", + "in": "query", + "description": "Optional filter by parent index number.", + "schema": { + "type": "integer", + "description": "Optional filter by parent index number.", + "format": "int32", + "nullable": true + } + }, + { + "name": "hasParentalRating", + "in": "query", + "description": "Optional filter by items that have or do not have a parental rating.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have or do not have a parental rating.", + "nullable": true + } + }, + { + "name": "isHd", + "in": "query", + "description": "Optional filter by items that are HD or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are HD or not.", + "nullable": true + } + }, + { + "name": "is4K", + "in": "query", + "description": "Optional filter by items that are 4K or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are 4K or not.", + "nullable": true + } + }, + { + "name": "locationTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LocationType" + }, + "description": "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "excludeLocationTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on the LocationType. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LocationType" + }, + "description": "Optional. If specified, results will be filtered based on the LocationType. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "isMissing", + "in": "query", + "description": "Optional filter by items that are missing episodes or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are missing episodes or not.", + "nullable": true + } + }, + { + "name": "isUnaired", + "in": "query", + "description": "Optional filter by items that are unaired episodes or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are unaired episodes or not.", + "nullable": true + } + }, + { + "name": "minCommunityRating", + "in": "query", + "description": "Optional filter by minimum community rating.", + "schema": { + "type": "number", + "description": "Optional filter by minimum community rating.", + "format": "double", + "nullable": true + } + }, + { + "name": "minCriticRating", + "in": "query", + "description": "Optional filter by minimum critic rating.", + "schema": { + "type": "number", + "description": "Optional filter by minimum critic rating.", + "format": "double", + "nullable": true + } + }, + { + "name": "minPremiereDate", + "in": "query", + "description": "Optional. The minimum premiere date. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The minimum premiere date. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "minDateLastSaved", + "in": "query", + "description": "Optional. The minimum last saved date. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The minimum last saved date. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "minDateLastSavedForUser", + "in": "query", + "description": "Optional. The minimum last saved date for the current user. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The minimum last saved date for the current user. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "maxPremiereDate", + "in": "query", + "description": "Optional. The maximum premiere date. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The maximum premiere date. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "hasOverview", + "in": "query", + "description": "Optional filter by items that have an overview or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have an overview or not.", + "nullable": true + } + }, + { + "name": "hasImdbId", + "in": "query", + "description": "Optional filter by items that have an imdb id or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have an imdb id or not.", + "nullable": true + } + }, + { + "name": "hasTmdbId", + "in": "query", + "description": "Optional filter by items that have a tmdb id or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have a tmdb id or not.", + "nullable": true + } + }, + { + "name": "hasTvdbId", + "in": "query", + "description": "Optional filter by items that have a tvdb id or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have a tvdb id or not.", + "nullable": true + } + }, + { + "name": "excludeItemIds", + "in": "query", + "description": "Optional. If specified, results will be filtered by excluding item ids. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered by excluding item ids. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "recursive", + "in": "query", + "description": "When searching within folders, this determines whether or not the search will be recursive. true/false.", + "schema": { + "type": "boolean", + "description": "When searching within folders, this determines whether or not the search will be recursive. true/false.", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "Optional. Filter based on a search term.", + "schema": { + "type": "string", + "description": "Optional. Filter based on a search term.", + "nullable": true + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort Order - Ascending,Descending.", + "schema": { + "type": "string", + "description": "Sort Order - Ascending,Descending.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on the item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on the item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "filters", + "in": "query", + "description": "Optional. Specify additional filters to apply. This allows multiple, comma delimited. Options: IsFolder, IsNotFolder, IsUnplayed, IsPlayed, IsFavorite, IsResumable, Likes, Dislikes.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFilter" + }, + "description": "Optional. Specify additional filters to apply. This allows multiple, comma delimited. Options: IsFolder, IsNotFolder, IsUnplayed, IsPlayed, IsFavorite, IsResumable, Likes, Dislikes.", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional filter by items that are marked as favorite, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are marked as favorite, or not.", + "nullable": true + } + }, + { + "name": "mediaTypes", + "in": "query", + "description": "Optional filter by MediaType. Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional filter by MediaType. Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "imageTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on those containing image types. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. If specified, results will be filtered based on those containing image types. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "sortBy", + "in": "query", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "schema": { + "type": "string", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "nullable": true + } + }, + { + "name": "isPlayed", + "in": "query", + "description": "Optional filter by items that are played, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are played, or not.", + "nullable": true + } + }, + { + "name": "genres", + "in": "query", + "description": "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "officialRatings", + "in": "query", + "description": "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "tags", + "in": "query", + "description": "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "years", + "in": "query", + "description": "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "description": "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional, include user data.", + "schema": { + "type": "boolean", + "description": "Optional, include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional, the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional, the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "person", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person.", + "schema": { + "type": "string", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person.", + "nullable": true + } + }, + { + "name": "personIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified person id.", + "nullable": true + } + }, + { + "name": "personTypes", + "in": "query", + "description": "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.", + "nullable": true + } + }, + { + "name": "studios", + "in": "query", + "description": "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "artists", + "in": "query", + "description": "Optional. If specified, results will be filtered based on artists. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on artists. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "excludeArtistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on artist id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on artist id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "artistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified artist id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified artist id.", + "nullable": true + } + }, + { + "name": "albumArtistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified album artist id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified album artist id.", + "nullable": true + } + }, + { + "name": "contributingArtistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified contributing artist id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified contributing artist id.", + "nullable": true + } + }, + { + "name": "albums", + "in": "query", + "description": "Optional. If specified, results will be filtered based on album. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on album. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "albumIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on album id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on album id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "ids", + "in": "query", + "description": "Optional. If specific items are needed, specify a list of item id's to retrieve. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specific items are needed, specify a list of item id's to retrieve. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "videoTypes", + "in": "query", + "description": "Optional filter by VideoType (videofile, dvd, bluray, iso). Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VideoType" + }, + "description": "Optional filter by VideoType (videofile, dvd, bluray, iso). Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "minOfficialRating", + "in": "query", + "description": "Optional filter by minimum official rating (PG, PG-13, TV-MA, etc).", + "schema": { + "type": "string", + "description": "Optional filter by minimum official rating (PG, PG-13, TV-MA, etc).", + "nullable": true + } + }, + { + "name": "isLocked", + "in": "query", + "description": "Optional filter by items that are locked.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are locked.", + "nullable": true + } + }, + { + "name": "isPlaceHolder", + "in": "query", + "description": "Optional filter by items that are placeholders.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are placeholders.", + "nullable": true + } + }, + { + "name": "hasOfficialRating", + "in": "query", + "description": "Optional filter by items that have official ratings.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have official ratings.", + "nullable": true + } + }, + { + "name": "collapseBoxSetItems", + "in": "query", + "description": "Whether or not to hide items behind their boxsets.", + "schema": { + "type": "boolean", + "description": "Whether or not to hide items behind their boxsets.", + "nullable": true + } + }, + { + "name": "minWidth", + "in": "query", + "description": "Optional. Filter by the minimum width of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the minimum width of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minHeight", + "in": "query", + "description": "Optional. Filter by the minimum height of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the minimum height of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "Optional. Filter by the maximum width of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the maximum width of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "Optional. Filter by the maximum height of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the maximum height of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "is3D", + "in": "query", + "description": "Optional filter by items that are 3D, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are 3D, or not.", + "nullable": true + } + }, + { + "name": "seriesStatus", + "in": "query", + "description": "Optional filter by Series Status. Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeriesStatus" + }, + "description": "Optional filter by Series Status. Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "nameStartsWithOrGreater", + "in": "query", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "nullable": true + } + }, + { + "name": "nameStartsWith", + "in": "query", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "nullable": true + } + }, + { + "name": "nameLessThan", + "in": "query", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "nullable": true + } + }, + { + "name": "studioIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "genreIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Optional. Enable the total record count.", + "schema": { + "type": "boolean", + "description": "Optional. Enable the total record count.", + "default": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional, include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional, include image information in output.", + "default": true, + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "Library" + ], + "summary": "Deletes items from the library and filesystem.", + "operationId": "DeleteItems", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "The item ids.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "The item ids.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Items deleted." + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Items": { + "get": { + "tags": [ + "Items" + ], + "summary": "Gets items based on a query.", + "operationId": "GetItemsByUserId", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id supplied as query parameter.", + "required": true, + "schema": { + "type": "string", + "description": "The user id supplied as query parameter.", + "format": "uuid" + } + }, + { + "name": "maxOfficialRating", + "in": "query", + "description": "Optional filter by maximum official rating (PG, PG-13, TV-MA, etc).", + "schema": { + "type": "string", + "description": "Optional filter by maximum official rating (PG, PG-13, TV-MA, etc).", + "nullable": true + } + }, + { + "name": "hasThemeSong", + "in": "query", + "description": "Optional filter by items with theme songs.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with theme songs.", + "nullable": true + } + }, + { + "name": "hasThemeVideo", + "in": "query", + "description": "Optional filter by items with theme videos.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with theme videos.", + "nullable": true + } + }, + { + "name": "hasSubtitles", + "in": "query", + "description": "Optional filter by items with subtitles.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with subtitles.", + "nullable": true + } + }, + { + "name": "hasSpecialFeature", + "in": "query", + "description": "Optional filter by items with special features.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with special features.", + "nullable": true + } + }, + { + "name": "hasTrailer", + "in": "query", + "description": "Optional filter by items with trailers.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with trailers.", + "nullable": true + } + }, + { + "name": "adjacentTo", + "in": "query", + "description": "Optional. Return items that are siblings of a supplied item.", + "schema": { + "type": "string", + "description": "Optional. Return items that are siblings of a supplied item.", + "nullable": true + } + }, + { + "name": "parentIndexNumber", + "in": "query", + "description": "Optional filter by parent index number.", + "schema": { + "type": "integer", + "description": "Optional filter by parent index number.", + "format": "int32", + "nullable": true + } + }, + { + "name": "hasParentalRating", + "in": "query", + "description": "Optional filter by items that have or do not have a parental rating.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have or do not have a parental rating.", + "nullable": true + } + }, + { + "name": "isHd", + "in": "query", + "description": "Optional filter by items that are HD or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are HD or not.", + "nullable": true + } + }, + { + "name": "is4K", + "in": "query", + "description": "Optional filter by items that are 4K or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are 4K or not.", + "nullable": true + } + }, + { + "name": "locationTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LocationType" + }, + "description": "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "excludeLocationTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on the LocationType. This allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LocationType" + }, + "description": "Optional. If specified, results will be filtered based on the LocationType. This allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "isMissing", + "in": "query", + "description": "Optional filter by items that are missing episodes or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are missing episodes or not.", + "nullable": true + } + }, + { + "name": "isUnaired", + "in": "query", + "description": "Optional filter by items that are unaired episodes or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are unaired episodes or not.", + "nullable": true + } + }, + { + "name": "minCommunityRating", + "in": "query", + "description": "Optional filter by minimum community rating.", + "schema": { + "type": "number", + "description": "Optional filter by minimum community rating.", + "format": "double", + "nullable": true + } + }, + { + "name": "minCriticRating", + "in": "query", + "description": "Optional filter by minimum critic rating.", + "schema": { + "type": "number", + "description": "Optional filter by minimum critic rating.", + "format": "double", + "nullable": true + } + }, + { + "name": "minPremiereDate", + "in": "query", + "description": "Optional. The minimum premiere date. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The minimum premiere date. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "minDateLastSaved", + "in": "query", + "description": "Optional. The minimum last saved date. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The minimum last saved date. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "minDateLastSavedForUser", + "in": "query", + "description": "Optional. The minimum last saved date for the current user. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The minimum last saved date for the current user. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "maxPremiereDate", + "in": "query", + "description": "Optional. The maximum premiere date. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The maximum premiere date. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "hasOverview", + "in": "query", + "description": "Optional filter by items that have an overview or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have an overview or not.", + "nullable": true + } + }, + { + "name": "hasImdbId", + "in": "query", + "description": "Optional filter by items that have an imdb id or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have an imdb id or not.", + "nullable": true + } + }, + { + "name": "hasTmdbId", + "in": "query", + "description": "Optional filter by items that have a tmdb id or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have a tmdb id or not.", + "nullable": true + } + }, + { + "name": "hasTvdbId", + "in": "query", + "description": "Optional filter by items that have a tvdb id or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have a tvdb id or not.", + "nullable": true + } + }, + { + "name": "excludeItemIds", + "in": "query", + "description": "Optional. If specified, results will be filtered by exxcluding item ids. This allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered by exxcluding item ids. This allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "recursive", + "in": "query", + "description": "When searching within folders, this determines whether or not the search will be recursive. true/false.", + "schema": { + "type": "boolean", + "description": "When searching within folders, this determines whether or not the search will be recursive. true/false.", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "Optional. Filter based on a search term.", + "schema": { + "type": "string", + "description": "Optional. Filter based on a search term.", + "nullable": true + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort Order - Ascending,Descending.", + "schema": { + "type": "string", + "description": "Sort Order - Ascending,Descending.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on the item type. This allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on the item type. This allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "filters", + "in": "query", + "description": "Optional. Specify additional filters to apply. This allows multiple, comma delimeted. Options: IsFolder, IsNotFolder, IsUnplayed, IsPlayed, IsFavorite, IsResumable, Likes, Dislikes.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFilter" + }, + "description": "Optional. Specify additional filters to apply. This allows multiple, comma delimeted. Options: IsFolder, IsNotFolder, IsUnplayed, IsPlayed, IsFavorite, IsResumable, Likes, Dislikes.", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional filter by items that are marked as favorite, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are marked as favorite, or not.", + "nullable": true + } + }, + { + "name": "mediaTypes", + "in": "query", + "description": "Optional filter by MediaType. Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional filter by MediaType. Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "imageTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on those containing image types. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. If specified, results will be filtered based on those containing image types. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "sortBy", + "in": "query", + "description": "Optional. Specify one or more sort orders, comma delimeted. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "schema": { + "type": "string", + "description": "Optional. Specify one or more sort orders, comma delimeted. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "nullable": true + } + }, + { + "name": "isPlayed", + "in": "query", + "description": "Optional filter by items that are played, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are played, or not.", + "nullable": true + } + }, + { + "name": "genres", + "in": "query", + "description": "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimeted.", + "nullable": true + } + }, + { + "name": "officialRatings", + "in": "query", + "description": "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimeted.", + "nullable": true + } + }, + { + "name": "tags", + "in": "query", + "description": "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimeted.", + "nullable": true + } + }, + { + "name": "years", + "in": "query", + "description": "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "description": "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional, include user data.", + "schema": { + "type": "boolean", + "description": "Optional, include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional, the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional, the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "person", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person.", + "schema": { + "type": "string", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person.", + "nullable": true + } + }, + { + "name": "personIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified person id.", + "nullable": true + } + }, + { + "name": "personTypes", + "in": "query", + "description": "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.", + "nullable": true + } + }, + { + "name": "studios", + "in": "query", + "description": "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimeted.", + "nullable": true + } + }, + { + "name": "artists", + "in": "query", + "description": "Optional. If specified, results will be filtered based on artists. This allows multiple, pipe delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on artists. This allows multiple, pipe delimeted.", + "nullable": true + } + }, + { + "name": "excludeArtistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on artist id. This allows multiple, pipe delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on artist id. This allows multiple, pipe delimeted.", + "nullable": true + } + }, + { + "name": "artistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified artist id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified artist id.", + "nullable": true + } + }, + { + "name": "albumArtistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified album artist id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified album artist id.", + "nullable": true + } + }, + { + "name": "contributingArtistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified contributing artist id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified contributing artist id.", + "nullable": true + } + }, + { + "name": "albums", + "in": "query", + "description": "Optional. If specified, results will be filtered based on album. This allows multiple, pipe delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on album. This allows multiple, pipe delimeted.", + "nullable": true + } + }, + { + "name": "albumIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on album id. This allows multiple, pipe delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on album id. This allows multiple, pipe delimeted.", + "nullable": true + } + }, + { + "name": "ids", + "in": "query", + "description": "Optional. If specific items are needed, specify a list of item id's to retrieve. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specific items are needed, specify a list of item id's to retrieve. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "videoTypes", + "in": "query", + "description": "Optional filter by VideoType (videofile, dvd, bluray, iso). Allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VideoType" + }, + "description": "Optional filter by VideoType (videofile, dvd, bluray, iso). Allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "minOfficialRating", + "in": "query", + "description": "Optional filter by minimum official rating (PG, PG-13, TV-MA, etc).", + "schema": { + "type": "string", + "description": "Optional filter by minimum official rating (PG, PG-13, TV-MA, etc).", + "nullable": true + } + }, + { + "name": "isLocked", + "in": "query", + "description": "Optional filter by items that are locked.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are locked.", + "nullable": true + } + }, + { + "name": "isPlaceHolder", + "in": "query", + "description": "Optional filter by items that are placeholders.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are placeholders.", + "nullable": true + } + }, + { + "name": "hasOfficialRating", + "in": "query", + "description": "Optional filter by items that have official ratings.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have official ratings.", + "nullable": true + } + }, + { + "name": "collapseBoxSetItems", + "in": "query", + "description": "Whether or not to hide items behind their boxsets.", + "schema": { + "type": "boolean", + "description": "Whether or not to hide items behind their boxsets.", + "nullable": true + } + }, + { + "name": "minWidth", + "in": "query", + "description": "Optional. Filter by the minimum width of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the minimum width of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minHeight", + "in": "query", + "description": "Optional. Filter by the minimum height of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the minimum height of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "Optional. Filter by the maximum width of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the maximum width of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "Optional. Filter by the maximum height of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the maximum height of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "is3D", + "in": "query", + "description": "Optional filter by items that are 3D, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are 3D, or not.", + "nullable": true + } + }, + { + "name": "seriesStatus", + "in": "query", + "description": "Optional filter by Series Status. Allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeriesStatus" + }, + "description": "Optional filter by Series Status. Allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "nameStartsWithOrGreater", + "in": "query", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "nullable": true + } + }, + { + "name": "nameStartsWith", + "in": "query", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "nullable": true + } + }, + { + "name": "nameLessThan", + "in": "query", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "nullable": true + } + }, + { + "name": "studioIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimeted.", + "nullable": true + } + }, + { + "name": "genreIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimeted.", + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Optional. Enable the total record count.", + "schema": { + "type": "boolean", + "description": "Optional. Enable the total record count.", + "default": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional, include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional, include image information in output.", + "default": true, + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Items/Resume": { + "get": { + "tags": [ + "Items" + ], + "summary": "Gets items based on a query.", + "operationId": "GetResumeItems", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + }, + { + "name": "startIndex", + "in": "query", + "description": "The start index.", + "schema": { + "type": "integer", + "description": "The start index.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "The item limit.", + "schema": { + "type": "integer", + "description": "The item limit.", + "format": "int32", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "The search term.", + "schema": { + "type": "string", + "description": "The search term.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines.", + "nullable": true + } + }, + { + "name": "mediaTypes", + "in": "query", + "description": "Optional. Filter by MediaType. Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. Filter by MediaType. Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on the item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on the item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Optional. Enable the total record count.", + "schema": { + "type": "boolean", + "description": "Optional. Enable the total record count.", + "default": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "default": true, + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Items returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}": { + "post": { + "tags": [ + "ItemUpdate" + ], + "summary": "Updates an item.", + "operationId": "UpdateItem", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + } + ], + "requestBody": { + "description": "The new item properties.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Item updated." + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "delete": { + "tags": [ + "Library" + ], + "summary": "Deletes an item from the library and filesystem.", + "operationId": "DeleteItem", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "Item deleted." + }, + "401": { + "description": "Unauthorized access.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/ContentType": { + "post": { + "tags": [ + "ItemUpdate" + ], + "summary": "Updates an item's content type.", + "operationId": "UpdateItemContentType", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "contentType", + "in": "query", + "description": "The content type of the item.", + "schema": { + "type": "string", + "description": "The content type of the item.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Item content type updated." + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Items/{itemId}/MetadataEditor": { + "get": { + "tags": [ + "ItemUpdate" + ], + "summary": "Gets metadata editor info for an item.", + "operationId": "GetMetadataEditorInfo", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Item metadata editor returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataEditorInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/MetadataEditorInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/MetadataEditorInfo" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Albums/{itemId}/Similar": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets similar items.", + "operationId": "GetSimilarAlbums", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "excludeArtistIds", + "in": "query", + "description": "Exclude artist ids.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Exclude artist ids.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Similar items returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Artists/{itemId}/Similar": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets similar items.", + "operationId": "GetSimilarArtists", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "excludeArtistIds", + "in": "query", + "description": "Exclude artist ids.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Exclude artist ids.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Similar items returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/Ancestors": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets all parents of an item.", + "operationId": "GetAncestors", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Item parents returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/CriticReviews": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets critic review for an item.", + "operationId": "GetCriticReviews", + "parameters": [ + { + "name": "itemId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Critic reviews returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": true, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/Download": { + "get": { + "tags": [ + "Library" + ], + "summary": "Downloads item media.", + "operationId": "GetDownload", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Media downloaded.", + "content": { + "video/*": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "Download" + ] + } + ] + } + }, + "/Items/{itemId}/File": { + "get": { + "tags": [ + "Library" + ], + "summary": "Get the original file of an item.", + "operationId": "GetFile", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "File stream returned.", + "content": { + "video/*": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/Similar": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets similar items.", + "operationId": "GetSimilarItems", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "excludeArtistIds", + "in": "query", + "description": "Exclude artist ids.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Exclude artist ids.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Similar items returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/ThemeMedia": { + "get": { + "tags": [ + "Library" + ], + "summary": "Get theme songs and videos for an item.", + "operationId": "GetThemeMedia", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "inheritFromParent", + "in": "query", + "description": "Optional. Determines whether or not parent items should be searched for theme media.", + "schema": { + "type": "boolean", + "description": "Optional. Determines whether or not parent items should be searched for theme media.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Theme songs and videos returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AllThemeMediaResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/AllThemeMediaResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/AllThemeMediaResult" + } + } + } + }, + "404": { + "description": "Item not found." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/ThemeSongs": { + "get": { + "tags": [ + "Library" + ], + "summary": "Get theme songs for an item.", + "operationId": "GetThemeSongs", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "inheritFromParent", + "in": "query", + "description": "Optional. Determines whether or not parent items should be searched for theme media.", + "schema": { + "type": "boolean", + "description": "Optional. Determines whether or not parent items should be searched for theme media.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Theme songs returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThemeMediaResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ThemeMediaResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ThemeMediaResult" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/ThemeVideos": { + "get": { + "tags": [ + "Library" + ], + "summary": "Get theme videos for an item.", + "operationId": "GetThemeVideos", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "inheritFromParent", + "in": "query", + "description": "Optional. Determines whether or not parent items should be searched for theme media.", + "schema": { + "type": "boolean", + "description": "Optional. Determines whether or not parent items should be searched for theme media.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Theme videos returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ThemeMediaResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ThemeMediaResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ThemeMediaResult" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/Counts": { + "get": { + "tags": [ + "Library" + ], + "summary": "Get item counts.", + "operationId": "GetItemCounts", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "Optional. Get counts from a specific user's library.", + "schema": { + "type": "string", + "description": "Optional. Get counts from a specific user's library.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional. Get counts of favorite items.", + "schema": { + "type": "boolean", + "description": "Optional. Get counts of favorite items.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Item counts returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ItemCounts" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ItemCounts" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ItemCounts" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Libraries/AvailableOptions": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets the library options info.", + "operationId": "GetLibraryOptionsInfo", + "parameters": [ + { + "name": "libraryContentType", + "in": "query", + "description": "Library content type.", + "schema": { + "type": "string", + "description": "Library content type.", + "nullable": true + } + }, + { + "name": "isNewLibrary", + "in": "query", + "description": "Whether this is a new library.", + "schema": { + "type": "boolean", + "description": "Whether this is a new library." + } + } + ], + "responses": { + "200": { + "description": "Library options info returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LibraryOptionsResultDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/LibraryOptionsResultDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/LibraryOptionsResultDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrDefault" + ] + } + ] + } + }, + "/Library/Media/Updated": { + "post": { + "tags": [ + "Library" + ], + "summary": "Reports that new movies have been added by an external source.", + "operationId": "PostUpdatedMedia", + "requestBody": { + "description": "A list of updated media paths.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaUpdateInfoDto" + }, + "description": "A list of updated media paths." + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaUpdateInfoDto" + }, + "description": "A list of updated media paths." + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaUpdateInfoDto" + }, + "description": "A list of updated media paths." + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Report success." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Library/MediaFolders": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets all user media folders.", + "operationId": "GetMediaFolders", + "parameters": [ + { + "name": "isHidden", + "in": "query", + "description": "Optional. Filter by folders that are marked hidden, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by folders that are marked hidden, or not.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Media folders returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Library/Movies/Added": { + "post": { + "tags": [ + "Library" + ], + "summary": "Reports that new movies have been added by an external source.", + "operationId": "PostAddedMovies", + "parameters": [ + { + "name": "tmdbId", + "in": "query", + "description": "The tmdbId.", + "schema": { + "type": "string", + "description": "The tmdbId.", + "nullable": true + } + }, + { + "name": "imdbId", + "in": "query", + "description": "The imdbId.", + "schema": { + "type": "string", + "description": "The imdbId.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Report success." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Library/Movies/Updated": { + "post": { + "tags": [ + "Library" + ], + "summary": "Reports that new movies have been added by an external source.", + "operationId": "PostUpdatedMovies", + "parameters": [ + { + "name": "tmdbId", + "in": "query", + "description": "The tmdbId.", + "schema": { + "type": "string", + "description": "The tmdbId.", + "nullable": true + } + }, + { + "name": "imdbId", + "in": "query", + "description": "The imdbId.", + "schema": { + "type": "string", + "description": "The imdbId.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Report success." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Library/PhysicalPaths": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets a list of physical paths from virtual folders.", + "operationId": "GetPhysicalPaths", + "responses": { + "200": { + "description": "Physical paths returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Library/Refresh": { + "get": { + "tags": [ + "Library" + ], + "summary": "Starts a library scan.", + "operationId": "RefreshLibrary", + "responses": { + "204": { + "description": "Library scan started." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Library/Series/Added": { + "post": { + "tags": [ + "Library" + ], + "summary": "Reports that new episodes of a series have been added by an external source.", + "operationId": "PostAddedSeries", + "parameters": [ + { + "name": "tvdbId", + "in": "query", + "description": "The tvdbId.", + "schema": { + "type": "string", + "description": "The tvdbId.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Report success." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Library/Series/Updated": { + "post": { + "tags": [ + "Library" + ], + "summary": "Reports that new episodes of a series have been added by an external source.", + "operationId": "PostUpdatedSeries", + "parameters": [ + { + "name": "tvdbId", + "in": "query", + "description": "The tvdbId.", + "schema": { + "type": "string", + "description": "The tvdbId.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Report success." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Movies/{itemId}/Similar": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets similar items.", + "operationId": "GetSimilarMovies", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "excludeArtistIds", + "in": "query", + "description": "Exclude artist ids.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Exclude artist ids.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Similar items returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Shows/{itemId}/Similar": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets similar items.", + "operationId": "GetSimilarShows", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "excludeArtistIds", + "in": "query", + "description": "Exclude artist ids.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Exclude artist ids.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Similar items returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Trailers/{itemId}/Similar": { + "get": { + "tags": [ + "Library" + ], + "summary": "Gets similar items.", + "operationId": "GetSimilarTrailers", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "excludeArtistIds", + "in": "query", + "description": "Exclude artist ids.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Exclude artist ids.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Similar items returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Library/VirtualFolders": { + "get": { + "tags": [ + "LibraryStructure" + ], + "summary": "Gets all virtual folders.", + "operationId": "GetVirtualFolders", + "responses": { + "200": { + "description": "Virtual folders retrieved.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VirtualFolderInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VirtualFolderInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VirtualFolderInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + }, + "post": { + "tags": [ + "LibraryStructure" + ], + "summary": "Adds a virtual folder.", + "operationId": "AddVirtualFolder", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the virtual folder.", + "schema": { + "type": "string", + "description": "The name of the virtual folder.", + "nullable": true + } + }, + { + "name": "collectionType", + "in": "query", + "description": "The type of the collection.", + "schema": { + "type": "string", + "description": "The type of the collection.", + "nullable": true + } + }, + { + "name": "paths", + "in": "query", + "description": "The paths of the virtual folder.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The paths of the virtual folder.", + "nullable": true + } + }, + { + "name": "refreshLibrary", + "in": "query", + "description": "Whether to refresh the library.", + "schema": { + "type": "boolean", + "description": "Whether to refresh the library.", + "default": false + } + } + ], + "requestBody": { + "description": "The library options.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddVirtualFolderDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AddVirtualFolderDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/AddVirtualFolderDto" + } + } + } + }, + "responses": { + "204": { + "description": "Folder added." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + }, + "delete": { + "tags": [ + "LibraryStructure" + ], + "summary": "Removes a virtual folder.", + "operationId": "RemoveVirtualFolder", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the folder.", + "schema": { + "type": "string", + "description": "The name of the folder.", + "nullable": true + } + }, + { + "name": "refreshLibrary", + "in": "query", + "description": "Whether to refresh the library.", + "schema": { + "type": "boolean", + "description": "Whether to refresh the library.", + "default": false + } + } + ], + "responses": { + "204": { + "description": "Folder removed." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Library/VirtualFolders/LibraryOptions": { + "post": { + "tags": [ + "LibraryStructure" + ], + "summary": "Update library options.", + "operationId": "UpdateLibraryOptions", + "requestBody": { + "description": "The library name and options.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateLibraryOptionsDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateLibraryOptionsDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateLibraryOptionsDto" + } + } + } + }, + "responses": { + "204": { + "description": "Library updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Library/VirtualFolders/Name": { + "post": { + "tags": [ + "LibraryStructure" + ], + "summary": "Renames a virtual folder.", + "operationId": "RenameVirtualFolder", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the virtual folder.", + "schema": { + "type": "string", + "description": "The name of the virtual folder.", + "nullable": true + } + }, + { + "name": "newName", + "in": "query", + "description": "The new name.", + "schema": { + "type": "string", + "description": "The new name.", + "nullable": true + } + }, + { + "name": "refreshLibrary", + "in": "query", + "description": "Whether to refresh the library.", + "schema": { + "type": "boolean", + "description": "Whether to refresh the library.", + "default": false + } + } + ], + "responses": { + "204": { + "description": "Folder renamed." + }, + "404": { + "description": "Library doesn't exist.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Library already exists.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Library/VirtualFolders/Paths": { + "post": { + "tags": [ + "LibraryStructure" + ], + "summary": "Add a media path to a library.", + "operationId": "AddMediaPath", + "parameters": [ + { + "name": "refreshLibrary", + "in": "query", + "description": "Whether to refresh the library.", + "schema": { + "type": "boolean", + "description": "Whether to refresh the library.", + "default": false + } + } + ], + "requestBody": { + "description": "The media path dto.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaPathDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MediaPathDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/MediaPathDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Media path added." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + }, + "delete": { + "tags": [ + "LibraryStructure" + ], + "summary": "Remove a media path.", + "operationId": "RemoveMediaPath", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the library.", + "schema": { + "type": "string", + "description": "The name of the library.", + "nullable": true + } + }, + { + "name": "path", + "in": "query", + "description": "The path to remove.", + "schema": { + "type": "string", + "description": "The path to remove.", + "nullable": true + } + }, + { + "name": "refreshLibrary", + "in": "query", + "description": "Whether to refresh the library.", + "schema": { + "type": "boolean", + "description": "Whether to refresh the library.", + "default": false + } + } + ], + "responses": { + "204": { + "description": "Media path removed." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Library/VirtualFolders/Paths/Update": { + "post": { + "tags": [ + "LibraryStructure" + ], + "summary": "Updates a media path.", + "operationId": "UpdateMediaPath", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the library.", + "schema": { + "type": "string", + "description": "The name of the library.", + "nullable": true + } + } + ], + "requestBody": { + "description": "The path info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaPathInfo" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MediaPathInfo" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/MediaPathInfo" + } + } + } + }, + "responses": { + "204": { + "description": "Media path updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/LiveTv/ChannelMappingOptions": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Get channel mapping options.", + "operationId": "GetChannelMappingOptions", + "parameters": [ + { + "name": "providerId", + "in": "query", + "description": "Provider id.", + "schema": { + "type": "string", + "description": "Provider id.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Channel mapping options returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChannelMappingOptionsDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ChannelMappingOptionsDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ChannelMappingOptionsDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/ChannelMappings": { + "post": { + "tags": [ + "LiveTv" + ], + "summary": "Set channel mappings.", + "operationId": "SetChannelMapping", + "requestBody": { + "description": "The set channel mapping dto.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetChannelMappingDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SetChannelMappingDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SetChannelMappingDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Created channel mapping returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TunerChannelMapping" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/TunerChannelMapping" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/TunerChannelMapping" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Channels": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets available live tv channels.", + "operationId": "GetLiveTvChannels", + "parameters": [ + { + "name": "type", + "in": "query", + "description": "Optional. Filter by channel type.", + "schema": { + "$ref": "#/components/schemas/ChannelType" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "isMovie", + "in": "query", + "description": "Optional. Filter for movies.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for movies.", + "nullable": true + } + }, + { + "name": "isSeries", + "in": "query", + "description": "Optional. Filter for series.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for series.", + "nullable": true + } + }, + { + "name": "isNews", + "in": "query", + "description": "Optional. Filter for news.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for news.", + "nullable": true + } + }, + { + "name": "isKids", + "in": "query", + "description": "Optional. Filter for kids.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for kids.", + "nullable": true + } + }, + { + "name": "isSports", + "in": "query", + "description": "Optional. Filter for sports.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for sports.", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional. Filter by channels that are favorites, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by channels that are favorites, or not.", + "nullable": true + } + }, + { + "name": "isLiked", + "in": "query", + "description": "Optional. Filter by channels that are liked, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by channels that are liked, or not.", + "nullable": true + } + }, + { + "name": "isDisliked", + "in": "query", + "description": "Optional. Filter by channels that are disliked, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by channels that are disliked, or not.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "\"Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "\"Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "sortBy", + "in": "query", + "description": "Optional. Key to sort by.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. Key to sort by.", + "nullable": true + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Optional. Sort order.", + "schema": { + "$ref": "#/components/schemas/SortOrder" + } + }, + { + "name": "enableFavoriteSorting", + "in": "query", + "description": "Optional. Incorporate favorite and like status into channel sorting.", + "schema": { + "type": "boolean", + "description": "Optional. Incorporate favorite and like status into channel sorting.", + "default": false + } + }, + { + "name": "addCurrentProgram", + "in": "query", + "description": "Optional. Adds current program info to each channel.", + "schema": { + "type": "boolean", + "description": "Optional. Adds current program info to each channel.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Available live tv channels returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Channels/{channelId}": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets a live tv channel.", + "operationId": "GetChannel", + "parameters": [ + { + "name": "channelId", + "in": "path", + "description": "Channel id.", + "required": true, + "schema": { + "type": "string", + "description": "Channel id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Attach user data.", + "schema": { + "type": "string", + "description": "Optional. Attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Live tv channel returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/GuideInfo": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Get guid info.", + "operationId": "GetGuideInfo", + "responses": { + "200": { + "description": "Guid info returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GuideInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/GuideInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/GuideInfo" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Info": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets available live tv services.", + "operationId": "GetLiveTvInfo", + "responses": { + "200": { + "description": "Available live tv services returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LiveTvInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/LiveTvInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/LiveTvInfo" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/ListingProviders": { + "post": { + "tags": [ + "LiveTv" + ], + "summary": "Adds a listings provider.", + "operationId": "AddListingProvider", + "parameters": [ + { + "name": "pw", + "in": "query", + "description": "Password.", + "schema": { + "type": "string", + "description": "Password.", + "nullable": true + } + }, + { + "name": "validateListings", + "in": "query", + "description": "Validate listings.", + "schema": { + "type": "boolean", + "description": "Validate listings.", + "default": false + } + }, + { + "name": "validateLogin", + "in": "query", + "description": "Validate login.", + "schema": { + "type": "boolean", + "description": "Validate login.", + "default": false + } + } + ], + "requestBody": { + "description": "New listings info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListingsProviderInfo" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ListingsProviderInfo" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ListingsProviderInfo" + } + } + } + }, + "responses": { + "200": { + "description": "Created listings provider returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListingsProviderInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ListingsProviderInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ListingsProviderInfo" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "LiveTv" + ], + "summary": "Delete listing provider.", + "operationId": "DeleteListingProvider", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Listing provider id.", + "schema": { + "type": "string", + "description": "Listing provider id.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Listing provider deleted." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/ListingProviders/Default": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets default listings provider info.", + "operationId": "GetDefaultListingProvider", + "responses": { + "200": { + "description": "Default listings provider info returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListingsProviderInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ListingsProviderInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ListingsProviderInfo" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/ListingProviders/Lineups": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets available lineups.", + "operationId": "GetLineups", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Provider id.", + "schema": { + "type": "string", + "description": "Provider id.", + "nullable": true + } + }, + { + "name": "type", + "in": "query", + "description": "Provider type.", + "schema": { + "type": "string", + "description": "Provider type.", + "nullable": true + } + }, + { + "name": "location", + "in": "query", + "description": "Location.", + "schema": { + "type": "string", + "description": "Location.", + "nullable": true + } + }, + { + "name": "country", + "in": "query", + "description": "Country.", + "schema": { + "type": "string", + "description": "Country.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Available lineups returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/ListingProviders/SchedulesDirect/Countries": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets available countries.", + "operationId": "GetSchedulesDirectCountries", + "responses": { + "200": { + "description": "Available countries returned.", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/LiveRecordings/{recordingId}/stream": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets a live tv recording stream.", + "operationId": "GetLiveRecordingFile", + "parameters": [ + { + "name": "recordingId", + "in": "path", + "description": "Recording id.", + "required": true, + "schema": { + "type": "string", + "description": "Recording id." + } + } + ], + "responses": { + "200": { + "description": "Recording stream returned.", + "content": { + "video/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Recording not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/LiveTv/LiveStreamFiles/{streamId}/stream.{container}": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets a live tv channel stream.", + "operationId": "GetLiveStreamFile", + "parameters": [ + { + "name": "streamId", + "in": "path", + "description": "Stream id.", + "required": true, + "schema": { + "type": "string", + "description": "Stream id." + } + }, + { + "name": "container", + "in": "path", + "description": "Container type.", + "required": true, + "schema": { + "type": "string", + "description": "Container type." + } + } + ], + "responses": { + "200": { + "description": "Stream returned.", + "content": { + "video/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Stream not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/LiveTv/Programs": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets available live tv epgs.", + "operationId": "GetLiveTvPrograms", + "parameters": [ + { + "name": "channelIds", + "in": "query", + "description": "The channels to return guide information for.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "The channels to return guide information for.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "minStartDate", + "in": "query", + "description": "Optional. The minimum premiere start date.", + "schema": { + "type": "string", + "description": "Optional. The minimum premiere start date.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "hasAired", + "in": "query", + "description": "Optional. Filter by programs that have completed airing, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by programs that have completed airing, or not.", + "nullable": true + } + }, + { + "name": "isAiring", + "in": "query", + "description": "Optional. Filter by programs that are currently airing, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by programs that are currently airing, or not.", + "nullable": true + } + }, + { + "name": "maxStartDate", + "in": "query", + "description": "Optional. The maximum premiere start date.", + "schema": { + "type": "string", + "description": "Optional. The maximum premiere start date.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "minEndDate", + "in": "query", + "description": "Optional. The minimum premiere end date.", + "schema": { + "type": "string", + "description": "Optional. The minimum premiere end date.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "maxEndDate", + "in": "query", + "description": "Optional. The maximum premiere end date.", + "schema": { + "type": "string", + "description": "Optional. The maximum premiere end date.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "isMovie", + "in": "query", + "description": "Optional. Filter for movies.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for movies.", + "nullable": true + } + }, + { + "name": "isSeries", + "in": "query", + "description": "Optional. Filter for series.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for series.", + "nullable": true + } + }, + { + "name": "isNews", + "in": "query", + "description": "Optional. Filter for news.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for news.", + "nullable": true + } + }, + { + "name": "isKids", + "in": "query", + "description": "Optional. Filter for kids.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for kids.", + "nullable": true + } + }, + { + "name": "isSports", + "in": "query", + "description": "Optional. Filter for sports.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for sports.", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "sortBy", + "in": "query", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Name, StartDate.", + "schema": { + "type": "string", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Name, StartDate.", + "nullable": true + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort Order - Ascending,Descending.", + "schema": { + "type": "string", + "description": "Sort Order - Ascending,Descending.", + "nullable": true + } + }, + { + "name": "genres", + "in": "query", + "description": "The genres to return guide information for.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The genres to return guide information for.", + "nullable": true + } + }, + { + "name": "genreIds", + "in": "query", + "description": "The genre ids to return guide information for.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "The genre ids to return guide information for.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "seriesTimerId", + "in": "query", + "description": "Optional. Filter by series timer id.", + "schema": { + "type": "string", + "description": "Optional. Filter by series timer id.", + "nullable": true + } + }, + { + "name": "librarySeriesId", + "in": "query", + "description": "Optional. Filter by library series id.", + "schema": { + "type": "string", + "description": "Optional. Filter by library series id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Retrieve total record count.", + "schema": { + "type": "boolean", + "description": "Retrieve total record count.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Live tv epgs returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "LiveTv" + ], + "summary": "Gets available live tv epgs.", + "operationId": "GetPrograms", + "requestBody": { + "description": "Request body.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetProgramsDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/GetProgramsDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/GetProgramsDto" + } + } + } + }, + "responses": { + "200": { + "description": "Live tv epgs returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Programs/{programId}": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets a live tv program.", + "operationId": "GetProgram", + "parameters": [ + { + "name": "programId", + "in": "path", + "description": "Program id.", + "required": true, + "schema": { + "type": "string", + "description": "Program id." + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Attach user data.", + "schema": { + "type": "string", + "description": "Optional. Attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Program returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Programs/Recommended": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets recommended live tv epgs.", + "operationId": "GetRecommendedPrograms", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "Optional. filter by user id.", + "schema": { + "type": "string", + "description": "Optional. filter by user id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "isAiring", + "in": "query", + "description": "Optional. Filter by programs that are currently airing, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by programs that are currently airing, or not.", + "nullable": true + } + }, + { + "name": "hasAired", + "in": "query", + "description": "Optional. Filter by programs that have completed airing, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by programs that have completed airing, or not.", + "nullable": true + } + }, + { + "name": "isSeries", + "in": "query", + "description": "Optional. Filter for series.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for series.", + "nullable": true + } + }, + { + "name": "isMovie", + "in": "query", + "description": "Optional. Filter for movies.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for movies.", + "nullable": true + } + }, + { + "name": "isNews", + "in": "query", + "description": "Optional. Filter for news.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for news.", + "nullable": true + } + }, + { + "name": "isKids", + "in": "query", + "description": "Optional. Filter for kids.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for kids.", + "nullable": true + } + }, + { + "name": "isSports", + "in": "query", + "description": "Optional. Filter for sports.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for sports.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "genreIds", + "in": "query", + "description": "The genres to return guide information for.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "The genres to return guide information for.", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. include user data.", + "schema": { + "type": "boolean", + "description": "Optional. include user data.", + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Retrieve total record count.", + "schema": { + "type": "boolean", + "description": "Retrieve total record count.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Recommended epgs returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Recordings": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets live tv recordings.", + "operationId": "GetRecordings", + "parameters": [ + { + "name": "channelId", + "in": "query", + "description": "Optional. Filter by channel id.", + "schema": { + "type": "string", + "description": "Optional. Filter by channel id.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "status", + "in": "query", + "description": "Optional. Filter by recording status.", + "schema": { + "$ref": "#/components/schemas/RecordingStatus" + } + }, + { + "name": "isInProgress", + "in": "query", + "description": "Optional. Filter by recordings that are in progress, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by recordings that are in progress, or not.", + "nullable": true + } + }, + { + "name": "seriesTimerId", + "in": "query", + "description": "Optional. Filter by recordings belonging to a series timer.", + "schema": { + "type": "string", + "description": "Optional. Filter by recordings belonging to a series timer.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "isMovie", + "in": "query", + "description": "Optional. Filter for movies.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for movies.", + "nullable": true + } + }, + { + "name": "isSeries", + "in": "query", + "description": "Optional. Filter for series.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for series.", + "nullable": true + } + }, + { + "name": "isKids", + "in": "query", + "description": "Optional. Filter for kids.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for kids.", + "nullable": true + } + }, + { + "name": "isSports", + "in": "query", + "description": "Optional. Filter for sports.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for sports.", + "nullable": true + } + }, + { + "name": "isNews", + "in": "query", + "description": "Optional. Filter for news.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for news.", + "nullable": true + } + }, + { + "name": "isLibraryItem", + "in": "query", + "description": "Optional. Filter for is library item.", + "schema": { + "type": "boolean", + "description": "Optional. Filter for is library item.", + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Optional. Return total record count.", + "schema": { + "type": "boolean", + "description": "Optional. Return total record count.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Live tv recordings returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Recordings/{recordingId}": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets a live tv recording.", + "operationId": "GetRecording", + "parameters": [ + { + "name": "recordingId", + "in": "path", + "description": "Recording id.", + "required": true, + "schema": { + "type": "string", + "description": "Recording id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Attach user data.", + "schema": { + "type": "string", + "description": "Optional. Attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Recording returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "LiveTv" + ], + "summary": "Deletes a live tv recording.", + "operationId": "DeleteRecording", + "parameters": [ + { + "name": "recordingId", + "in": "path", + "description": "Recording id.", + "required": true, + "schema": { + "type": "string", + "description": "Recording id.", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "Recording deleted." + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Recordings/Folders": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets recording folders.", + "operationId": "GetRecordingFolders", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user and attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Recording folders returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Recordings/Groups": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets live tv recording groups.", + "operationId": "GetRecordingGroups", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user and attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Recording groups returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": true, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Recordings/Groups/{groupId}": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Get recording group.", + "operationId": "GetRecordingGroup", + "parameters": [ + { + "name": "groupId", + "in": "path", + "description": "Group id.", + "required": true, + "schema": { + "type": "string", + "description": "Group id.", + "format": "uuid" + } + } + ], + "responses": { + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": true, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Recordings/Series": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets live tv recording series.", + "operationId": "GetRecordingsSeries", + "parameters": [ + { + "name": "channelId", + "in": "query", + "description": "Optional. Filter by channel id.", + "schema": { + "type": "string", + "description": "Optional. Filter by channel id.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "groupId", + "in": "query", + "description": "Optional. Filter by recording group.", + "schema": { + "type": "string", + "description": "Optional. Filter by recording group.", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "status", + "in": "query", + "description": "Optional. Filter by recording status.", + "schema": { + "$ref": "#/components/schemas/RecordingStatus" + } + }, + { + "name": "isInProgress", + "in": "query", + "description": "Optional. Filter by recordings that are in progress, or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by recordings that are in progress, or not.", + "nullable": true + } + }, + { + "name": "seriesTimerId", + "in": "query", + "description": "Optional. Filter by recordings belonging to a series timer.", + "schema": { + "type": "string", + "description": "Optional. Filter by recordings belonging to a series timer.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Optional. Return total record count.", + "schema": { + "type": "boolean", + "description": "Optional. Return total record count.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Live tv recordings returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": true, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/SeriesTimers": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets live tv series timers.", + "operationId": "GetSeriesTimers", + "parameters": [ + { + "name": "sortBy", + "in": "query", + "description": "Optional. Sort by SortName or Priority.", + "schema": { + "type": "string", + "description": "Optional. Sort by SortName or Priority.", + "nullable": true + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Optional. Sort in Ascending or Descending order.", + "schema": { + "$ref": "#/components/schemas/SortOrder" + } + } + ], + "responses": { + "200": { + "description": "Timers returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "LiveTv" + ], + "summary": "Creates a live tv series timer.", + "operationId": "CreateSeriesTimer", + "requestBody": { + "description": "New series timer info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + } + } + }, + "responses": { + "204": { + "description": "Series timer info created." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/SeriesTimers/{timerId}": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets a live tv series timer.", + "operationId": "GetSeriesTimer", + "parameters": [ + { + "name": "timerId", + "in": "path", + "description": "Timer id.", + "required": true, + "schema": { + "type": "string", + "description": "Timer id." + } + } + ], + "responses": { + "200": { + "description": "Series timer returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + } + } + }, + "404": { + "description": "Series timer not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "LiveTv" + ], + "summary": "Cancels a live tv series timer.", + "operationId": "CancelSeriesTimer", + "parameters": [ + { + "name": "timerId", + "in": "path", + "description": "Timer id.", + "required": true, + "schema": { + "type": "string", + "description": "Timer id." + } + } + ], + "responses": { + "204": { + "description": "Timer cancelled." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "LiveTv" + ], + "summary": "Updates a live tv series timer.", + "operationId": "UpdateSeriesTimer", + "parameters": [ + { + "name": "timerId", + "in": "path", + "description": "Timer id.", + "required": true, + "schema": { + "type": "string", + "description": "Timer id." + } + } + ], + "requestBody": { + "description": "New series timer info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + } + } + }, + "responses": { + "204": { + "description": "Series timer updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Timers": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets the live tv timers.", + "operationId": "GetTimers", + "parameters": [ + { + "name": "channelId", + "in": "query", + "description": "Optional. Filter by channel id.", + "schema": { + "type": "string", + "description": "Optional. Filter by channel id.", + "nullable": true + } + }, + { + "name": "seriesTimerId", + "in": "query", + "description": "Optional. Filter by timers belonging to a series timer.", + "schema": { + "type": "string", + "description": "Optional. Filter by timers belonging to a series timer.", + "nullable": true + } + }, + { + "name": "isActive", + "in": "query", + "description": "Optional. Filter by timers that are active.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by timers that are active.", + "nullable": true + } + }, + { + "name": "isScheduled", + "in": "query", + "description": "Optional. Filter by timers that are scheduled.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by timers that are scheduled.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "LiveTv" + ], + "summary": "Creates a live tv timer.", + "operationId": "CreateTimer", + "requestBody": { + "description": "New timer info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDto" + } + } + } + }, + "responses": { + "204": { + "description": "Timer created." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Timers/{timerId}": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets a timer.", + "operationId": "GetTimer", + "parameters": [ + { + "name": "timerId", + "in": "path", + "description": "Timer id.", + "required": true, + "schema": { + "type": "string", + "description": "Timer id." + } + } + ], + "responses": { + "200": { + "description": "Timer returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "LiveTv" + ], + "summary": "Cancels a live tv timer.", + "operationId": "CancelTimer", + "parameters": [ + { + "name": "timerId", + "in": "path", + "description": "Timer id.", + "required": true, + "schema": { + "type": "string", + "description": "Timer id." + } + } + ], + "responses": { + "204": { + "description": "Timer deleted." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "LiveTv" + ], + "summary": "Updates a live tv timer.", + "operationId": "UpdateTimer", + "parameters": [ + { + "name": "timerId", + "in": "path", + "description": "Timer id.", + "required": true, + "schema": { + "type": "string", + "description": "Timer id." + } + } + ], + "requestBody": { + "description": "New timer info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/TimerInfoDto" + } + } + } + }, + "responses": { + "204": { + "description": "Timer updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Timers/Defaults": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Gets the default values for a new timer.", + "operationId": "GetDefaultTimer", + "parameters": [ + { + "name": "programId", + "in": "query", + "description": "Optional. To attach default values based on a program.", + "schema": { + "type": "string", + "description": "Optional. To attach default values based on a program.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Default values returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/TunerHosts": { + "post": { + "tags": [ + "LiveTv" + ], + "summary": "Adds a tuner host.", + "operationId": "AddTunerHost", + "requestBody": { + "description": "New tuner host.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TunerHostInfo" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TunerHostInfo" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/TunerHostInfo" + } + } + } + }, + "responses": { + "200": { + "description": "Created tuner host returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TunerHostInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/TunerHostInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/TunerHostInfo" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "LiveTv" + ], + "summary": "Deletes a tuner host.", + "operationId": "DeleteTunerHost", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "Tuner host id.", + "schema": { + "type": "string", + "description": "Tuner host id.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Tuner host deleted." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/TunerHosts/Types": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Get tuner host types.", + "operationId": "GetTunerHostTypes", + "responses": { + "200": { + "description": "Tuner host types returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Tuners/{tunerId}/Reset": { + "post": { + "tags": [ + "LiveTv" + ], + "summary": "Resets a tv tuner.", + "operationId": "ResetTuner", + "parameters": [ + { + "name": "tunerId", + "in": "path", + "description": "Tuner id.", + "required": true, + "schema": { + "type": "string", + "description": "Tuner id." + } + } + ], + "responses": { + "204": { + "description": "Tuner reset." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Tuners/Discover": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Discover tuners.", + "operationId": "DiscoverTuners", + "parameters": [ + { + "name": "newDevicesOnly", + "in": "query", + "description": "Only discover new tuners.", + "schema": { + "type": "boolean", + "description": "Only discover new tuners.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Tuners returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TunerHostInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TunerHostInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TunerHostInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveTv/Tuners/Discvover": { + "get": { + "tags": [ + "LiveTv" + ], + "summary": "Discover tuners.", + "operationId": "DiscvoverTuners", + "parameters": [ + { + "name": "newDevicesOnly", + "in": "query", + "description": "Only discover new tuners.", + "schema": { + "type": "boolean", + "description": "Only discover new tuners.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Tuners returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TunerHostInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TunerHostInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TunerHostInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Localization/Countries": { + "get": { + "tags": [ + "Localization" + ], + "summary": "Gets known countries.", + "operationId": "GetCountries", + "responses": { + "200": { + "description": "Known countries returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrDefault" + ] + } + ] + } + }, + "/Localization/Cultures": { + "get": { + "tags": [ + "Localization" + ], + "summary": "Gets known cultures.", + "operationId": "GetCultures", + "responses": { + "200": { + "description": "Known cultures returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CultureDto" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CultureDto" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CultureDto" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrDefault" + ] + } + ] + } + }, + "/Localization/Options": { + "get": { + "tags": [ + "Localization" + ], + "summary": "Gets localization options.", + "operationId": "GetLocalizationOptions", + "responses": { + "200": { + "description": "Localization options returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LocalizationOption" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LocalizationOption" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LocalizationOption" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrDefault" + ] + } + ] + } + }, + "/Localization/ParentalRatings": { + "get": { + "tags": [ + "Localization" + ], + "summary": "Gets known parental ratings.", + "operationId": "GetParentalRatings", + "responses": { + "200": { + "description": "Known parental ratings returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ParentalRating" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ParentalRating" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ParentalRating" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrDefault" + ] + } + ] + } + }, + "/Items/{itemId}/PlaybackInfo": { + "get": { + "tags": [ + "MediaInfo" + ], + "summary": "Gets live playback media info for an item.", + "operationId": "GetPlaybackInfo", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Playback info returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlaybackInfoResponse" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/PlaybackInfoResponse" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/PlaybackInfoResponse" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "MediaInfo" + ], + "summary": "Gets live playback media info for an item.", + "description": "For backwards compatibility parameters can be sent via Query or Body, with Query having higher precedence.\r\nQuery parameters are obsolete.", + "operationId": "GetPostedPlaybackInfo", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "The user id.", + "deprecated": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "maxStreamingBitrate", + "in": "query", + "description": "The maximum streaming bitrate.", + "deprecated": true, + "schema": { + "type": "integer", + "description": "The maximum streaming bitrate.", + "format": "int32", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "The start time in ticks.", + "deprecated": true, + "schema": { + "type": "integer", + "description": "The start time in ticks.", + "format": "int64", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "The audio stream index.", + "deprecated": true, + "schema": { + "type": "integer", + "description": "The audio stream index.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "The subtitle stream index.", + "deprecated": true, + "schema": { + "type": "integer", + "description": "The subtitle stream index.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "The maximum number of audio channels.", + "deprecated": true, + "schema": { + "type": "integer", + "description": "The maximum number of audio channels.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media source id.", + "deprecated": true, + "schema": { + "type": "string", + "description": "The media source id.", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The livestream id.", + "deprecated": true, + "schema": { + "type": "string", + "description": "The livestream id.", + "nullable": true + } + }, + { + "name": "autoOpenLiveStream", + "in": "query", + "description": "Whether to auto open the livestream.", + "deprecated": true, + "schema": { + "type": "boolean", + "description": "Whether to auto open the livestream.", + "nullable": true + } + }, + { + "name": "enableDirectPlay", + "in": "query", + "description": "Whether to enable direct play. Default: true.", + "deprecated": true, + "schema": { + "type": "boolean", + "description": "Whether to enable direct play. Default: true.", + "nullable": true + } + }, + { + "name": "enableDirectStream", + "in": "query", + "description": "Whether to enable direct stream. Default: true.", + "deprecated": true, + "schema": { + "type": "boolean", + "description": "Whether to enable direct stream. Default: true.", + "nullable": true + } + }, + { + "name": "enableTranscoding", + "in": "query", + "description": "Whether to enable transcoding. Default: true.", + "deprecated": true, + "schema": { + "type": "boolean", + "description": "Whether to enable transcoding. Default: true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether to allow to copy the video stream. Default: true.", + "deprecated": true, + "schema": { + "type": "boolean", + "description": "Whether to allow to copy the video stream. Default: true.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether to allow to copy the audio stream. Default: true.", + "deprecated": true, + "schema": { + "type": "boolean", + "description": "Whether to allow to copy the audio stream. Default: true.", + "nullable": true + } + } + ], + "requestBody": { + "description": "The playback info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlaybackInfoDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/PlaybackInfoDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/PlaybackInfoDto" + } + } + } + }, + "responses": { + "200": { + "description": "Playback info returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlaybackInfoResponse" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/PlaybackInfoResponse" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/PlaybackInfoResponse" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveStreams/Close": { + "post": { + "tags": [ + "MediaInfo" + ], + "summary": "Closes a media source.", + "operationId": "CloseLiveStream", + "parameters": [ + { + "name": "liveStreamId", + "in": "query", + "description": "The livestream id.", + "required": true, + "schema": { + "type": "string", + "description": "The livestream id." + } + } + ], + "responses": { + "204": { + "description": "Livestream closed." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/LiveStreams/Open": { + "post": { + "tags": [ + "MediaInfo" + ], + "summary": "Opens a media source.", + "operationId": "OpenLiveStream", + "parameters": [ + { + "name": "openToken", + "in": "query", + "description": "The open token.", + "schema": { + "type": "string", + "description": "The open token.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "The user id.", + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "maxStreamingBitrate", + "in": "query", + "description": "The maximum streaming bitrate.", + "schema": { + "type": "integer", + "description": "The maximum streaming bitrate.", + "format": "int32", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "The start time in ticks.", + "schema": { + "type": "integer", + "description": "The start time in ticks.", + "format": "int64", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "The audio stream index.", + "schema": { + "type": "integer", + "description": "The audio stream index.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "The subtitle stream index.", + "schema": { + "type": "integer", + "description": "The subtitle stream index.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "The maximum number of audio channels.", + "schema": { + "type": "integer", + "description": "The maximum number of audio channels.", + "format": "int32", + "nullable": true + } + }, + { + "name": "itemId", + "in": "query", + "description": "The item id.", + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "enableDirectPlay", + "in": "query", + "description": "Whether to enable direct play. Default: true.", + "schema": { + "type": "boolean", + "description": "Whether to enable direct play. Default: true.", + "nullable": true + } + }, + { + "name": "enableDirectStream", + "in": "query", + "description": "Whether to enable direct stream. Default: true.", + "schema": { + "type": "boolean", + "description": "Whether to enable direct stream. Default: true.", + "nullable": true + } + } + ], + "requestBody": { + "description": "The open live stream dto.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenLiveStreamDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/OpenLiveStreamDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/OpenLiveStreamDto" + } + } + } + }, + "responses": { + "200": { + "description": "Media source opened.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LiveStreamResponse" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/LiveStreamResponse" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/LiveStreamResponse" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Playback/BitrateTest": { + "get": { + "tags": [ + "MediaInfo" + ], + "summary": "Tests the network with a request with the size of the bitrate.", + "operationId": "GetBitrateTestBytes", + "parameters": [ + { + "name": "size", + "in": "query", + "description": "The bitrate. Defaults to 102400.", + "schema": { + "type": "integer", + "description": "The bitrate. Defaults to 102400.", + "format": "int32", + "default": 102400 + } + } + ], + "responses": { + "200": { + "description": "Test buffer returned.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Size has to be a numer between 0 and 10,000,000.", + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Movies/Recommendations": { + "get": { + "tags": [ + "Movies" + ], + "summary": "Gets movie recommendations.", + "operationId": "GetMovieRecommendations", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. The fields to return.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. The fields to return.", + "nullable": true + } + }, + { + "name": "categoryLimit", + "in": "query", + "description": "The max number of categories to return.", + "schema": { + "type": "integer", + "description": "The max number of categories to return.", + "format": "int32", + "default": 5 + } + }, + { + "name": "itemLimit", + "in": "query", + "description": "The max number of items to return per category.", + "schema": { + "type": "integer", + "description": "The max number of items to return per category.", + "format": "int32", + "default": 8 + } + } + ], + "responses": { + "200": { + "description": "Movie recommendations returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecommendationDto" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecommendationDto" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecommendationDto" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/MusicGenres": { + "get": { + "tags": [ + "MusicGenres" + ], + "summary": "Gets all music genres from a given item, folder, or the entire library.", + "operationId": "GetMusicGenres", + "parameters": [ + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "The search term.", + "schema": { + "type": "string", + "description": "The search term.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered in based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered in based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional filter by items that are marked as favorite, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are marked as favorite, or not.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional, the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional, the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "User id.", + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "nameStartsWithOrGreater", + "in": "query", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "nullable": true + } + }, + { + "name": "nameStartsWith", + "in": "query", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "nullable": true + } + }, + { + "name": "nameLessThan", + "in": "query", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional, include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional, include image information in output.", + "default": true, + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Optional. Include total record count.", + "schema": { + "type": "boolean", + "description": "Optional. Include total record count.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Music genres returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": true, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/MusicGenres/{genreName}": { + "get": { + "tags": [ + "MusicGenres" + ], + "summary": "Gets a music genre, by name.", + "operationId": "GetMusicGenre", + "parameters": [ + { + "name": "genreName", + "in": "path", + "description": "The genre name.", + "required": true, + "schema": { + "type": "string", + "description": "The genre name." + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Notifications/{userId}": { + "get": { + "tags": [ + "Notifications" + ], + "summary": "Gets a user's notifications.", + "operationId": "GetNotifications", + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Notifications returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResultDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/NotificationResultDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/NotificationResultDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Notifications/{userId}/Read": { + "post": { + "tags": [ + "Notifications" + ], + "summary": "Sets notifications as read.", + "operationId": "SetRead", + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Notifications set as read." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Notifications/{userId}/Summary": { + "get": { + "tags": [ + "Notifications" + ], + "summary": "Gets a user's notification summary.", + "operationId": "GetNotificationsSummary", + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Summary of user's notifications returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationsSummaryDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/NotificationsSummaryDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/NotificationsSummaryDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Notifications/{userId}/Unread": { + "post": { + "tags": [ + "Notifications" + ], + "summary": "Sets notifications as unread.", + "operationId": "SetUnread", + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Notifications set as unread." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Notifications/Admin": { + "post": { + "tags": [ + "Notifications" + ], + "summary": "Sends a notification to all admins.", + "operationId": "CreateAdminNotification", + "parameters": [ + { + "name": "url", + "in": "query", + "description": "The URL of the notification.", + "schema": { + "type": "string", + "description": "The URL of the notification.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "The level of the notification.", + "schema": { + "$ref": "#/components/schemas/NotificationLevel" + } + }, + { + "name": "name", + "in": "query", + "description": "The name of the notification.", + "schema": { + "type": "string", + "description": "The name of the notification.", + "default": "", + "nullable": true + } + }, + { + "name": "description", + "in": "query", + "description": "The description of the notification.", + "schema": { + "type": "string", + "description": "The description of the notification.", + "default": "", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Notification sent." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Notifications/Services": { + "get": { + "tags": [ + "Notifications" + ], + "summary": "Gets notification services.", + "operationId": "GetNotificationServices", + "responses": { + "200": { + "description": "All notification services returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Notifications/Types": { + "get": { + "tags": [ + "Notifications" + ], + "summary": "Gets notification types.", + "operationId": "GetNotificationTypes", + "responses": { + "200": { + "description": "All notification types returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationTypeInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationTypeInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationTypeInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Packages": { + "get": { + "tags": [ + "Package" + ], + "summary": "Gets available packages.", + "operationId": "GetPackages", + "responses": { + "200": { + "description": "Available packages returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PackageInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PackageInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PackageInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Packages/{name}": { + "get": { + "tags": [ + "Package" + ], + "summary": "Gets a package by name or assembly GUID.", + "operationId": "GetPackageInfo", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "The name of the package.", + "required": true, + "schema": { + "type": "string", + "description": "The name of the package." + } + }, + { + "name": "assemblyGuid", + "in": "query", + "description": "The GUID of the associated assembly.", + "schema": { + "type": "string", + "description": "The GUID of the associated assembly.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Package retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PackageInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/PackageInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/PackageInfo" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Packages/Installed/{name}": { + "post": { + "tags": [ + "Package" + ], + "summary": "Installs a package.", + "operationId": "InstallPackage", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Package name.", + "required": true, + "schema": { + "type": "string", + "description": "Package name." + } + }, + { + "name": "assemblyGuid", + "in": "query", + "description": "GUID of the associated assembly.", + "schema": { + "type": "string", + "description": "GUID of the associated assembly.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "version", + "in": "query", + "description": "Optional version. Defaults to latest version.", + "schema": { + "type": "string", + "description": "Optional version. Defaults to latest version.", + "nullable": true + } + }, + { + "name": "repositoryUrl", + "in": "query", + "description": "Optional. Specify the repository to install from.", + "schema": { + "type": "string", + "description": "Optional. Specify the repository to install from.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Package found." + }, + "404": { + "description": "Package not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/Packages/Installing/{packageId}": { + "delete": { + "tags": [ + "Package" + ], + "summary": "Cancels a package installation.", + "operationId": "CancelPackageInstallation", + "parameters": [ + { + "name": "packageId", + "in": "path", + "description": "Installation Id.", + "required": true, + "schema": { + "type": "string", + "description": "Installation Id.", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "Installation cancelled." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/Repositories": { + "get": { + "tags": [ + "Package" + ], + "summary": "Gets all package repositories.", + "operationId": "GetRepositories", + "responses": { + "200": { + "description": "Package repositories returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RepositoryInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RepositoryInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RepositoryInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "Package" + ], + "summary": "Sets the enabled and existing package repositories.", + "operationId": "SetRepositories", + "requestBody": { + "description": "The list of package repositories.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RepositoryInfo" + }, + "description": "The list of package repositories.", + "nullable": true + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RepositoryInfo" + }, + "description": "The list of package repositories.", + "nullable": true + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RepositoryInfo" + }, + "description": "The list of package repositories.", + "nullable": true + } + } + } + }, + "responses": { + "204": { + "description": "Package repositories saved." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Persons": { + "get": { + "tags": [ + "Persons" + ], + "summary": "Gets all persons.", + "operationId": "GetPersons", + "parameters": [ + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "The search term.", + "schema": { + "type": "string", + "description": "The search term.", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "filters", + "in": "query", + "description": "Optional. Specify additional filters to apply.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFilter" + }, + "description": "Optional. Specify additional filters to apply.", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional filter by items that are marked as favorite, or not. userId is required.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are marked as favorite, or not. userId is required.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional, include user data.", + "schema": { + "type": "boolean", + "description": "Optional, include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional, the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional, the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "excludePersonTypes", + "in": "query", + "description": "Optional. If specified results will be filtered to exclude those containing the specified PersonType. Allows multiple, comma-delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified results will be filtered to exclude those containing the specified PersonType. Allows multiple, comma-delimited.", + "nullable": true + } + }, + { + "name": "personTypes", + "in": "query", + "description": "Optional. If specified results will be filtered to include only those containing the specified PersonType. Allows multiple, comma-delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified results will be filtered to include only those containing the specified PersonType. Allows multiple, comma-delimited.", + "nullable": true + } + }, + { + "name": "appearsInItemId", + "in": "query", + "description": "Optional. If specified, person results will be filtered on items related to said persons.", + "schema": { + "type": "string", + "description": "Optional. If specified, person results will be filtered on items related to said persons.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "User id.", + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional, include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional, include image information in output.", + "default": true, + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Persons returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Persons/{name}": { + "get": { + "tags": [ + "Persons" + ], + "summary": "Get person by name.", + "operationId": "GetPerson", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Person name.", + "required": true, + "schema": { + "type": "string", + "description": "Person name." + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Person returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "404": { + "description": "Person not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Playlists": { + "post": { + "tags": [ + "Playlists" + ], + "summary": "Creates a new playlist.", + "description": "For backwards compatibility parameters can be sent via Query or Body, with Query having higher precedence.\r\nQuery parameters are obsolete.", + "operationId": "CreatePlaylist", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The playlist name.", + "deprecated": true, + "schema": { + "type": "string", + "description": "The playlist name.", + "nullable": true + } + }, + { + "name": "ids", + "in": "query", + "description": "The item ids.", + "deprecated": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "The item ids.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "The user id.", + "deprecated": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "mediaType", + "in": "query", + "description": "The media type.", + "deprecated": true, + "schema": { + "type": "string", + "description": "The media type.", + "nullable": true + } + } + ], + "requestBody": { + "description": "The create playlist payload.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePlaylistDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreatePlaylistDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreatePlaylistDto" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlaylistCreationResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/PlaylistCreationResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/PlaylistCreationResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Playlists/{playlistId}/Items": { + "post": { + "tags": [ + "Playlists" + ], + "summary": "Adds items to a playlist.", + "operationId": "AddToPlaylist", + "parameters": [ + { + "name": "playlistId", + "in": "path", + "description": "The playlist id.", + "required": true, + "schema": { + "type": "string", + "description": "The playlist id.", + "format": "uuid" + } + }, + { + "name": "ids", + "in": "query", + "description": "Item id, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Item id, comma delimited.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "The userId.", + "schema": { + "type": "string", + "description": "The userId.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Items added to playlist." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "Playlists" + ], + "summary": "Removes items from a playlist.", + "operationId": "RemoveFromPlaylist", + "parameters": [ + { + "name": "playlistId", + "in": "path", + "description": "The playlist id.", + "required": true, + "schema": { + "type": "string", + "description": "The playlist id." + } + }, + { + "name": "entryIds", + "in": "query", + "description": "The item ids, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The item ids, comma delimited.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Items removed." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "get": { + "tags": [ + "Playlists" + ], + "summary": "Gets the original items of a playlist.", + "operationId": "GetPlaylistItems", + "parameters": [ + { + "name": "playlistId", + "in": "path", + "description": "The playlist id.", + "required": true, + "schema": { + "type": "string", + "description": "The playlist id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Original playlist returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "404": { + "description": "Playlist not found." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Playlists/{playlistId}/Items/{itemId}/Move/{newIndex}": { + "post": { + "tags": [ + "Playlists" + ], + "summary": "Moves a playlist item.", + "operationId": "MoveItem", + "parameters": [ + { + "name": "playlistId", + "in": "path", + "description": "The playlist id.", + "required": true, + "schema": { + "type": "string", + "description": "The playlist id." + } + }, + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id." + } + }, + { + "name": "newIndex", + "in": "path", + "description": "The new index.", + "required": true, + "schema": { + "type": "integer", + "description": "The new index.", + "format": "int32" + } + } + ], + "responses": { + "204": { + "description": "Item moved to new index." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/Playing": { + "post": { + "tags": [ + "Playstate" + ], + "summary": "Reports playback has started within a session.", + "operationId": "ReportPlaybackStart", + "requestBody": { + "description": "The playback start info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlaybackStartInfo" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/PlaybackStartInfo" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/PlaybackStartInfo" + } + } + } + }, + "responses": { + "204": { + "description": "Playback start recorded." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/Playing/Ping": { + "post": { + "tags": [ + "Playstate" + ], + "summary": "Pings a playback session.", + "operationId": "PingPlaybackSession", + "parameters": [ + { + "name": "playSessionId", + "in": "query", + "description": "Playback session id.", + "schema": { + "type": "string", + "description": "Playback session id.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Playback session pinged." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/Playing/Progress": { + "post": { + "tags": [ + "Playstate" + ], + "summary": "Reports playback progress within a session.", + "operationId": "ReportPlaybackProgress", + "requestBody": { + "description": "The playback progress info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlaybackProgressInfo" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/PlaybackProgressInfo" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/PlaybackProgressInfo" + } + } + } + }, + "responses": { + "204": { + "description": "Playback progress recorded." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/Playing/Stopped": { + "post": { + "tags": [ + "Playstate" + ], + "summary": "Reports playback has stopped within a session.", + "operationId": "ReportPlaybackStopped", + "requestBody": { + "description": "The playback stop info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlaybackStopInfo" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/PlaybackStopInfo" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/PlaybackStopInfo" + } + } + } + }, + "responses": { + "204": { + "description": "Playback stop recorded." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/PlayedItems/{itemId}": { + "post": { + "tags": [ + "Playstate" + ], + "summary": "Marks an item as played for user.", + "operationId": "MarkPlayedItem", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "datePlayed", + "in": "query", + "description": "Optional. The date the item was played.", + "schema": { + "type": "string", + "description": "Optional. The date the item was played.", + "format": "date-time", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Item marked as played.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "Playstate" + ], + "summary": "Marks an item as unplayed for user.", + "operationId": "MarkUnplayedItem", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Item marked as unplayed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/PlayingItems/{itemId}": { + "post": { + "tags": [ + "Playstate" + ], + "summary": "Reports that a user has begun playing an item.", + "operationId": "OnPlaybackStart", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The id of the MediaSource.", + "schema": { + "type": "string", + "description": "The id of the MediaSource.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "The audio stream index.", + "schema": { + "type": "integer", + "description": "The audio stream index.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "The subtitle stream index.", + "schema": { + "type": "integer", + "description": "The subtitle stream index.", + "format": "int32", + "nullable": true + } + }, + { + "name": "playMethod", + "in": "query", + "description": "The play method.", + "schema": { + "$ref": "#/components/schemas/PlayMethod" + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "canSeek", + "in": "query", + "description": "Indicates if the client can seek.", + "schema": { + "type": "boolean", + "description": "Indicates if the client can seek.", + "default": false + } + } + ], + "responses": { + "204": { + "description": "Play start recorded." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "Playstate" + ], + "summary": "Reports that a user has stopped playing an item.", + "operationId": "OnPlaybackStopped", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The id of the MediaSource.", + "schema": { + "type": "string", + "description": "The id of the MediaSource.", + "nullable": true + } + }, + { + "name": "nextMediaType", + "in": "query", + "description": "The next media type that will play.", + "schema": { + "type": "string", + "description": "The next media type that will play.", + "nullable": true + } + }, + { + "name": "positionTicks", + "in": "query", + "description": "Optional. The position, in ticks, where playback stopped. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. The position, in ticks, where playback stopped. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Playback stop recorded." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/PlayingItems/{itemId}/Progress": { + "post": { + "tags": [ + "Playstate" + ], + "summary": "Reports a user's playback progress.", + "operationId": "OnPlaybackProgress", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The id of the MediaSource.", + "schema": { + "type": "string", + "description": "The id of the MediaSource.", + "nullable": true + } + }, + { + "name": "positionTicks", + "in": "query", + "description": "Optional. The current position, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. The current position, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "The audio stream index.", + "schema": { + "type": "integer", + "description": "The audio stream index.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "The subtitle stream index.", + "schema": { + "type": "integer", + "description": "The subtitle stream index.", + "format": "int32", + "nullable": true + } + }, + { + "name": "volumeLevel", + "in": "query", + "description": "Scale of 0-100.", + "schema": { + "type": "integer", + "description": "Scale of 0-100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "playMethod", + "in": "query", + "description": "The play method.", + "schema": { + "$ref": "#/components/schemas/PlayMethod" + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "repeatMode", + "in": "query", + "description": "The repeat mode.", + "schema": { + "$ref": "#/components/schemas/RepeatMode" + } + }, + { + "name": "isPaused", + "in": "query", + "description": "Indicates if the player is paused.", + "schema": { + "type": "boolean", + "description": "Indicates if the player is paused.", + "default": false + } + }, + { + "name": "isMuted", + "in": "query", + "description": "Indicates if the player is muted.", + "schema": { + "type": "boolean", + "description": "Indicates if the player is muted.", + "default": false + } + } + ], + "responses": { + "204": { + "description": "Play progress recorded." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Plugins": { + "get": { + "tags": [ + "Plugins" + ], + "summary": "Gets a list of currently installed plugins.", + "operationId": "GetPlugins", + "responses": { + "200": { + "description": "Installed plugins returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Plugins/{pluginId}": { + "delete": { + "tags": [ + "Plugins" + ], + "summary": "Uninstalls a plugin.", + "operationId": "UninstallPlugin", + "parameters": [ + { + "name": "pluginId", + "in": "path", + "description": "Plugin id.", + "required": true, + "schema": { + "type": "string", + "description": "Plugin id.", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "Plugin uninstalled." + }, + "404": { + "description": "Plugin not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": true, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/Plugins/{pluginId}/{version}": { + "delete": { + "tags": [ + "Plugins" + ], + "summary": "Uninstalls a plugin by version.", + "operationId": "UninstallPluginByVersion", + "parameters": [ + { + "name": "pluginId", + "in": "path", + "description": "Plugin id.", + "required": true, + "schema": { + "type": "string", + "description": "Plugin id.", + "format": "uuid" + } + }, + { + "name": "version", + "in": "path", + "description": "Plugin version.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Version" + } + } + ], + "responses": { + "204": { + "description": "Plugin uninstalled." + }, + "404": { + "description": "Plugin not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/Plugins/{pluginId}/{version}/Disable": { + "post": { + "tags": [ + "Plugins" + ], + "summary": "Disable a plugin.", + "operationId": "DisablePlugin", + "parameters": [ + { + "name": "pluginId", + "in": "path", + "description": "Plugin id.", + "required": true, + "schema": { + "type": "string", + "description": "Plugin id.", + "format": "uuid" + } + }, + { + "name": "version", + "in": "path", + "description": "Plugin version.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Version" + } + } + ], + "responses": { + "204": { + "description": "Plugin disabled." + }, + "404": { + "description": "Plugin not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/Plugins/{pluginId}/{version}/Enable": { + "post": { + "tags": [ + "Plugins" + ], + "summary": "Enables a disabled plugin.", + "operationId": "EnablePlugin", + "parameters": [ + { + "name": "pluginId", + "in": "path", + "description": "Plugin id.", + "required": true, + "schema": { + "type": "string", + "description": "Plugin id.", + "format": "uuid" + } + }, + { + "name": "version", + "in": "path", + "description": "Plugin version.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Version" + } + } + ], + "responses": { + "204": { + "description": "Plugin enabled." + }, + "404": { + "description": "Plugin not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/Plugins/{pluginId}/{version}/Image": { + "get": { + "tags": [ + "Plugins" + ], + "summary": "Gets a plugin's image.", + "operationId": "GetPluginImage", + "parameters": [ + { + "name": "pluginId", + "in": "path", + "description": "Plugin id.", + "required": true, + "schema": { + "type": "string", + "description": "Plugin id.", + "format": "uuid" + } + }, + { + "name": "version", + "in": "path", + "description": "Plugin version.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Version" + } + } + ], + "responses": { + "200": { + "description": "Plugin image returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Plugins/{pluginId}/Configuration": { + "get": { + "tags": [ + "Plugins" + ], + "summary": "Gets plugin configuration.", + "operationId": "GetPluginConfiguration", + "parameters": [ + { + "name": "pluginId", + "in": "path", + "description": "Plugin id.", + "required": true, + "schema": { + "type": "string", + "description": "Plugin id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Plugin configuration returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BasePluginConfiguration" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BasePluginConfiguration" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BasePluginConfiguration" + } + } + } + }, + "404": { + "description": "Plugin not found or plugin configuration not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "Plugins" + ], + "summary": "Updates plugin configuration.", + "description": "Accepts plugin configuration as JSON body.", + "operationId": "UpdatePluginConfiguration", + "parameters": [ + { + "name": "pluginId", + "in": "path", + "description": "Plugin id.", + "required": true, + "schema": { + "type": "string", + "description": "Plugin id.", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "Plugin configuration updated." + }, + "404": { + "description": "Plugin not found or plugin does not have configuration.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Plugins/{pluginId}/Manifest": { + "post": { + "tags": [ + "Plugins" + ], + "summary": "Gets a plugin's manifest.", + "operationId": "GetPluginManifest", + "parameters": [ + { + "name": "pluginId", + "in": "path", + "description": "Plugin id.", + "required": true, + "schema": { + "type": "string", + "description": "Plugin id.", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "Plugin manifest returned." + }, + "404": { + "description": "Plugin not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Plugins/SecurityInfo": { + "post": { + "tags": [ + "Plugins" + ], + "summary": "Updates plugin security info.", + "operationId": "UpdatePluginSecurityInfo", + "requestBody": { + "description": "Plugin security info.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PluginSecurityInfo" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/PluginSecurityInfo" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/PluginSecurityInfo" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Plugin security info updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": true, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation", + "DefaultAuthorization" + ] + } + ] + } + }, + "/QuickConnect/Activate": { + "post": { + "tags": [ + "QuickConnect" + ], + "summary": "Temporarily activates quick connect for five minutes.", + "operationId": "Activate", + "responses": { + "204": { + "description": "Quick connect has been temporarily activated." + }, + "403": { + "description": "Quick connect is unavailable on this server.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/QuickConnect/Authorize": { + "post": { + "tags": [ + "QuickConnect" + ], + "summary": "Authorizes a pending quick connect request.", + "operationId": "Authorize", + "parameters": [ + { + "name": "code", + "in": "query", + "description": "Quick connect code to authorize.", + "required": true, + "schema": { + "type": "string", + "description": "Quick connect code to authorize." + } + } + ], + "responses": { + "200": { + "description": "Quick connect result authorized successfully.", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "boolean" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "boolean" + } + } + } + }, + "403": { + "description": "Unknown user id.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/QuickConnect/Available": { + "post": { + "tags": [ + "QuickConnect" + ], + "summary": "Enables or disables quick connect.", + "operationId": "Available", + "parameters": [ + { + "name": "status", + "in": "query", + "description": "New MediaBrowser.Model.QuickConnect.QuickConnectState.", + "schema": { + "$ref": "#/components/schemas/QuickConnectState" + } + } + ], + "responses": { + "204": { + "description": "Quick connect state set successfully." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/QuickConnect/Connect": { + "get": { + "tags": [ + "QuickConnect" + ], + "summary": "Attempts to retrieve authentication information.", + "operationId": "Connect", + "parameters": [ + { + "name": "secret", + "in": "query", + "description": "Secret previously returned from the Initiate endpoint.", + "required": true, + "schema": { + "type": "string", + "description": "Secret previously returned from the Initiate endpoint." + } + } + ], + "responses": { + "200": { + "description": "Quick connect result returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QuickConnectResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/QuickConnectResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/QuickConnectResult" + } + } + } + }, + "404": { + "description": "Unknown quick connect secret.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/QuickConnect/Deauthorize": { + "post": { + "tags": [ + "QuickConnect" + ], + "summary": "Deauthorize all quick connect devices for the current user.", + "operationId": "Deauthorize", + "responses": { + "200": { + "description": "All quick connect devices were deleted.", + "content": { + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "integer", + "format": "int32" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/QuickConnect/Initiate": { + "get": { + "tags": [ + "QuickConnect" + ], + "summary": "Initiate a new quick connect request.", + "operationId": "Initiate", + "responses": { + "200": { + "description": "Quick connect request successfully created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QuickConnectResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/QuickConnectResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/QuickConnectResult" + } + } + } + }, + "401": { + "description": "Quick connect is not active on this server." + } + } + } + }, + "/QuickConnect/Status": { + "get": { + "tags": [ + "QuickConnect" + ], + "summary": "Gets the current quick connect state.", + "operationId": "GetStatus", + "responses": { + "200": { + "description": "Quick connect state returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QuickConnectState" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/QuickConnectState" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/QuickConnectState" + } + } + } + } + } + } + }, + "/Images/Remote": { + "get": { + "tags": [ + "RemoteImage" + ], + "summary": "Gets a remote image.", + "operationId": "GetRemoteImage", + "parameters": [ + { + "name": "imageUrl", + "in": "query", + "description": "The image url.", + "required": true, + "schema": { + "type": "string", + "description": "The image url.", + "format": "uri" + } + } + ], + "responses": { + "200": { + "description": "Remote image returned.", + "content": { + "image/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Remote image not found.", + "content": { + "application/octet-stream": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Items/{itemId}/RemoteImages": { + "get": { + "tags": [ + "RemoteImage" + ], + "summary": "Gets available remote images for an item.", + "operationId": "GetRemoteImages", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item Id.", + "required": true, + "schema": { + "type": "string", + "description": "Item Id.", + "format": "uuid" + } + }, + { + "name": "type", + "in": "query", + "description": "The image type.", + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "providerName", + "in": "query", + "description": "Optional. The image provider to use.", + "schema": { + "type": "string", + "description": "Optional. The image provider to use.", + "nullable": true + } + }, + { + "name": "includeAllLanguages", + "in": "query", + "description": "Optional. Include all languages.", + "schema": { + "type": "boolean", + "description": "Optional. Include all languages.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Remote Images returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemoteImageResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/RemoteImageResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/RemoteImageResult" + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/RemoteImages/Download": { + "post": { + "tags": [ + "RemoteImage" + ], + "summary": "Downloads a remote image for an item.", + "operationId": "DownloadRemoteImage", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item Id.", + "required": true, + "schema": { + "type": "string", + "description": "Item Id.", + "format": "uuid" + } + }, + { + "name": "type", + "in": "query", + "description": "The image type.", + "required": true, + "schema": { + "$ref": "#/components/schemas/ImageType" + } + }, + { + "name": "imageUrl", + "in": "query", + "description": "The image url.", + "schema": { + "type": "string", + "description": "The image url.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Remote image downloaded." + }, + "404": { + "description": "Remote image not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Items/{itemId}/RemoteImages/Providers": { + "get": { + "tags": [ + "RemoteImage" + ], + "summary": "Gets available remote image providers for an item.", + "operationId": "GetRemoteImageProviders", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "Item Id.", + "required": true, + "schema": { + "type": "string", + "description": "Item Id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Returned remote image providers.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageProviderInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageProviderInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageProviderInfo" + } + } + } + } + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/ScheduledTasks": { + "get": { + "tags": [ + "ScheduledTasks" + ], + "summary": "Get tasks.", + "operationId": "GetTasks", + "parameters": [ + { + "name": "isHidden", + "in": "query", + "description": "Optional filter tasks that are hidden, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter tasks that are hidden, or not.", + "nullable": true + } + }, + { + "name": "isEnabled", + "in": "query", + "description": "Optional filter tasks that are enabled, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter tasks that are enabled, or not.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Scheduled tasks retrieved.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/ScheduledTasks/{taskId}": { + "get": { + "tags": [ + "ScheduledTasks" + ], + "summary": "Get task by id.", + "operationId": "GetTask", + "parameters": [ + { + "name": "taskId", + "in": "path", + "description": "Task Id.", + "required": true, + "schema": { + "type": "string", + "description": "Task Id." + } + } + ], + "responses": { + "200": { + "description": "Task retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/TaskInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/TaskInfo" + } + } + } + }, + "404": { + "description": "Task not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/ScheduledTasks/{taskId}/Triggers": { + "post": { + "tags": [ + "ScheduledTasks" + ], + "summary": "Update specified task triggers.", + "operationId": "UpdateTask", + "parameters": [ + { + "name": "taskId", + "in": "path", + "description": "Task Id.", + "required": true, + "schema": { + "type": "string", + "description": "Task Id." + } + } + ], + "requestBody": { + "description": "Triggers.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskTriggerInfo" + }, + "description": "Triggers." + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskTriggerInfo" + }, + "description": "Triggers." + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskTriggerInfo" + }, + "description": "Triggers." + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Task triggers updated." + }, + "404": { + "description": "Task not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/ScheduledTasks/Running/{taskId}": { + "post": { + "tags": [ + "ScheduledTasks" + ], + "summary": "Start specified task.", + "operationId": "StartTask", + "parameters": [ + { + "name": "taskId", + "in": "path", + "description": "Task Id.", + "required": true, + "schema": { + "type": "string", + "description": "Task Id." + } + } + ], + "responses": { + "204": { + "description": "Task started." + }, + "404": { + "description": "Task not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "delete": { + "tags": [ + "ScheduledTasks" + ], + "summary": "Stop specified task.", + "operationId": "StopTask", + "parameters": [ + { + "name": "taskId", + "in": "path", + "description": "Task Id.", + "required": true, + "schema": { + "type": "string", + "description": "Task Id." + } + } + ], + "responses": { + "204": { + "description": "Task stopped." + }, + "404": { + "description": "Task not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Search/Hints": { + "get": { + "tags": [ + "Search" + ], + "summary": "Gets the search hint result.", + "operationId": "Get", + "parameters": [ + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Supply a user id to search within a user's library or omit to search all.", + "schema": { + "type": "string", + "description": "Optional. Supply a user id to search within a user's library or omit to search all.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "The search term to filter on.", + "required": true, + "schema": { + "type": "string", + "description": "The search term to filter on." + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "If specified, only results with the specified item types are returned. This allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "If specified, only results with the specified item types are returned. This allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "If specified, results with these item types are filtered out. This allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "If specified, results with these item types are filtered out. This allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "mediaTypes", + "in": "query", + "description": "If specified, only results with the specified media types are returned. This allows multiple, comma delimeted.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "If specified, only results with the specified media types are returned. This allows multiple, comma delimeted.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "If specified, only children of the parent are returned.", + "schema": { + "type": "string", + "description": "If specified, only children of the parent are returned.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "isMovie", + "in": "query", + "description": "Optional filter for movies.", + "schema": { + "type": "boolean", + "description": "Optional filter for movies.", + "nullable": true + } + }, + { + "name": "isSeries", + "in": "query", + "description": "Optional filter for series.", + "schema": { + "type": "boolean", + "description": "Optional filter for series.", + "nullable": true + } + }, + { + "name": "isNews", + "in": "query", + "description": "Optional filter for news.", + "schema": { + "type": "boolean", + "description": "Optional filter for news.", + "nullable": true + } + }, + { + "name": "isKids", + "in": "query", + "description": "Optional filter for kids.", + "schema": { + "type": "boolean", + "description": "Optional filter for kids.", + "nullable": true + } + }, + { + "name": "isSports", + "in": "query", + "description": "Optional filter for sports.", + "schema": { + "type": "boolean", + "description": "Optional filter for sports.", + "nullable": true + } + }, + { + "name": "includePeople", + "in": "query", + "description": "Optional filter whether to include people.", + "schema": { + "type": "boolean", + "description": "Optional filter whether to include people.", + "default": true + } + }, + { + "name": "includeMedia", + "in": "query", + "description": "Optional filter whether to include media.", + "schema": { + "type": "boolean", + "description": "Optional filter whether to include media.", + "default": true + } + }, + { + "name": "includeGenres", + "in": "query", + "description": "Optional filter whether to include genres.", + "schema": { + "type": "boolean", + "description": "Optional filter whether to include genres.", + "default": true + } + }, + { + "name": "includeStudios", + "in": "query", + "description": "Optional filter whether to include studios.", + "schema": { + "type": "boolean", + "description": "Optional filter whether to include studios.", + "default": true + } + }, + { + "name": "includeArtists", + "in": "query", + "description": "Optional filter whether to include artists.", + "schema": { + "type": "boolean", + "description": "Optional filter whether to include artists.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Search hint returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchHintResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/SearchHintResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/SearchHintResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Auth/PasswordResetProviders": { + "get": { + "tags": [ + "Session" + ], + "summary": "Get all password reset providers.", + "operationId": "GetPasswordResetProviders", + "responses": { + "200": { + "description": "Password reset providers retrieved.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Auth/Providers": { + "get": { + "tags": [ + "Session" + ], + "summary": "Get all auth providers.", + "operationId": "GetAuthProviders", + "responses": { + "200": { + "description": "Auth providers retrieved.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Sessions": { + "get": { + "tags": [ + "Session" + ], + "summary": "Gets a list of sessions.", + "operationId": "GetSessions", + "parameters": [ + { + "name": "controllableByUserId", + "in": "query", + "description": "Filter by sessions that a given user is allowed to remote control.", + "schema": { + "type": "string", + "description": "Filter by sessions that a given user is allowed to remote control.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "Filter by device Id.", + "schema": { + "type": "string", + "description": "Filter by device Id.", + "nullable": true + } + }, + { + "name": "activeWithinSeconds", + "in": "query", + "description": "Optional. Filter by sessions that were active in the last n seconds.", + "schema": { + "type": "integer", + "description": "Optional. Filter by sessions that were active in the last n seconds.", + "format": "int32", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "List of sessions returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SessionInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SessionInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SessionInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/{sessionId}/Command": { + "post": { + "tags": [ + "Session" + ], + "summary": "Issues a full general command to a client.", + "operationId": "SendFullGeneralCommand", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "description": "The session id.", + "required": true, + "schema": { + "type": "string", + "description": "The session id." + } + } + ], + "requestBody": { + "description": "The MediaBrowser.Model.Session.GeneralCommand.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GeneralCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/GeneralCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/GeneralCommand" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Full general command sent to session." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/{sessionId}/Command/{command}": { + "post": { + "tags": [ + "Session" + ], + "summary": "Issues a general command to a client.", + "operationId": "SendGeneralCommand", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "description": "The session id.", + "required": true, + "schema": { + "type": "string", + "description": "The session id." + } + }, + { + "name": "command", + "in": "path", + "description": "The command to send.", + "required": true, + "schema": { + "$ref": "#/components/schemas/GeneralCommandType" + } + } + ], + "responses": { + "204": { + "description": "General command sent to session." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/{sessionId}/Message": { + "post": { + "tags": [ + "Session" + ], + "summary": "Issues a command to a client to display a message to the user.", + "operationId": "SendMessageCommand", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "description": "The session id.", + "required": true, + "schema": { + "type": "string", + "description": "The session id." + } + }, + { + "name": "text", + "in": "query", + "description": "The message test.", + "required": true, + "schema": { + "type": "string", + "description": "The message test." + } + }, + { + "name": "header", + "in": "query", + "description": "The message header.", + "schema": { + "type": "string", + "description": "The message header.", + "nullable": true + } + }, + { + "name": "timeoutMs", + "in": "query", + "description": "The message timeout. If omitted the user will have to confirm viewing the message.", + "schema": { + "type": "integer", + "description": "The message timeout. If omitted the user will have to confirm viewing the message.", + "format": "int64", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Message sent." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/{sessionId}/Playing": { + "post": { + "tags": [ + "Session" + ], + "summary": "Instructs a session to play an item.", + "operationId": "Play", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "description": "The session id.", + "required": true, + "schema": { + "type": "string", + "description": "The session id." + } + }, + { + "name": "playCommand", + "in": "query", + "description": "The type of play command to issue (PlayNow, PlayNext, PlayLast). Clients who have not yet implemented play next and play last may play now.", + "required": true, + "schema": { + "$ref": "#/components/schemas/PlayCommand" + } + }, + { + "name": "itemIds", + "in": "query", + "description": "The ids of the items to play, comma delimited.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "The ids of the items to play, comma delimited." + } + }, + { + "name": "startPositionTicks", + "in": "query", + "description": "The starting position of the first item.", + "schema": { + "type": "integer", + "description": "The starting position of the first item.", + "format": "int64", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Instruction sent to session." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/{sessionId}/Playing/{command}": { + "post": { + "tags": [ + "Session" + ], + "summary": "Issues a playstate command to a client.", + "operationId": "SendPlaystateCommand", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "description": "The session id.", + "required": true, + "schema": { + "type": "string", + "description": "The session id." + } + }, + { + "name": "command", + "in": "path", + "description": "The MediaBrowser.Model.Session.PlaystateCommand.", + "required": true, + "schema": { + "$ref": "#/components/schemas/PlaystateCommand" + } + }, + { + "name": "seekPositionTicks", + "in": "query", + "description": "The optional position ticks.", + "schema": { + "type": "integer", + "description": "The optional position ticks.", + "format": "int64", + "nullable": true + } + }, + { + "name": "controllingUserId", + "in": "query", + "description": "The optional controlling user id.", + "schema": { + "type": "string", + "description": "The optional controlling user id.", + "nullable": true + } + } + ], + "responses": { + "204": { + "description": "Playstate command sent to session." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/{sessionId}/System/{command}": { + "post": { + "tags": [ + "Session" + ], + "summary": "Issues a system command to a client.", + "operationId": "SendSystemCommand", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "description": "The session id.", + "required": true, + "schema": { + "type": "string", + "description": "The session id." + } + }, + { + "name": "command", + "in": "path", + "description": "The command to send.", + "required": true, + "schema": { + "$ref": "#/components/schemas/GeneralCommandType" + } + } + ], + "responses": { + "204": { + "description": "System command sent to session." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/{sessionId}/User/{userId}": { + "post": { + "tags": [ + "Session" + ], + "summary": "Adds an additional user to a session.", + "operationId": "AddUserToSession", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "description": "The session id.", + "required": true, + "schema": { + "type": "string", + "description": "The session id." + } + }, + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "User added to session." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "Session" + ], + "summary": "Removes an additional user from a session.", + "operationId": "RemoveUserFromSession", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "description": "The session id.", + "required": true, + "schema": { + "type": "string", + "description": "The session id." + } + }, + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "User removed from session." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/{sessionId}/Viewing": { + "post": { + "tags": [ + "Session" + ], + "summary": "Instructs a session to browse to an item or view.", + "operationId": "DisplayContent", + "parameters": [ + { + "name": "sessionId", + "in": "path", + "description": "The session Id.", + "required": true, + "schema": { + "type": "string", + "description": "The session Id." + } + }, + { + "name": "itemType", + "in": "query", + "description": "The type of item to browse to.", + "required": true, + "schema": { + "type": "string", + "description": "The type of item to browse to." + } + }, + { + "name": "itemId", + "in": "query", + "description": "The Id of the item.", + "required": true, + "schema": { + "type": "string", + "description": "The Id of the item." + } + }, + { + "name": "itemName", + "in": "query", + "description": "The name of the item.", + "required": true, + "schema": { + "type": "string", + "description": "The name of the item." + } + } + ], + "responses": { + "204": { + "description": "Instruction sent to session." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/Capabilities": { + "post": { + "tags": [ + "Session" + ], + "summary": "Updates capabilities for a device.", + "operationId": "PostCapabilities", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "The session id.", + "schema": { + "type": "string", + "description": "The session id.", + "nullable": true + } + }, + { + "name": "playableMediaTypes", + "in": "query", + "description": "A list of playable media types, comma delimited. Audio, Video, Book, Photo.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of playable media types, comma delimited. Audio, Video, Book, Photo.", + "nullable": true + } + }, + { + "name": "supportedCommands", + "in": "query", + "description": "A list of supported remote control commands, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GeneralCommandType" + }, + "description": "A list of supported remote control commands, comma delimited.", + "nullable": true + } + }, + { + "name": "supportsMediaControl", + "in": "query", + "description": "Determines whether media can be played remotely..", + "schema": { + "type": "boolean", + "description": "Determines whether media can be played remotely..", + "default": false + } + }, + { + "name": "supportsSync", + "in": "query", + "description": "Determines whether sync is supported.", + "schema": { + "type": "boolean", + "description": "Determines whether sync is supported.", + "default": false + } + }, + { + "name": "supportsPersistentIdentifier", + "in": "query", + "description": "Determines whether the device supports a unique identifier.", + "schema": { + "type": "boolean", + "description": "Determines whether the device supports a unique identifier.", + "default": true + } + } + ], + "responses": { + "204": { + "description": "Capabilities posted." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/Capabilities/Full": { + "post": { + "tags": [ + "Session" + ], + "summary": "Updates capabilities for a device.", + "operationId": "PostFullCapabilities", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "The session id.", + "schema": { + "type": "string", + "description": "The session id.", + "nullable": true + } + } + ], + "requestBody": { + "description": "The MediaBrowser.Model.Session.ClientCapabilities.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClientCapabilitiesDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ClientCapabilitiesDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ClientCapabilitiesDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Capabilities updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/Logout": { + "post": { + "tags": [ + "Session" + ], + "summary": "Reports that a session has ended.", + "operationId": "ReportSessionEnded", + "responses": { + "204": { + "description": "Session end reported to server." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Sessions/Viewing": { + "post": { + "tags": [ + "Session" + ], + "summary": "Reports that a session is viewing an item.", + "operationId": "ReportViewing", + "parameters": [ + { + "name": "sessionId", + "in": "query", + "description": "The session id.", + "schema": { + "type": "string", + "description": "The session id.", + "nullable": true + } + }, + { + "name": "itemId", + "in": "query", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id." + } + } + ], + "responses": { + "204": { + "description": "Session reported to server." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Startup/Complete": { + "post": { + "tags": [ + "Startup" + ], + "summary": "Completes the startup wizard.", + "operationId": "CompleteWizard", + "responses": { + "204": { + "description": "Startup wizard completed." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Startup/Configuration": { + "get": { + "tags": [ + "Startup" + ], + "summary": "Gets the initial startup wizard configuration.", + "operationId": "GetStartupConfiguration", + "responses": { + "200": { + "description": "Initial startup wizard configuration retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartupConfigurationDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/StartupConfigurationDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/StartupConfigurationDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + }, + "post": { + "tags": [ + "Startup" + ], + "summary": "Sets the initial startup wizard configuration.", + "operationId": "UpdateInitialConfiguration", + "requestBody": { + "description": "The updated startup configuration.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartupConfigurationDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/StartupConfigurationDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/StartupConfigurationDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Configuration saved." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Startup/FirstUser": { + "get": { + "tags": [ + "Startup" + ], + "summary": "Gets the first user.", + "operationId": "GetFirstUser_2", + "responses": { + "200": { + "description": "Initial user retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartupUserDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/StartupUserDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/StartupUserDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Startup/RemoteAccess": { + "post": { + "tags": [ + "Startup" + ], + "summary": "Sets remote access and UPnP.", + "operationId": "SetRemoteAccess", + "requestBody": { + "description": "The startup remote access dto.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartupRemoteAccessDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/StartupRemoteAccessDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/StartupRemoteAccessDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Configuration saved." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Startup/User": { + "get": { + "tags": [ + "Startup" + ], + "summary": "Gets the first user.", + "operationId": "GetFirstUser", + "responses": { + "200": { + "description": "Initial user retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartupUserDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/StartupUserDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/StartupUserDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + }, + "post": { + "tags": [ + "Startup" + ], + "summary": "Sets the user name and password.", + "operationId": "UpdateStartupUser", + "requestBody": { + "description": "The DTO containing username and password.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartupUserDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/StartupUserDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/StartupUserDto" + } + } + } + }, + "responses": { + "204": { + "description": "Updated user name and password." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrElevated" + ] + } + ] + } + }, + "/Studios": { + "get": { + "tags": [ + "Studios" + ], + "summary": "Gets all studios from a given item, folder, or the entire library.", + "operationId": "GetStudios", + "parameters": [ + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "Optional. Search term.", + "schema": { + "type": "string", + "description": "Optional. Search term.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional filter by items that are marked as favorite, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are marked as favorite, or not.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional, include user data.", + "schema": { + "type": "boolean", + "description": "Optional, include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional, the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional, the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "User id.", + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "nameStartsWithOrGreater", + "in": "query", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "nullable": true + } + }, + { + "name": "nameStartsWith", + "in": "query", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "nullable": true + } + }, + { + "name": "nameLessThan", + "in": "query", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional, include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional, include image information in output.", + "default": true, + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Total record count.", + "schema": { + "type": "boolean", + "description": "Total record count.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Studios returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Studios/{name}": { + "get": { + "tags": [ + "Studios" + ], + "summary": "Gets a studio by name.", + "operationId": "GetStudio", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "Studio name.", + "required": true, + "schema": { + "type": "string", + "description": "Studio name." + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Studio returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/FallbackFont/Fonts": { + "get": { + "tags": [ + "Subtitle" + ], + "summary": "Gets a list of available fallback font files.", + "operationId": "GetFallbackFontList", + "responses": { + "200": { + "description": "Information retrieved.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FontFile" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FontFile" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FontFile" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/FallbackFont/Fonts/{name}": { + "get": { + "tags": [ + "Subtitle" + ], + "summary": "Gets a fallback font file.", + "operationId": "GetFallbackFont", + "parameters": [ + { + "name": "name", + "in": "path", + "description": "The name of the fallback font file to get.", + "required": true, + "schema": { + "type": "string", + "description": "The name of the fallback font file to get." + } + } + ], + "responses": { + "200": { + "description": "Fallback font file retrieved.", + "content": { + "font/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/RemoteSearch/Subtitles/{language}": { + "get": { + "tags": [ + "Subtitle" + ], + "summary": "Search remote subtitles.", + "operationId": "SearchRemoteSubtitles", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "language", + "in": "path", + "description": "The language of the subtitles.", + "required": true, + "schema": { + "type": "string", + "description": "The language of the subtitles." + } + }, + { + "name": "isPerfectMatch", + "in": "query", + "description": "Optional. Only show subtitles which are a perfect match.", + "schema": { + "type": "boolean", + "description": "Optional. Only show subtitles which are a perfect match.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Subtitles retrieved.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSubtitleInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSubtitleInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSubtitleInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Items/{itemId}/RemoteSearch/Subtitles/{subtitleId}": { + "post": { + "tags": [ + "Subtitle" + ], + "summary": "Downloads a remote subtitle.", + "operationId": "DownloadRemoteSubtitles", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "subtitleId", + "in": "path", + "description": "The subtitle id.", + "required": true, + "schema": { + "type": "string", + "description": "The subtitle id." + } + } + ], + "responses": { + "204": { + "description": "Subtitle downloaded." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Providers/Subtitles/Subtitles/{id}": { + "get": { + "tags": [ + "Subtitle" + ], + "summary": "Gets the remote subtitles.", + "operationId": "GetRemoteSubtitles", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id." + } + } + ], + "responses": { + "200": { + "description": "File returned.", + "content": { + "text/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Videos/{itemId}/{mediaSourceId}/Subtitles/{index}/{startPositionTicks}/Stream.{format}": { + "get": { + "tags": [ + "Subtitle" + ], + "summary": "Gets subtitles in a specified format.", + "operationId": "GetSubtitleWithTicks", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "mediaSourceId", + "in": "path", + "description": "The media source id.", + "required": true, + "schema": { + "type": "string", + "description": "The media source id." + } + }, + { + "name": "index", + "in": "path", + "description": "The subtitle stream index.", + "required": true, + "schema": { + "type": "integer", + "description": "The subtitle stream index.", + "format": "int32" + } + }, + { + "name": "startPositionTicks", + "in": "path", + "description": "Optional. The start position of the subtitle in ticks.", + "required": true, + "schema": { + "type": "integer", + "description": "Optional. The start position of the subtitle in ticks.", + "format": "int64" + } + }, + { + "name": "format", + "in": "path", + "description": "The format of the returned subtitle.", + "required": true, + "schema": { + "type": "string", + "description": "The format of the returned subtitle." + } + }, + { + "name": "endPositionTicks", + "in": "query", + "description": "Optional. The end position of the subtitle in ticks.", + "schema": { + "type": "integer", + "description": "Optional. The end position of the subtitle in ticks.", + "format": "int64", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Optional. Whether to copy the timestamps.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to copy the timestamps.", + "default": false + } + }, + { + "name": "addVttTimeMap", + "in": "query", + "description": "Optional. Whether to add a VTT time map.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to add a VTT time map.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "File returned.", + "content": { + "text/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/Videos/{itemId}/{mediaSourceId}/Subtitles/{index}/Stream.{format}": { + "get": { + "tags": [ + "Subtitle" + ], + "summary": "Gets subtitles in a specified format.", + "operationId": "GetSubtitle", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "mediaSourceId", + "in": "path", + "description": "The media source id.", + "required": true, + "schema": { + "type": "string", + "description": "The media source id." + } + }, + { + "name": "index", + "in": "path", + "description": "The subtitle stream index.", + "required": true, + "schema": { + "type": "integer", + "description": "The subtitle stream index.", + "format": "int32" + } + }, + { + "name": "format", + "in": "path", + "description": "The format of the returned subtitle.", + "required": true, + "schema": { + "type": "string", + "description": "The format of the returned subtitle." + } + }, + { + "name": "endPositionTicks", + "in": "query", + "description": "Optional. The end position of the subtitle in ticks.", + "schema": { + "type": "integer", + "description": "Optional. The end position of the subtitle in ticks.", + "format": "int64", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Optional. Whether to copy the timestamps.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to copy the timestamps.", + "default": false + } + }, + { + "name": "addVttTimeMap", + "in": "query", + "description": "Optional. Whether to add a VTT time map.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to add a VTT time map.", + "default": false + } + }, + { + "name": "startPositionTicks", + "in": "query", + "description": "Optional. The start position of the subtitle in ticks.", + "schema": { + "type": "integer", + "description": "Optional. The start position of the subtitle in ticks.", + "format": "int64", + "default": 0 + } + } + ], + "responses": { + "200": { + "description": "File returned.", + "content": { + "text/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/Videos/{itemId}/{mediaSourceId}/Subtitles/{index}/subtitles.m3u8": { + "get": { + "tags": [ + "Subtitle" + ], + "summary": "Gets an HLS subtitle playlist.", + "operationId": "GetSubtitlePlaylist", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "index", + "in": "path", + "description": "The subtitle stream index.", + "required": true, + "schema": { + "type": "integer", + "description": "The subtitle stream index.", + "format": "int32" + } + }, + { + "name": "mediaSourceId", + "in": "path", + "description": "The media source id.", + "required": true, + "schema": { + "type": "string", + "description": "The media source id." + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The subtitle segment length.", + "required": true, + "schema": { + "type": "integer", + "description": "The subtitle segment length.", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Subtitle playlist retrieved.", + "content": { + "application/x-mpegURL": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Videos/{itemId}/Subtitles": { + "post": { + "tags": [ + "Subtitle" + ], + "summary": "Upload an external subtitle file.", + "operationId": "UploadSubtitle", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item the subtitle belongs to.", + "required": true, + "schema": { + "type": "string", + "description": "The item the subtitle belongs to.", + "format": "uuid" + } + } + ], + "requestBody": { + "description": "The request body.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UploadSubtitleDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UploadSubtitleDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UploadSubtitleDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Subtitle uploaded." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Videos/{itemId}/Subtitles/{index}": { + "delete": { + "tags": [ + "Subtitle" + ], + "summary": "Deletes an external subtitle file.", + "operationId": "DeleteSubtitle", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "index", + "in": "path", + "description": "The index of the subtitle file.", + "required": true, + "schema": { + "type": "integer", + "description": "The index of the subtitle file.", + "format": "int32" + } + } + ], + "responses": { + "204": { + "description": "Subtitle deleted." + }, + "404": { + "description": "Item not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Users/{userId}/Suggestions": { + "get": { + "tags": [ + "Suggestions" + ], + "summary": "Gets suggestions.", + "operationId": "GetSuggestions", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + }, + { + "name": "mediaType", + "in": "query", + "description": "The media types.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The media types.", + "nullable": true + } + }, + { + "name": "type", + "in": "query", + "description": "The type.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The type.", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The start index.", + "schema": { + "type": "integer", + "description": "Optional. The start index.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The limit.", + "schema": { + "type": "integer", + "description": "Optional. The limit.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Whether to enable the total record count.", + "schema": { + "type": "boolean", + "description": "Whether to enable the total record count.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Suggestions returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/SyncPlay/Buffering": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Notify SyncPlay group that member is buffering.", + "operationId": "SyncPlayBuffering", + "requestBody": { + "description": "The player status.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BufferRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/BufferRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/BufferRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Group state update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/Join": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Join an existing SyncPlay group.", + "operationId": "SyncPlayJoinGroup", + "requestBody": { + "description": "The group to join.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JoinGroupRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/JoinGroupRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/JoinGroupRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Group join successful." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayJoinGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/Leave": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Leave the joined SyncPlay group.", + "operationId": "SyncPlayLeaveGroup", + "responses": { + "204": { + "description": "Group leave successful." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/List": { + "get": { + "tags": [ + "SyncPlay" + ], + "summary": "Gets all SyncPlay groups.", + "operationId": "SyncPlayGetGroups", + "responses": { + "200": { + "description": "Groups returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupInfoDto" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupInfoDto" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupInfoDto" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayJoinGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/MovePlaylistItem": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request to move an item in the playlist in SyncPlay group.", + "operationId": "SyncPlayMovePlaylistItem", + "requestBody": { + "description": "The new position for the item.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovePlaylistItemRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MovePlaylistItemRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/MovePlaylistItemRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Queue update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/New": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Create a new SyncPlay group.", + "operationId": "SyncPlayCreateGroup", + "requestBody": { + "description": "The settings of the new group.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewGroupRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/NewGroupRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/NewGroupRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "New group created." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayCreateGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/NextItem": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request next item in SyncPlay group.", + "operationId": "SyncPlayNextItem", + "requestBody": { + "description": "The current item information.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NextItemRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/NextItemRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/NextItemRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Next item update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/Pause": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request pause in SyncPlay group.", + "operationId": "SyncPlayPause", + "responses": { + "204": { + "description": "Pause update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/Ping": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Update session ping.", + "operationId": "SyncPlayPing", + "requestBody": { + "description": "The new ping.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PingRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/PingRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/PingRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Ping updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/PreviousItem": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request previous item in SyncPlay group.", + "operationId": "SyncPlayPreviousItem", + "requestBody": { + "description": "The current item information.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PreviousItemRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/PreviousItemRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/PreviousItemRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Previous item update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/Queue": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request to queue items to the playlist of a SyncPlay group.", + "operationId": "SyncPlayQueue", + "requestBody": { + "description": "The items to add.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueueRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QueueRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/QueueRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Queue update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/Ready": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Notify SyncPlay group that member is ready for playback.", + "operationId": "SyncPlayReady", + "requestBody": { + "description": "The player status.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReadyRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReadyRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReadyRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Group state update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/RemoveFromPlaylist": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request to remove items from the playlist in SyncPlay group.", + "operationId": "SyncPlayRemoveFromPlaylist", + "requestBody": { + "description": "The items to remove.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemoveFromPlaylistRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RemoveFromPlaylistRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/RemoveFromPlaylistRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Queue update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/Seek": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request seek in SyncPlay group.", + "operationId": "SyncPlaySeek", + "requestBody": { + "description": "The new playback position.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeekRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SeekRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SeekRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Seek update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/SetIgnoreWait": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request SyncPlay group to ignore member during group-wait.", + "operationId": "SyncPlaySetIgnoreWait", + "requestBody": { + "description": "The settings to set.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IgnoreWaitRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/IgnoreWaitRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/IgnoreWaitRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Member state updated." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/SetNewQueue": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request to set new playlist in SyncPlay group.", + "operationId": "SyncPlaySetNewQueue", + "requestBody": { + "description": "The new playlist to play in the group.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlayRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/PlayRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/PlayRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Queue update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/SetPlaylistItem": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request to change playlist item in SyncPlay group.", + "operationId": "SyncPlaySetPlaylistItem", + "requestBody": { + "description": "The new item to play.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetPlaylistItemRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SetPlaylistItemRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SetPlaylistItemRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Queue update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/SetRepeatMode": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request to set repeat mode in SyncPlay group.", + "operationId": "SyncPlaySetRepeatMode", + "requestBody": { + "description": "The new repeat mode.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetRepeatModeRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SetRepeatModeRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SetRepeatModeRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Play queue update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/SetShuffleMode": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request to set shuffle mode in SyncPlay group.", + "operationId": "SyncPlaySetShuffleMode", + "requestBody": { + "description": "The new shuffle mode.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetShuffleModeRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SetShuffleModeRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SetShuffleModeRequestDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Play queue update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/Stop": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request stop in SyncPlay group.", + "operationId": "SyncPlayStop", + "responses": { + "204": { + "description": "Stop update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/SyncPlay/Unpause": { + "post": { + "tags": [ + "SyncPlay" + ], + "summary": "Request unpause in SyncPlay group.", + "operationId": "SyncPlayUnpause", + "responses": { + "204": { + "description": "Unpause update sent to all group members." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "SyncPlayIsInGroup", + "SyncPlayHasAccess" + ] + } + ] + } + }, + "/System/Endpoint": { + "get": { + "tags": [ + "System" + ], + "summary": "Gets information about the request endpoint.", + "operationId": "GetEndpointInfo", + "responses": { + "200": { + "description": "Information retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndPointInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/EndPointInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/EndPointInfo" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/System/Info": { + "get": { + "tags": [ + "System" + ], + "summary": "Gets information about the server.", + "operationId": "GetSystemInfo", + "responses": { + "200": { + "description": "Information retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/SystemInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/SystemInfo" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "FirstTimeSetupOrIgnoreParentalControl" + ] + } + ] + } + }, + "/System/Info/Public": { + "get": { + "tags": [ + "System" + ], + "summary": "Gets public information about the server.", + "operationId": "GetPublicSystemInfo", + "responses": { + "200": { + "description": "Information retrieved.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicSystemInfo" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/PublicSystemInfo" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/PublicSystemInfo" + } + } + } + } + } + } + }, + "/System/Logs": { + "get": { + "tags": [ + "System" + ], + "summary": "Gets a list of available server log files.", + "operationId": "GetServerLogs", + "responses": { + "200": { + "description": "Information retrieved.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFile" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFile" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFile" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/System/Logs/Log": { + "get": { + "tags": [ + "System" + ], + "summary": "Gets a log file.", + "operationId": "GetLogFile", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the log file to get.", + "required": true, + "schema": { + "type": "string", + "description": "The name of the log file to get." + } + } + ], + "responses": { + "200": { + "description": "Log file retrieved.", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/System/Ping": { + "get": { + "tags": [ + "System" + ], + "summary": "Pings the system.", + "operationId": "GetPingSystem", + "responses": { + "200": { + "description": "Information retrieved.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "string" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "string" + } + } + } + } + } + }, + "post": { + "tags": [ + "System" + ], + "summary": "Pings the system.", + "operationId": "PostPingSystem", + "responses": { + "200": { + "description": "Information retrieved.", + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "string" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/System/Restart": { + "post": { + "tags": [ + "System" + ], + "summary": "Restarts the application.", + "operationId": "RestartApplication", + "responses": { + "204": { + "description": "Server restarted." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "LocalAccessOrRequiresElevation" + ] + } + ] + } + }, + "/System/Shutdown": { + "post": { + "tags": [ + "System" + ], + "summary": "Shuts down the application.", + "operationId": "ShutdownApplication", + "responses": { + "204": { + "description": "Server shut down." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/System/WakeOnLanInfo": { + "get": { + "tags": [ + "System" + ], + "summary": "Gets wake on lan information.", + "operationId": "GetWakeOnLanInfo", + "responses": { + "200": { + "description": "Information retrieved.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WakeOnLanInfo" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WakeOnLanInfo" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WakeOnLanInfo" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/GetUtcTime": { + "get": { + "tags": [ + "TimeSync" + ], + "summary": "Gets the current UTC time.", + "operationId": "GetUtcTime", + "responses": { + "200": { + "description": "Time returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UtcTimeResponse" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/UtcTimeResponse" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/UtcTimeResponse" + } + } + } + } + } + } + }, + "/Trailers": { + "get": { + "tags": [ + "Trailers" + ], + "summary": "Finds movies and trailers similar to a given trailer.", + "operationId": "GetTrailers", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "The user id.", + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "maxOfficialRating", + "in": "query", + "description": "Optional filter by maximum official rating (PG, PG-13, TV-MA, etc).", + "schema": { + "type": "string", + "description": "Optional filter by maximum official rating (PG, PG-13, TV-MA, etc).", + "nullable": true + } + }, + { + "name": "hasThemeSong", + "in": "query", + "description": "Optional filter by items with theme songs.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with theme songs.", + "nullable": true + } + }, + { + "name": "hasThemeVideo", + "in": "query", + "description": "Optional filter by items with theme videos.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with theme videos.", + "nullable": true + } + }, + { + "name": "hasSubtitles", + "in": "query", + "description": "Optional filter by items with subtitles.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with subtitles.", + "nullable": true + } + }, + { + "name": "hasSpecialFeature", + "in": "query", + "description": "Optional filter by items with special features.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with special features.", + "nullable": true + } + }, + { + "name": "hasTrailer", + "in": "query", + "description": "Optional filter by items with trailers.", + "schema": { + "type": "boolean", + "description": "Optional filter by items with trailers.", + "nullable": true + } + }, + { + "name": "adjacentTo", + "in": "query", + "description": "Optional. Return items that are siblings of a supplied item.", + "schema": { + "type": "string", + "description": "Optional. Return items that are siblings of a supplied item.", + "nullable": true + } + }, + { + "name": "parentIndexNumber", + "in": "query", + "description": "Optional filter by parent index number.", + "schema": { + "type": "integer", + "description": "Optional filter by parent index number.", + "format": "int32", + "nullable": true + } + }, + { + "name": "hasParentalRating", + "in": "query", + "description": "Optional filter by items that have or do not have a parental rating.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have or do not have a parental rating.", + "nullable": true + } + }, + { + "name": "isHd", + "in": "query", + "description": "Optional filter by items that are HD or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are HD or not.", + "nullable": true + } + }, + { + "name": "is4K", + "in": "query", + "description": "Optional filter by items that are 4K or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are 4K or not.", + "nullable": true + } + }, + { + "name": "locationTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LocationType" + }, + "description": "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "excludeLocationTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on the LocationType. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LocationType" + }, + "description": "Optional. If specified, results will be filtered based on the LocationType. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "isMissing", + "in": "query", + "description": "Optional filter by items that are missing episodes or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are missing episodes or not.", + "nullable": true + } + }, + { + "name": "isUnaired", + "in": "query", + "description": "Optional filter by items that are unaired episodes or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are unaired episodes or not.", + "nullable": true + } + }, + { + "name": "minCommunityRating", + "in": "query", + "description": "Optional filter by minimum community rating.", + "schema": { + "type": "number", + "description": "Optional filter by minimum community rating.", + "format": "double", + "nullable": true + } + }, + { + "name": "minCriticRating", + "in": "query", + "description": "Optional filter by minimum critic rating.", + "schema": { + "type": "number", + "description": "Optional filter by minimum critic rating.", + "format": "double", + "nullable": true + } + }, + { + "name": "minPremiereDate", + "in": "query", + "description": "Optional. The minimum premiere date. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The minimum premiere date. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "minDateLastSaved", + "in": "query", + "description": "Optional. The minimum last saved date. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The minimum last saved date. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "minDateLastSavedForUser", + "in": "query", + "description": "Optional. The minimum last saved date for the current user. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The minimum last saved date for the current user. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "maxPremiereDate", + "in": "query", + "description": "Optional. The maximum premiere date. Format = ISO.", + "schema": { + "type": "string", + "description": "Optional. The maximum premiere date. Format = ISO.", + "format": "date-time", + "nullable": true + } + }, + { + "name": "hasOverview", + "in": "query", + "description": "Optional filter by items that have an overview or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have an overview or not.", + "nullable": true + } + }, + { + "name": "hasImdbId", + "in": "query", + "description": "Optional filter by items that have an imdb id or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have an imdb id or not.", + "nullable": true + } + }, + { + "name": "hasTmdbId", + "in": "query", + "description": "Optional filter by items that have a tmdb id or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have a tmdb id or not.", + "nullable": true + } + }, + { + "name": "hasTvdbId", + "in": "query", + "description": "Optional filter by items that have a tvdb id or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have a tvdb id or not.", + "nullable": true + } + }, + { + "name": "excludeItemIds", + "in": "query", + "description": "Optional. If specified, results will be filtered by excluding item ids. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered by excluding item ids. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "recursive", + "in": "query", + "description": "When searching within folders, this determines whether or not the search will be recursive. true/false.", + "schema": { + "type": "boolean", + "description": "When searching within folders, this determines whether or not the search will be recursive. true/false.", + "nullable": true + } + }, + { + "name": "searchTerm", + "in": "query", + "description": "Optional. Filter based on a search term.", + "schema": { + "type": "string", + "description": "Optional. Filter based on a search term.", + "nullable": true + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort Order - Ascending,Descending.", + "schema": { + "type": "string", + "description": "Sort Order - Ascending,Descending.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "filters", + "in": "query", + "description": "Optional. Specify additional filters to apply. This allows multiple, comma delimited. Options: IsFolder, IsNotFolder, IsUnplayed, IsPlayed, IsFavorite, IsResumable, Likes, Dislikes.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFilter" + }, + "description": "Optional. Specify additional filters to apply. This allows multiple, comma delimited. Options: IsFolder, IsNotFolder, IsUnplayed, IsPlayed, IsFavorite, IsResumable, Likes, Dislikes.", + "nullable": true + } + }, + { + "name": "isFavorite", + "in": "query", + "description": "Optional filter by items that are marked as favorite, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are marked as favorite, or not.", + "nullable": true + } + }, + { + "name": "mediaTypes", + "in": "query", + "description": "Optional filter by MediaType. Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional filter by MediaType. Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "imageTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on those containing image types. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. If specified, results will be filtered based on those containing image types. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "sortBy", + "in": "query", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "schema": { + "type": "string", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "nullable": true + } + }, + { + "name": "isPlayed", + "in": "query", + "description": "Optional filter by items that are played, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are played, or not.", + "nullable": true + } + }, + { + "name": "genres", + "in": "query", + "description": "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "officialRatings", + "in": "query", + "description": "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "tags", + "in": "query", + "description": "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "years", + "in": "query", + "description": "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "description": "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional, include user data.", + "schema": { + "type": "boolean", + "description": "Optional, include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional, the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional, the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "person", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person.", + "schema": { + "type": "string", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person.", + "nullable": true + } + }, + { + "name": "personIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified person id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified person id.", + "nullable": true + } + }, + { + "name": "personTypes", + "in": "query", + "description": "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.", + "nullable": true + } + }, + { + "name": "studios", + "in": "query", + "description": "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "artists", + "in": "query", + "description": "Optional. If specified, results will be filtered based on artists. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on artists. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "excludeArtistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on artist id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on artist id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "artistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified artist id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified artist id.", + "nullable": true + } + }, + { + "name": "albumArtistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified album artist id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified album artist id.", + "nullable": true + } + }, + { + "name": "contributingArtistIds", + "in": "query", + "description": "Optional. If specified, results will be filtered to include only those containing the specified contributing artist id.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered to include only those containing the specified contributing artist id.", + "nullable": true + } + }, + { + "name": "albums", + "in": "query", + "description": "Optional. If specified, results will be filtered based on album. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on album. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "albumIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on album id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on album id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "ids", + "in": "query", + "description": "Optional. If specific items are needed, specify a list of item id's to retrieve. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specific items are needed, specify a list of item id's to retrieve. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "videoTypes", + "in": "query", + "description": "Optional filter by VideoType (videofile, dvd, bluray, iso). Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VideoType" + }, + "description": "Optional filter by VideoType (videofile, dvd, bluray, iso). Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "minOfficialRating", + "in": "query", + "description": "Optional filter by minimum official rating (PG, PG-13, TV-MA, etc).", + "schema": { + "type": "string", + "description": "Optional filter by minimum official rating (PG, PG-13, TV-MA, etc).", + "nullable": true + } + }, + { + "name": "isLocked", + "in": "query", + "description": "Optional filter by items that are locked.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are locked.", + "nullable": true + } + }, + { + "name": "isPlaceHolder", + "in": "query", + "description": "Optional filter by items that are placeholders.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are placeholders.", + "nullable": true + } + }, + { + "name": "hasOfficialRating", + "in": "query", + "description": "Optional filter by items that have official ratings.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that have official ratings.", + "nullable": true + } + }, + { + "name": "collapseBoxSetItems", + "in": "query", + "description": "Whether or not to hide items behind their boxsets.", + "schema": { + "type": "boolean", + "description": "Whether or not to hide items behind their boxsets.", + "nullable": true + } + }, + { + "name": "minWidth", + "in": "query", + "description": "Optional. Filter by the minimum width of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the minimum width of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minHeight", + "in": "query", + "description": "Optional. Filter by the minimum height of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the minimum height of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "Optional. Filter by the maximum width of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the maximum width of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "Optional. Filter by the maximum height of the item.", + "schema": { + "type": "integer", + "description": "Optional. Filter by the maximum height of the item.", + "format": "int32", + "nullable": true + } + }, + { + "name": "is3D", + "in": "query", + "description": "Optional filter by items that are 3D, or not.", + "schema": { + "type": "boolean", + "description": "Optional filter by items that are 3D, or not.", + "nullable": true + } + }, + { + "name": "seriesStatus", + "in": "query", + "description": "Optional filter by Series Status. Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeriesStatus" + }, + "description": "Optional filter by Series Status. Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "nameStartsWithOrGreater", + "in": "query", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally or greater than a given input string.", + "nullable": true + } + }, + { + "name": "nameStartsWith", + "in": "query", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is sorted equally than a given input string.", + "nullable": true + } + }, + { + "name": "nameLessThan", + "in": "query", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "schema": { + "type": "string", + "description": "Optional filter by items whose name is equally or lesser than a given input string.", + "nullable": true + } + }, + { + "name": "studioIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "genreIds", + "in": "query", + "description": "Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimited.", + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimited.", + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Optional. Enable the total record count.", + "schema": { + "type": "boolean", + "description": "Optional. Enable the total record count.", + "default": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional, include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional, include image information in output.", + "default": true, + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Shows/{seriesId}/Episodes": { + "get": { + "tags": [ + "TvShows" + ], + "summary": "Gets episodes for a tv season.", + "operationId": "GetEpisodes", + "parameters": [ + { + "name": "seriesId", + "in": "path", + "description": "The series id.", + "required": true, + "schema": { + "type": "string", + "description": "The series id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "The user id.", + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "nullable": true + } + }, + { + "name": "season", + "in": "query", + "description": "Optional filter by season number.", + "schema": { + "type": "integer", + "description": "Optional filter by season number.", + "format": "int32", + "nullable": true + } + }, + { + "name": "seasonId", + "in": "query", + "description": "Optional. Filter by season id.", + "schema": { + "type": "string", + "description": "Optional. Filter by season id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "isMissing", + "in": "query", + "description": "Optional. Filter by items that are missing episodes or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by items that are missing episodes or not.", + "nullable": true + } + }, + { + "name": "adjacentTo", + "in": "query", + "description": "Optional. Return items that are siblings of a supplied item.", + "schema": { + "type": "string", + "description": "Optional. Return items that are siblings of a supplied item.", + "nullable": true + } + }, + { + "name": "startItemId", + "in": "query", + "description": "Optional. Skip through the list until a given item is found.", + "schema": { + "type": "string", + "description": "Optional. Skip through the list until a given item is found.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional, include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional, include image information in output.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional, the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional, the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "sortBy", + "in": "query", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "schema": { + "type": "string", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Shows/{seriesId}/Seasons": { + "get": { + "tags": [ + "TvShows" + ], + "summary": "Gets seasons for a tv series.", + "operationId": "GetSeasons", + "parameters": [ + { + "name": "seriesId", + "in": "path", + "description": "The series id.", + "required": true, + "schema": { + "type": "string", + "description": "The series id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "The user id.", + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.", + "nullable": true + } + }, + { + "name": "isSpecialSeason", + "in": "query", + "description": "Optional. Filter by special season.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by special season.", + "nullable": true + } + }, + { + "name": "isMissing", + "in": "query", + "description": "Optional. Filter by items that are missing episodes or not.", + "schema": { + "type": "boolean", + "description": "Optional. Filter by items that are missing episodes or not.", + "nullable": true + } + }, + { + "name": "adjacentTo", + "in": "query", + "description": "Optional. Return items that are siblings of a supplied item.", + "schema": { + "type": "string", + "description": "Optional. Return items that are siblings of a supplied item.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Shows/NextUp": { + "get": { + "tags": [ + "TvShows" + ], + "summary": "Gets a list of next up episodes.", + "operationId": "GetNextUp", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "The user id of the user to get the next up episodes for.", + "schema": { + "type": "string", + "description": "The user id of the user to get the next up episodes for.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "seriesId", + "in": "query", + "description": "Optional. Filter by series id.", + "schema": { + "type": "string", + "description": "Optional. Filter by series id.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Optional. Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Optional. Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "enableImges", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "enableTotalRecordCount", + "in": "query", + "description": "Whether to enable the total records count. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether to enable the total records count. Defaults to true.", + "default": true + } + }, + { + "name": "disableFirstEpisode", + "in": "query", + "description": "Whether to disable sending the first episode in a series as next up.", + "schema": { + "type": "boolean", + "description": "Whether to disable sending the first episode in a series as next up.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Shows/Upcoming": { + "get": { + "tags": [ + "TvShows" + ], + "summary": "Gets a list of upcoming episodes.", + "operationId": "GetUpcomingEpisodes", + "parameters": [ + { + "name": "userId", + "in": "query", + "description": "The user id of the user to get the upcoming episodes for.", + "schema": { + "type": "string", + "description": "The user id of the user to get the upcoming episodes for.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "startIndex", + "in": "query", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "schema": { + "type": "integer", + "description": "Optional. The record index to start at. All items with a lower index will be dropped from the results.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Optional. Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Optional. Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "enableImges", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Audio/{itemId}/universal": { + "get": { + "tags": [ + "UniversalAudio" + ], + "summary": "Gets an audio stream.", + "operationId": "GetUniversalAudioStream", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "query", + "description": "Optional. The audio container.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. The audio container.", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. The user id.", + "schema": { + "type": "string", + "description": "Optional. The user id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. The audio codec to transcode to.", + "schema": { + "type": "string", + "description": "Optional. The audio codec to transcode to.", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels.", + "format": "int32", + "nullable": true + } + }, + { + "name": "transcodingAudioChannels", + "in": "query", + "description": "Optional. The number of how many audio channels to transcode to.", + "schema": { + "type": "integer", + "description": "Optional. The number of how many audio channels to transcode to.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxStreamingBitrate", + "in": "query", + "description": "Optional. The maximum streaming bitrate.", + "schema": { + "type": "integer", + "description": "Optional. The maximum streaming bitrate.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "transcodingContainer", + "in": "query", + "description": "Optional. The container to transcode to.", + "schema": { + "type": "string", + "description": "Optional. The container to transcode to.", + "nullable": true + } + }, + { + "name": "transcodingProtocol", + "in": "query", + "description": "Optional. The transcoding protocol.", + "schema": { + "type": "string", + "description": "Optional. The transcoding protocol.", + "nullable": true + } + }, + { + "name": "maxAudioSampleRate", + "in": "query", + "description": "Optional. The maximum audio sample rate.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio sample rate.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableRemoteMedia", + "in": "query", + "description": "Optional. Whether to enable remote media.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable remote media.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames." + } + }, + { + "name": "enableRedirection", + "in": "query", + "description": "Whether to enable redirection. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether to enable redirection. Defaults to true.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Audio stream returned.", + "content": { + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "302": { + "description": "Redirected to remote audio stream." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "head": { + "tags": [ + "UniversalAudio" + ], + "summary": "Gets an audio stream.", + "operationId": "HeadUniversalAudioStream", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "query", + "description": "Optional. The audio container.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. The audio container.", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. The user id.", + "schema": { + "type": "string", + "description": "Optional. The user id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. The audio codec to transcode to.", + "schema": { + "type": "string", + "description": "Optional. The audio codec to transcode to.", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels.", + "format": "int32", + "nullable": true + } + }, + { + "name": "transcodingAudioChannels", + "in": "query", + "description": "Optional. The number of how many audio channels to transcode to.", + "schema": { + "type": "integer", + "description": "Optional. The number of how many audio channels to transcode to.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxStreamingBitrate", + "in": "query", + "description": "Optional. The maximum streaming bitrate.", + "schema": { + "type": "integer", + "description": "Optional. The maximum streaming bitrate.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "transcodingContainer", + "in": "query", + "description": "Optional. The container to transcode to.", + "schema": { + "type": "string", + "description": "Optional. The container to transcode to.", + "nullable": true + } + }, + { + "name": "transcodingProtocol", + "in": "query", + "description": "Optional. The transcoding protocol.", + "schema": { + "type": "string", + "description": "Optional. The transcoding protocol.", + "nullable": true + } + }, + { + "name": "maxAudioSampleRate", + "in": "query", + "description": "Optional. The maximum audio sample rate.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio sample rate.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableRemoteMedia", + "in": "query", + "description": "Optional. Whether to enable remote media.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable remote media.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames." + } + }, + { + "name": "enableRedirection", + "in": "query", + "description": "Whether to enable redirection. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether to enable redirection. Defaults to true.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Audio stream returned.", + "content": { + "audio/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "302": { + "description": "Redirected to remote audio stream." + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users": { + "get": { + "tags": [ + "User" + ], + "summary": "Gets a list of users.", + "operationId": "GetUsers", + "parameters": [ + { + "name": "isHidden", + "in": "query", + "description": "Optional filter by IsHidden=true or false.", + "schema": { + "type": "boolean", + "description": "Optional filter by IsHidden=true or false.", + "nullable": true + } + }, + { + "name": "isDisabled", + "in": "query", + "description": "Optional filter by IsDisabled=true or false.", + "schema": { + "type": "boolean", + "description": "Optional filter by IsDisabled=true or false.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Users returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserDto" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserDto" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserDto" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}": { + "get": { + "tags": [ + "User" + ], + "summary": "Gets a user by Id.", + "operationId": "GetUserById", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "User returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + } + } + }, + "404": { + "description": "User not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "IgnoreParentalControl" + ] + } + ] + }, + "delete": { + "tags": [ + "User" + ], + "summary": "Deletes a user.", + "operationId": "DeleteUser", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "User deleted." + }, + "404": { + "description": "User not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + }, + "post": { + "tags": [ + "User" + ], + "summary": "Updates a user.", + "operationId": "UpdateUser", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + } + ], + "requestBody": { + "description": "The updated user model.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "User updated." + }, + "400": { + "description": "User information was not supplied.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "User update forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Authenticate": { + "post": { + "tags": [ + "User" + ], + "summary": "Authenticates a user.", + "operationId": "AuthenticateUser", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + }, + { + "name": "pw", + "in": "query", + "description": "The password as plain text.", + "required": true, + "schema": { + "type": "string", + "description": "The password as plain text." + } + }, + { + "name": "password", + "in": "query", + "description": "The password sha1-hash.", + "schema": { + "type": "string", + "description": "The password sha1-hash.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "User authenticated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthenticationResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/AuthenticationResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/AuthenticationResult" + } + } + } + }, + "403": { + "description": "Sha1-hashed password only is not allowed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "User not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Users/{userId}/Configuration": { + "post": { + "tags": [ + "User" + ], + "summary": "Updates a user configuration.", + "operationId": "UpdateUserConfiguration", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + } + ], + "requestBody": { + "description": "The new user configuration.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserConfiguration" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UserConfiguration" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UserConfiguration" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "User configuration updated." + }, + "403": { + "description": "User configuration update forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/EasyPassword": { + "post": { + "tags": [ + "User" + ], + "summary": "Updates a user's easy password.", + "operationId": "UpdateUserEasyPassword", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + } + ], + "requestBody": { + "description": "The M:Jellyfin.Api.Controllers.UserController.UpdateUserEasyPassword(System.Guid,Jellyfin.Api.Models.UserDtos.UpdateUserEasyPassword) request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateUserEasyPassword" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateUserEasyPassword" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateUserEasyPassword" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Password successfully reset." + }, + "403": { + "description": "User is not allowed to update the password.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "User not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Password": { + "post": { + "tags": [ + "User" + ], + "summary": "Updates a user's password.", + "operationId": "UpdateUserPassword", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + } + ], + "requestBody": { + "description": "The M:Jellyfin.Api.Controllers.UserController.UpdateUserPassword(System.Guid,Jellyfin.Api.Models.UserDtos.UpdateUserPassword) request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateUserPassword" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateUserPassword" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateUserPassword" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Password successfully reset." + }, + "403": { + "description": "User is not allowed to update the password.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "User not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Policy": { + "post": { + "tags": [ + "User" + ], + "summary": "Updates a user policy.", + "operationId": "UpdateUserPolicy", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "The user id.", + "required": true, + "schema": { + "type": "string", + "description": "The user id.", + "format": "uuid" + } + } + ], + "requestBody": { + "description": "The new user policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserPolicy" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UserPolicy" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UserPolicy" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "User policy updated." + }, + "400": { + "description": "User policy was not supplied.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "User policy update forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Users/AuthenticateByName": { + "post": { + "tags": [ + "User" + ], + "summary": "Authenticates a user by name.", + "operationId": "AuthenticateUserByName", + "requestBody": { + "description": "The M:Jellyfin.Api.Controllers.UserController.AuthenticateUserByName(Jellyfin.Api.Models.UserDtos.AuthenticateUserByName) request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthenticateUserByName" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AuthenticateUserByName" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/AuthenticateUserByName" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "User authenticated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthenticationResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/AuthenticationResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/AuthenticationResult" + } + } + } + } + } + } + }, + "/Users/AuthenticateWithQuickConnect": { + "post": { + "tags": [ + "User" + ], + "summary": "Authenticates a user with quick connect.", + "operationId": "AuthenticateWithQuickConnect", + "requestBody": { + "description": "The Jellyfin.Api.Models.UserDtos.QuickConnectDto request.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QuickConnectDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QuickConnectDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/QuickConnectDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "User authenticated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthenticationResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/AuthenticationResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/AuthenticationResult" + } + } + } + }, + "400": { + "description": "Missing token." + } + } + } + }, + "/Users/ForgotPassword": { + "post": { + "tags": [ + "User" + ], + "summary": "Initiates the forgot password process for a local user.", + "operationId": "ForgotPassword", + "requestBody": { + "description": "The forgot password request containing the entered username.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForgotPasswordDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ForgotPasswordDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ForgotPasswordDto" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Password reset process started.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForgotPasswordResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ForgotPasswordResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ForgotPasswordResult" + } + } + } + } + } + } + }, + "/Users/ForgotPassword/Pin": { + "post": { + "tags": [ + "User" + ], + "summary": "Redeems a forgot password pin.", + "operationId": "ForgotPasswordPin", + "requestBody": { + "description": "The pin.", + "content": { + "application/json": { + "schema": { + "type": "string", + "description": "The pin.", + "nullable": true + } + }, + "text/json": { + "schema": { + "type": "string", + "description": "The pin.", + "nullable": true + } + }, + "application/*+json": { + "schema": { + "type": "string", + "description": "The pin.", + "nullable": true + } + } + } + }, + "responses": { + "200": { + "description": "Pin reset process started.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PinRedeemResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/PinRedeemResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/PinRedeemResult" + } + } + } + } + } + } + }, + "/Users/Me": { + "get": { + "tags": [ + "User" + ], + "summary": "Gets the user based on auth token.", + "operationId": "GetCurrentUser", + "responses": { + "200": { + "description": "User returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + } + } + }, + "400": { + "description": "Token is not owned by a user.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/New": { + "post": { + "tags": [ + "User" + ], + "summary": "Creates a user.", + "operationId": "CreateUserByName", + "requestBody": { + "description": "The create user by name request body.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateUserByName" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateUserByName" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateUserByName" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "User created.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Users/Public": { + "get": { + "tags": [ + "User" + ], + "summary": "Gets a list of publicly visible users for display on a login screen.", + "operationId": "GetPublicUsers", + "responses": { + "200": { + "description": "Public users returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserDto" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserDto" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserDto" + } + } + } + } + } + } + } + }, + "/Users/{userId}/FavoriteItems/{itemId}": { + "post": { + "tags": [ + "UserLibrary" + ], + "summary": "Marks an item as a favorite.", + "operationId": "MarkFavoriteItem", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Item marked as favorite.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "delete": { + "tags": [ + "UserLibrary" + ], + "summary": "Unmarks item as a favorite.", + "operationId": "UnmarkFavoriteItem", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Item unmarked as favorite.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Items/{itemId}": { + "get": { + "tags": [ + "UserLibrary" + ], + "summary": "Gets an item from a user's library.", + "operationId": "GetItem", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Item returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Items/{itemId}/Intros": { + "get": { + "tags": [ + "UserLibrary" + ], + "summary": "Gets intros to play before the main media item plays.", + "operationId": "GetIntros", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Intros returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Items/{itemId}/LocalTrailers": { + "get": { + "tags": [ + "UserLibrary" + ], + "summary": "Gets local trailers for an item.", + "operationId": "GetLocalTrailers", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "An Microsoft.AspNetCore.Mvc.OkResult containing the item's local trailers.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Items/{itemId}/Rating": { + "delete": { + "tags": [ + "UserLibrary" + ], + "summary": "Deletes a user's saved personal rating for an item.", + "operationId": "DeleteUserItemRating", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Personal rating removed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + }, + "post": { + "tags": [ + "UserLibrary" + ], + "summary": "Updates a user's rating for an item.", + "operationId": "UpdateUserItemRating", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + }, + { + "name": "likes", + "in": "query", + "description": "Whether this M:Jellyfin.Api.Controllers.UserLibraryController.UpdateUserItemRating(System.Guid,System.Guid,System.Nullable{System.Boolean}) is likes.", + "schema": { + "type": "boolean", + "description": "Whether this M:Jellyfin.Api.Controllers.UserLibraryController.UpdateUserItemRating(System.Guid,System.Guid,System.Nullable{System.Boolean}) is likes.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Item rating updated.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/UserItemDataDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Items/{itemId}/SpecialFeatures": { + "get": { + "tags": [ + "UserLibrary" + ], + "summary": "Gets special features for an item.", + "operationId": "GetSpecialFeatures", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "itemId", + "in": "path", + "description": "Item id.", + "required": true, + "schema": { + "type": "string", + "description": "Item id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Special features returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Items/Latest": { + "get": { + "tags": [ + "UserLibrary" + ], + "summary": "Gets latest media.", + "operationId": "GetLatestMedia", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "isPlayed", + "in": "query", + "description": "Filter by items that are played, or not.", + "schema": { + "type": "boolean", + "description": "Filter by items that are played, or not.", + "nullable": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. include image information in output.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. the max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. the max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. include user data.", + "schema": { + "type": "boolean", + "description": "Optional. include user data.", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Return item limit.", + "schema": { + "type": "integer", + "description": "Return item limit.", + "format": "int32", + "default": 20 + } + }, + { + "name": "groupItems", + "in": "query", + "description": "Whether or not to group items into a parent container.", + "schema": { + "type": "boolean", + "description": "Whether or not to group items into a parent container.", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Latest media returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/Items/Root": { + "get": { + "tags": [ + "UserLibrary" + ], + "summary": "Gets the root folder from a user's library.", + "operationId": "GetRootFolder", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Root folder returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Users/{userId}/GroupingOptions": { + "get": { + "tags": [ + "UserViews" + ], + "summary": "Get user view grouping options.", + "operationId": "GetGroupingOptions", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "User view grouping options returned.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SpecialViewOptionDto" + } + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SpecialViewOptionDto" + } + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SpecialViewOptionDto" + } + } + } + } + }, + "404": { + "description": "User not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Users/{userId}/Views": { + "get": { + "tags": [ + "UserViews" + ], + "summary": "Get user views.", + "operationId": "GetUserViews", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "User id.", + "required": true, + "schema": { + "type": "string", + "description": "User id.", + "format": "uuid" + } + }, + { + "name": "includeExternalContent", + "in": "query", + "description": "Whether or not to include external views such as channels or live tv.", + "schema": { + "type": "boolean", + "description": "Whether or not to include external views such as channels or live tv.", + "nullable": true + } + }, + { + "name": "presetViews", + "in": "query", + "description": "Preset views.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Preset views.", + "nullable": true + } + }, + { + "name": "includeHidden", + "in": "query", + "description": "Whether or not to include hidden content.", + "schema": { + "type": "boolean", + "description": "Whether or not to include hidden content.", + "default": false + } + } + ], + "responses": { + "200": { + "description": "User views returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + } + } + } + }, + "/Videos/{videoId}/{mediaSourceId}/Attachments/{index}": { + "get": { + "tags": [ + "VideoAttachments" + ], + "summary": "Get video attachment.", + "operationId": "GetAttachment", + "parameters": [ + { + "name": "videoId", + "in": "path", + "description": "Video ID.", + "required": true, + "schema": { + "type": "string", + "description": "Video ID.", + "format": "uuid" + } + }, + { + "name": "mediaSourceId", + "in": "path", + "description": "Media Source ID.", + "required": true, + "schema": { + "type": "string", + "description": "Media Source ID." + } + }, + { + "name": "index", + "in": "path", + "description": "Attachment Index.", + "required": true, + "schema": { + "type": "integer", + "description": "Attachment Index.", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "Attachment retrieved.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Video or attachment not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/Videos/{itemId}/live.m3u8": { + "get": { + "tags": [ + "VideoHls" + ], + "summary": "Gets a hls live stream.", + "operationId": "GetLiveHlsStream", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "query", + "description": "The audio container.", + "schema": { + "type": "string", + "description": "The audio container.", + "nullable": true + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment lenght.", + "schema": { + "type": "integer", + "description": "The segment lenght.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + }, + { + "name": "maxWidth", + "in": "query", + "description": "Optional. The max width.", + "schema": { + "type": "integer", + "description": "Optional. The max width.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxHeight", + "in": "query", + "description": "Optional. The max height.", + "schema": { + "type": "integer", + "description": "Optional. The max height.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableSubtitlesInManifest", + "in": "query", + "description": "Optional. Whether to enable subtitles in the manifest.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable subtitles in the manifest.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Hls live stream retrieved.", + "content": { + "application/x-mpegURL": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Videos/{itemId}/{stream}.{container}": { + "get": { + "tags": [ + "Videos" + ], + "summary": "Gets a video stream.", + "operationId": "GetVideoStreamByContainer", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "path", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv.", + "required": true, + "schema": { + "type": "string", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv." + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment lenght.", + "schema": { + "type": "integer", + "description": "The segment lenght.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamporphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamporphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + }, + { + "name": "stream", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Video stream returned.", + "content": { + "video/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + }, + "head": { + "tags": [ + "Videos" + ], + "summary": "Gets a video stream.", + "operationId": "HeadVideoStreamByContainer", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "path", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv.", + "required": true, + "schema": { + "type": "string", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv." + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment lenght.", + "schema": { + "type": "integer", + "description": "The segment lenght.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamporphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamporphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + }, + { + "name": "stream", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Video stream returned.", + "content": { + "video/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/Videos/{itemId}/AdditionalParts": { + "get": { + "tags": [ + "Videos" + ], + "summary": "Gets additional parts for a video.", + "operationId": "GetAdditionalPart", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Additional parts returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Videos/{itemId}/AlternateSources": { + "delete": { + "tags": [ + "Videos" + ], + "summary": "Removes alternate video sources.", + "operationId": "DeleteAlternateSources", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "Alternate sources deleted." + }, + "404": { + "description": "Video not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Videos/{itemId}/stream": { + "get": { + "tags": [ + "Videos" + ], + "summary": "Gets a video stream.", + "operationId": "GetVideoStream", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "query", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv.", + "schema": { + "type": "string", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv.", + "nullable": true + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Video stream returned.", + "content": { + "video/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + }, + "head": { + "tags": [ + "Videos" + ], + "summary": "Gets a video stream.", + "operationId": "HeadVideoStream", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "The item id.", + "required": true, + "schema": { + "type": "string", + "description": "The item id.", + "format": "uuid" + } + }, + { + "name": "container", + "in": "query", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv.", + "schema": { + "type": "string", + "description": "The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv.", + "nullable": true + } + }, + { + "name": "static", + "in": "query", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "schema": { + "type": "boolean", + "description": "Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.", + "nullable": true + } + }, + { + "name": "params", + "in": "query", + "description": "The streaming parameters.", + "schema": { + "type": "string", + "description": "The streaming parameters.", + "nullable": true + } + }, + { + "name": "tag", + "in": "query", + "description": "The tag.", + "schema": { + "type": "string", + "description": "The tag.", + "nullable": true + } + }, + { + "name": "deviceProfileId", + "in": "query", + "description": "Optional. The dlna device profile id to utilize.", + "schema": { + "type": "string", + "description": "Optional. The dlna device profile id to utilize.", + "nullable": true + } + }, + { + "name": "playSessionId", + "in": "query", + "description": "The play session id.", + "schema": { + "type": "string", + "description": "The play session id.", + "nullable": true + } + }, + { + "name": "segmentContainer", + "in": "query", + "description": "The segment container.", + "schema": { + "type": "string", + "description": "The segment container.", + "nullable": true + } + }, + { + "name": "segmentLength", + "in": "query", + "description": "The segment length.", + "schema": { + "type": "integer", + "description": "The segment length.", + "format": "int32", + "nullable": true + } + }, + { + "name": "minSegments", + "in": "query", + "description": "The minimum number of segments.", + "schema": { + "type": "integer", + "description": "The minimum number of segments.", + "format": "int32", + "nullable": true + } + }, + { + "name": "mediaSourceId", + "in": "query", + "description": "The media version id, if playing an alternate version.", + "schema": { + "type": "string", + "description": "The media version id, if playing an alternate version.", + "nullable": true + } + }, + { + "name": "deviceId", + "in": "query", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "schema": { + "type": "string", + "description": "The device id of the client requesting. Used to stop encoding processes when needed.", + "nullable": true + } + }, + { + "name": "audioCodec", + "in": "query", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "schema": { + "type": "string", + "description": "Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.", + "nullable": true + } + }, + { + "name": "enableAutoStreamCopy", + "in": "query", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", + "nullable": true + } + }, + { + "name": "allowVideoStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the video stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the video stream url.", + "nullable": true + } + }, + { + "name": "allowAudioStreamCopy", + "in": "query", + "description": "Whether or not to allow copying of the audio stream url.", + "schema": { + "type": "boolean", + "description": "Whether or not to allow copying of the audio stream url.", + "nullable": true + } + }, + { + "name": "breakOnNonKeyFrames", + "in": "query", + "description": "Optional. Whether to break on non key frames.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to break on non key frames.", + "nullable": true + } + }, + { + "name": "audioSampleRate", + "in": "query", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific audio sample rate, e.g. 44100.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioBitDepth", + "in": "query", + "description": "Optional. The maximum audio bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum audio bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioBitRate", + "in": "query", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "audioChannels", + "in": "query", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a specific number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxAudioChannels", + "in": "query", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "schema": { + "type": "integer", + "description": "Optional. Specify a maximum number of audio channels to encode to, e.g. 2.", + "format": "int32", + "nullable": true + } + }, + { + "name": "profile", + "in": "query", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "schema": { + "type": "string", + "description": "Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.", + "nullable": true + } + }, + { + "name": "level", + "in": "query", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "schema": { + "type": "string", + "description": "Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.", + "nullable": true + } + }, + { + "name": "framerate", + "in": "query", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "maxFramerate", + "in": "query", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "schema": { + "type": "number", + "description": "Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.", + "format": "float", + "nullable": true + } + }, + { + "name": "copyTimestamps", + "in": "query", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "schema": { + "type": "boolean", + "description": "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", + "nullable": true + } + }, + { + "name": "startTimeTicks", + "in": "query", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "schema": { + "type": "integer", + "description": "Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.", + "format": "int64", + "nullable": true + } + }, + { + "name": "width", + "in": "query", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed horizontal resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "height", + "in": "query", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "schema": { + "type": "integer", + "description": "Optional. The fixed vertical resolution of the encoded video.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoBitRate", + "in": "query", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "schema": { + "type": "integer", + "description": "Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleStreamIndex", + "in": "query", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "subtitleMethod", + "in": "query", + "description": "Optional. Specify the subtitle delivery method.", + "schema": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + } + }, + { + "name": "maxRefFrames", + "in": "query", + "description": "Optional.", + "schema": { + "type": "integer", + "description": "Optional.", + "format": "int32", + "nullable": true + } + }, + { + "name": "maxVideoBitDepth", + "in": "query", + "description": "Optional. The maximum video bit depth.", + "schema": { + "type": "integer", + "description": "Optional. The maximum video bit depth.", + "format": "int32", + "nullable": true + } + }, + { + "name": "requireAvc", + "in": "query", + "description": "Optional. Whether to require avc.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require avc.", + "nullable": true + } + }, + { + "name": "deInterlace", + "in": "query", + "description": "Optional. Whether to deinterlace the video.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to deinterlace the video.", + "nullable": true + } + }, + { + "name": "requireNonAnamorphic", + "in": "query", + "description": "Optional. Whether to require a non anamorphic stream.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to require a non anamorphic stream.", + "nullable": true + } + }, + { + "name": "transcodingMaxAudioChannels", + "in": "query", + "description": "Optional. The maximum number of audio channels to transcode.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of audio channels to transcode.", + "format": "int32", + "nullable": true + } + }, + { + "name": "cpuCoreLimit", + "in": "query", + "description": "Optional. The limit of how many cpu cores to use.", + "schema": { + "type": "integer", + "description": "Optional. The limit of how many cpu cores to use.", + "format": "int32", + "nullable": true + } + }, + { + "name": "liveStreamId", + "in": "query", + "description": "The live stream id.", + "schema": { + "type": "string", + "description": "The live stream id.", + "nullable": true + } + }, + { + "name": "enableMpegtsM2TsMode", + "in": "query", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "schema": { + "type": "boolean", + "description": "Optional. Whether to enable the MpegtsM2Ts mode.", + "nullable": true + } + }, + { + "name": "videoCodec", + "in": "query", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "schema": { + "type": "string", + "description": "Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.", + "nullable": true + } + }, + { + "name": "subtitleCodec", + "in": "query", + "description": "Optional. Specify a subtitle codec to encode to.", + "schema": { + "type": "string", + "description": "Optional. Specify a subtitle codec to encode to.", + "nullable": true + } + }, + { + "name": "transcodeReasons", + "in": "query", + "description": "Optional. The transcoding reason.", + "schema": { + "type": "string", + "description": "Optional. The transcoding reason.", + "nullable": true + } + }, + { + "name": "audioStreamIndex", + "in": "query", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the audio stream to use. If omitted the first audio stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "videoStreamIndex", + "in": "query", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "schema": { + "type": "integer", + "description": "Optional. The index of the video stream to use. If omitted the first video stream will be used.", + "format": "int32", + "nullable": true + } + }, + { + "name": "context", + "in": "query", + "description": "Optional. The MediaBrowser.Model.Dlna.EncodingContext.", + "schema": { + "$ref": "#/components/schemas/EncodingContext" + } + }, + { + "name": "streamOptions", + "in": "query", + "description": "Optional. The streaming options.", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The streaming options.", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Video stream returned.", + "content": { + "video/*": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/Videos/MergeVersions": { + "post": { + "tags": [ + "Videos" + ], + "summary": "Merges videos into a single record.", + "operationId": "MergeVersions", + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "Item id list. This allows multiple, comma delimited.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Item id list. This allows multiple, comma delimited." + } + } + ], + "responses": { + "204": { + "description": "Videos merged." + }, + "400": { + "description": "Supply at least 2 video ids.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "RequiresElevation" + ] + } + ] + } + }, + "/Years": { + "get": { + "tags": [ + "Years" + ], + "summary": "Get years.", + "operationId": "GetYears", + "parameters": [ + { + "name": "startIndex", + "in": "query", + "description": "Skips over a given number of items within the results. Use for paging.", + "schema": { + "type": "integer", + "description": "Skips over a given number of items within the results. Use for paging.", + "format": "int32", + "nullable": true + } + }, + { + "name": "limit", + "in": "query", + "description": "Optional. The maximum number of records to return.", + "schema": { + "type": "integer", + "description": "Optional. The maximum number of records to return.", + "format": "int32", + "nullable": true + } + }, + { + "name": "sortOrder", + "in": "query", + "description": "Sort Order - Ascending,Descending.", + "schema": { + "type": "string", + "description": "Sort Order - Ascending,Descending.", + "nullable": true + } + }, + { + "name": "parentId", + "in": "query", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "schema": { + "type": "string", + "description": "Specify this to localize the search to a specific item or folder. Omit to use the root.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "fields", + "in": "query", + "description": "Optional. Specify additional fields of information to return in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Optional. Specify additional fields of information to return in the output.", + "nullable": true + } + }, + { + "name": "excludeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be excluded based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be excluded based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "includeItemTypes", + "in": "query", + "description": "Optional. If specified, results will be included based on item type. This allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. If specified, results will be included based on item type. This allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "mediaTypes", + "in": "query", + "description": "Optional. Filter by MediaType. Allows multiple, comma delimited.", + "schema": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. Filter by MediaType. Allows multiple, comma delimited.", + "nullable": true + } + }, + { + "name": "sortBy", + "in": "query", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "schema": { + "type": "string", + "description": "Optional. Specify one or more sort orders, comma delimited. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime.", + "nullable": true + } + }, + { + "name": "enableUserData", + "in": "query", + "description": "Optional. Include user data.", + "schema": { + "type": "boolean", + "description": "Optional. Include user data.", + "nullable": true + } + }, + { + "name": "imageTypeLimit", + "in": "query", + "description": "Optional. The max number of images to return, per image type.", + "schema": { + "type": "integer", + "description": "Optional. The max number of images to return, per image type.", + "format": "int32", + "nullable": true + } + }, + { + "name": "enableImageTypes", + "in": "query", + "description": "Optional. The image types to include in the output.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Optional. The image types to include in the output.", + "nullable": true + } + }, + { + "name": "userId", + "in": "query", + "description": "User Id.", + "schema": { + "type": "string", + "description": "User Id.", + "format": "uuid", + "nullable": true + } + }, + { + "name": "recursive", + "in": "query", + "description": "Search recursively.", + "schema": { + "type": "boolean", + "description": "Search recursively.", + "default": true + } + }, + { + "name": "enableImages", + "in": "query", + "description": "Optional. Include image information in output.", + "schema": { + "type": "boolean", + "description": "Optional. Include image information in output.", + "default": true, + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Year query returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDtoQueryResult" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + }, + "/Years/{year}": { + "get": { + "tags": [ + "Years" + ], + "summary": "Gets a year.", + "operationId": "GetYear", + "parameters": [ + { + "name": "year", + "in": "path", + "description": "The year.", + "required": true, + "schema": { + "type": "integer", + "description": "The year.", + "format": "int32" + } + }, + { + "name": "userId", + "in": "query", + "description": "Optional. Filter by user id, and attach user data.", + "schema": { + "type": "string", + "description": "Optional. Filter by user id, and attach user data.", + "format": "uuid", + "nullable": true + } + } + ], + "responses": { + "200": { + "description": "Year returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/BaseItemDto" + } + } + } + }, + "404": { + "description": "Year not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"CamelCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json; profile=\"PascalCase\"": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "CustomAuthentication": [ + "DefaultAuthorization" + ] + } + ] + } + } + }, + "components": { + "schemas": { + "LogLevel": { + "enum": [ + "Trace", + "Debug", + "Information", + "Warning", + "Error", + "Critical", + "None" + ], + "type": "string" + }, + "ActivityLogEntry": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Gets or sets the identifier.", + "format": "int64" + }, + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Overview": { + "type": "string", + "description": "Gets or sets the overview.", + "nullable": true + }, + "ShortOverview": { + "type": "string", + "description": "Gets or sets the short overview.", + "nullable": true + }, + "Type": { + "type": "string", + "description": "Gets or sets the type.", + "nullable": true + }, + "ItemId": { + "type": "string", + "description": "Gets or sets the item identifier.", + "nullable": true + }, + "Date": { + "type": "string", + "description": "Gets or sets the date.", + "format": "date-time" + }, + "UserId": { + "type": "string", + "description": "Gets or sets the user identifier.", + "format": "uuid" + }, + "UserPrimaryImageTag": { + "type": "string", + "description": "Gets or sets the user primary image tag.", + "nullable": true, + "deprecated": true + }, + "Severity": { + "$ref": "#/components/schemas/LogLevel" + } + }, + "additionalProperties": false + }, + "ActivityLogEntryQueryResult": { + "type": "object", + "properties": { + "Items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ActivityLogEntry" + }, + "description": "Gets or sets the items.", + "nullable": true + }, + "TotalRecordCount": { + "type": "integer", + "description": "The total number of records available.", + "format": "int32" + }, + "StartIndex": { + "type": "integer", + "description": "The index of the first record in Items.", + "format": "int32" + } + }, + "additionalProperties": false + }, + "AuthenticationInfo": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Gets or sets the identifier.", + "format": "int64" + }, + "AccessToken": { + "type": "string", + "description": "Gets or sets the access token.", + "nullable": true + }, + "DeviceId": { + "type": "string", + "description": "Gets or sets the device identifier.", + "nullable": true + }, + "AppName": { + "type": "string", + "description": "Gets or sets the name of the application.", + "nullable": true + }, + "AppVersion": { + "type": "string", + "description": "Gets or sets the application version.", + "nullable": true + }, + "DeviceName": { + "type": "string", + "description": "Gets or sets the name of the device.", + "nullable": true + }, + "UserId": { + "type": "string", + "description": "Gets or sets the user identifier.", + "format": "uuid" + }, + "IsActive": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is active." + }, + "DateCreated": { + "type": "string", + "description": "Gets or sets the date created.", + "format": "date-time" + }, + "DateRevoked": { + "type": "string", + "description": "Gets or sets the date revoked.", + "format": "date-time", + "nullable": true + }, + "DateLastActivity": { + "type": "string", + "format": "date-time" + }, + "UserName": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "AuthenticationInfoQueryResult": { + "type": "object", + "properties": { + "Items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AuthenticationInfo" + }, + "description": "Gets or sets the items.", + "nullable": true + }, + "TotalRecordCount": { + "type": "integer", + "description": "The total number of records available.", + "format": "int32" + }, + "StartIndex": { + "type": "integer", + "description": "The index of the first record in Items.", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ItemFields": { + "enum": [ + "AirTime", + "CanDelete", + "CanDownload", + "ChannelInfo", + "Chapters", + "ChildCount", + "CumulativeRunTimeTicks", + "CustomRating", + "DateCreated", + "DateLastMediaAdded", + "DisplayPreferencesId", + "Etag", + "ExternalUrls", + "Genres", + "HomePageUrl", + "ItemCounts", + "MediaSourceCount", + "MediaSources", + "OriginalTitle", + "Overview", + "ParentId", + "Path", + "People", + "PlayAccess", + "ProductionLocations", + "ProviderIds", + "PrimaryImageAspectRatio", + "RecursiveItemCount", + "Settings", + "ScreenshotImageTags", + "SeriesPrimaryImage", + "SeriesStudio", + "SortName", + "SpecialEpisodeNumbers", + "Studios", + "BasicSyncInfo", + "SyncInfo", + "Taglines", + "Tags", + "RemoteTrailers", + "MediaStreams", + "SeasonUserData", + "ServiceName", + "ThemeSongIds", + "ThemeVideoIds", + "ExternalEtag", + "PresentationUniqueKey", + "InheritedParentalRatingValue", + "ExternalSeriesId", + "SeriesPresentationUniqueKey", + "DateLastRefreshed", + "DateLastSaved", + "RefreshState", + "ChannelImage", + "EnableMediaSourceDisplay", + "Width", + "Height", + "ExtraIds", + "LocalTrailerCount", + "IsHD", + "SpecialFeatureCount" + ], + "type": "string", + "description": "Used to control the data that gets attached to DtoBaseItems." + }, + "ItemFilter": { + "enum": [ + "IsFolder", + "IsNotFolder", + "IsUnplayed", + "IsPlayed", + "IsFavorite", + "IsResumable", + "Likes", + "Dislikes", + "IsFavoriteOrLikes" + ], + "type": "string", + "description": "Enum ItemFilter." + }, + "ImageType": { + "enum": [ + "Primary", + "Art", + "Backdrop", + "Banner", + "Logo", + "Thumb", + "Disc", + "Box", + "Screenshot", + "Menu", + "Chapter", + "BoxRear", + "Profile" + ], + "type": "string", + "description": "Enum ImageType." + }, + "Video3DFormat": { + "enum": [ + "HalfSideBySide", + "FullSideBySide", + "FullTopAndBottom", + "HalfTopAndBottom", + "MVC" + ], + "type": "string" + }, + "ExternalUrl": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Url": { + "type": "string", + "description": "Gets or sets the type of the item.", + "nullable": true + } + }, + "additionalProperties": false + }, + "MediaProtocol": { + "enum": [ + "File", + "Http", + "Rtmp", + "Rtsp", + "Udp", + "Rtp", + "Ftp" + ], + "type": "string" + }, + "MediaSourceType": { + "enum": [ + "Default", + "Grouping", + "Placeholder" + ], + "type": "string" + }, + "VideoType": { + "enum": [ + "VideoFile", + "Iso", + "Dvd", + "BluRay" + ], + "type": "string", + "description": "Enum VideoType." + }, + "IsoType": { + "enum": [ + "Dvd", + "BluRay" + ], + "type": "string", + "description": "Enum IsoType." + }, + "MediaStreamType": { + "enum": [ + "Audio", + "Video", + "Subtitle", + "EmbeddedImage" + ], + "type": "string", + "description": "Enum MediaStreamType." + }, + "SubtitleDeliveryMethod": { + "enum": [ + "Encode", + "Embed", + "External", + "Hls" + ], + "type": "string" + }, + "MediaStream": { + "type": "object", + "properties": { + "Codec": { + "type": "string", + "description": "Gets or sets the codec.", + "nullable": true + }, + "CodecTag": { + "type": "string", + "description": "Gets or sets the codec tag.", + "nullable": true + }, + "Language": { + "type": "string", + "description": "Gets or sets the language.", + "nullable": true + }, + "ColorRange": { + "type": "string", + "description": "Gets or sets the color range.", + "nullable": true + }, + "ColorSpace": { + "type": "string", + "description": "Gets or sets the color space.", + "nullable": true + }, + "ColorTransfer": { + "type": "string", + "description": "Gets or sets the color transfer.", + "nullable": true + }, + "ColorPrimaries": { + "type": "string", + "description": "Gets or sets the color primaries.", + "nullable": true + }, + "Comment": { + "type": "string", + "description": "Gets or sets the comment.", + "nullable": true + }, + "TimeBase": { + "type": "string", + "description": "Gets or sets the time base.", + "nullable": true + }, + "CodecTimeBase": { + "type": "string", + "description": "Gets or sets the codec time base.", + "nullable": true + }, + "Title": { + "type": "string", + "description": "Gets or sets the title.", + "nullable": true + }, + "VideoRange": { + "type": "string", + "description": "Gets or sets the video range.", + "nullable": true, + "readOnly": true + }, + "localizedUndefined": { + "type": "string", + "nullable": true + }, + "localizedDefault": { + "type": "string", + "nullable": true + }, + "localizedForced": { + "type": "string", + "nullable": true + }, + "DisplayTitle": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "NalLengthSize": { + "type": "string", + "nullable": true + }, + "IsInterlaced": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is interlaced." + }, + "IsAVC": { + "type": "boolean", + "nullable": true + }, + "ChannelLayout": { + "type": "string", + "description": "Gets or sets the channel layout.", + "nullable": true + }, + "BitRate": { + "type": "integer", + "description": "Gets or sets the bit rate.", + "format": "int32", + "nullable": true + }, + "BitDepth": { + "type": "integer", + "description": "Gets or sets the bit depth.", + "format": "int32", + "nullable": true + }, + "RefFrames": { + "type": "integer", + "description": "Gets or sets the reference frames.", + "format": "int32", + "nullable": true + }, + "PacketLength": { + "type": "integer", + "description": "Gets or sets the length of the packet.", + "format": "int32", + "nullable": true + }, + "Channels": { + "type": "integer", + "description": "Gets or sets the channels.", + "format": "int32", + "nullable": true + }, + "SampleRate": { + "type": "integer", + "description": "Gets or sets the sample rate.", + "format": "int32", + "nullable": true + }, + "IsDefault": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is default." + }, + "IsForced": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is forced." + }, + "Height": { + "type": "integer", + "description": "Gets or sets the height.", + "format": "int32", + "nullable": true + }, + "Width": { + "type": "integer", + "description": "Gets or sets the width.", + "format": "int32", + "nullable": true + }, + "AverageFrameRate": { + "type": "number", + "description": "Gets or sets the average frame rate.", + "format": "float", + "nullable": true + }, + "RealFrameRate": { + "type": "number", + "description": "Gets or sets the real frame rate.", + "format": "float", + "nullable": true + }, + "Profile": { + "type": "string", + "description": "Gets or sets the profile.", + "nullable": true + }, + "Type": { + "$ref": "#/components/schemas/MediaStreamType" + }, + "AspectRatio": { + "type": "string", + "description": "Gets or sets the aspect ratio.", + "nullable": true + }, + "Index": { + "type": "integer", + "description": "Gets or sets the index.", + "format": "int32" + }, + "Score": { + "type": "integer", + "description": "Gets or sets the score.", + "format": "int32", + "nullable": true + }, + "IsExternal": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is external." + }, + "DeliveryMethod": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + }, + "DeliveryUrl": { + "type": "string", + "description": "Gets or sets the delivery URL.", + "nullable": true + }, + "IsExternalUrl": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is external URL.", + "nullable": true + }, + "IsTextSubtitleStream": { + "type": "boolean", + "readOnly": true + }, + "SupportsExternalStream": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [supports external stream]." + }, + "Path": { + "type": "string", + "description": "Gets or sets the filename.", + "nullable": true + }, + "PixelFormat": { + "type": "string", + "description": "Gets or sets the pixel format.", + "nullable": true + }, + "Level": { + "type": "number", + "description": "Gets or sets the level.", + "format": "double", + "nullable": true + }, + "IsAnamorphic": { + "type": "boolean", + "description": "Gets a value indicating whether this instance is anamorphic.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class MediaStream." + }, + "MediaAttachment": { + "type": "object", + "properties": { + "Codec": { + "type": "string", + "description": "Gets or sets the codec.", + "nullable": true + }, + "CodecTag": { + "type": "string", + "description": "Gets or sets the codec tag.", + "nullable": true + }, + "Comment": { + "type": "string", + "description": "Gets or sets the comment.", + "nullable": true + }, + "Index": { + "type": "integer", + "description": "Gets or sets the index.", + "format": "int32" + }, + "FileName": { + "type": "string", + "description": "Gets or sets the filename.", + "nullable": true + }, + "MimeType": { + "type": "string", + "description": "Gets or sets the MIME type.", + "nullable": true + }, + "DeliveryUrl": { + "type": "string", + "description": "Gets or sets the delivery URL.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class MediaAttachment." + }, + "TransportStreamTimestamp": { + "enum": [ + "None", + "Zero", + "Valid" + ], + "type": "string" + }, + "MediaSourceInfo": { + "type": "object", + "properties": { + "Protocol": { + "$ref": "#/components/schemas/MediaProtocol" + }, + "Id": { + "type": "string", + "nullable": true + }, + "Path": { + "type": "string", + "nullable": true + }, + "EncoderPath": { + "type": "string", + "nullable": true + }, + "EncoderProtocol": { + "$ref": "#/components/schemas/MediaProtocol" + }, + "Type": { + "$ref": "#/components/schemas/MediaSourceType" + }, + "Container": { + "type": "string", + "nullable": true + }, + "Size": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "Name": { + "type": "string", + "nullable": true + }, + "IsRemote": { + "type": "boolean", + "description": "Differentiate internet url vs local network." + }, + "ETag": { + "type": "string", + "nullable": true + }, + "RunTimeTicks": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "ReadAtNativeFramerate": { + "type": "boolean" + }, + "IgnoreDts": { + "type": "boolean" + }, + "IgnoreIndex": { + "type": "boolean" + }, + "GenPtsInput": { + "type": "boolean" + }, + "SupportsTranscoding": { + "type": "boolean" + }, + "SupportsDirectStream": { + "type": "boolean" + }, + "SupportsDirectPlay": { + "type": "boolean" + }, + "IsInfiniteStream": { + "type": "boolean" + }, + "RequiresOpening": { + "type": "boolean" + }, + "OpenToken": { + "type": "string", + "nullable": true + }, + "RequiresClosing": { + "type": "boolean" + }, + "LiveStreamId": { + "type": "string", + "nullable": true + }, + "BufferMs": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "RequiresLooping": { + "type": "boolean" + }, + "SupportsProbing": { + "type": "boolean" + }, + "VideoType": { + "$ref": "#/components/schemas/VideoType" + }, + "IsoType": { + "$ref": "#/components/schemas/IsoType" + }, + "Video3DFormat": { + "$ref": "#/components/schemas/Video3DFormat" + }, + "MediaStreams": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaStream" + }, + "nullable": true + }, + "MediaAttachments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaAttachment" + }, + "nullable": true + }, + "Formats": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "Bitrate": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "Timestamp": { + "$ref": "#/components/schemas/TransportStreamTimestamp" + }, + "RequiredHttpHeaders": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "TranscodingUrl": { + "type": "string", + "nullable": true + }, + "TranscodingSubProtocol": { + "type": "string", + "nullable": true + }, + "TranscodingContainer": { + "type": "string", + "nullable": true + }, + "AnalyzeDurationMs": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "DefaultAudioStreamIndex": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "DefaultSubtitleStreamIndex": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "PlayAccess": { + "enum": [ + "Full", + "None" + ], + "type": "string" + }, + "MediaUrl": { + "type": "object", + "properties": { + "Url": { + "type": "string", + "nullable": true + }, + "Name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "BaseItemPerson": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the identifier.", + "nullable": true + }, + "Role": { + "type": "string", + "description": "Gets or sets the role.", + "nullable": true + }, + "Type": { + "type": "string", + "description": "Gets or sets the type.", + "nullable": true + }, + "PrimaryImageTag": { + "type": "string", + "description": "Gets or sets the primary image tag.", + "nullable": true + }, + "ImageBlurHashes": { + "type": "object", + "properties": { + "Primary": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Art": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Backdrop": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Banner": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Logo": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Thumb": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Disc": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Box": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Screenshot": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Menu": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Chapter": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "BoxRear": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Profile": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "description": "Gets or sets the primary image blurhash.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "This is used by the api to get information about a Person within a BaseItem." + }, + "NameGuidPair": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "nullable": true + }, + "Id": { + "type": "string", + "format": "uuid" + } + }, + "additionalProperties": false + }, + "UserItemDataDto": { + "type": "object", + "properties": { + "Rating": { + "type": "number", + "description": "Gets or sets the rating.", + "format": "double", + "nullable": true + }, + "PlayedPercentage": { + "type": "number", + "description": "Gets or sets the played percentage.", + "format": "double", + "nullable": true + }, + "UnplayedItemCount": { + "type": "integer", + "description": "Gets or sets the unplayed item count.", + "format": "int32", + "nullable": true + }, + "PlaybackPositionTicks": { + "type": "integer", + "description": "Gets or sets the playback position ticks.", + "format": "int64" + }, + "PlayCount": { + "type": "integer", + "description": "Gets or sets the play count.", + "format": "int32" + }, + "IsFavorite": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is favorite." + }, + "Likes": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this MediaBrowser.Model.Dto.UserItemDataDto is likes.", + "nullable": true + }, + "LastPlayedDate": { + "type": "string", + "description": "Gets or sets the last played date.", + "format": "date-time", + "nullable": true + }, + "Played": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this MediaBrowser.Model.Dto.UserItemDataDto is played." + }, + "Key": { + "type": "string", + "description": "Gets or sets the key.", + "nullable": true + }, + "ItemId": { + "type": "string", + "description": "Gets or sets the item identifier.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class UserItemDataDto." + }, + "DayOfWeek": { + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "type": "string" + }, + "ChapterInfo": { + "type": "object", + "properties": { + "StartPositionTicks": { + "type": "integer", + "description": "Gets or sets the start position ticks.", + "format": "int64" + }, + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "ImagePath": { + "type": "string", + "description": "Gets or sets the image path.", + "nullable": true + }, + "ImageDateModified": { + "type": "string", + "format": "date-time" + }, + "ImageTag": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class ChapterInfo." + }, + "LocationType": { + "enum": [ + "FileSystem", + "Remote", + "Virtual", + "Offline" + ], + "type": "string", + "description": "Enum LocationType." + }, + "MetadataField": { + "enum": [ + "Cast", + "Genres", + "ProductionLocations", + "Studios", + "Tags", + "Name", + "Overview", + "Runtime", + "OfficialRating" + ], + "type": "string", + "description": "Enum MetadataFields." + }, + "ImageOrientation": { + "enum": [ + "TopLeft", + "TopRight", + "BottomRight", + "BottomLeft", + "LeftTop", + "RightTop", + "RightBottom", + "LeftBottom" + ], + "type": "string" + }, + "ChannelType": { + "enum": [ + "TV", + "Radio" + ], + "type": "string", + "description": "Enum ChannelType." + }, + "ProgramAudio": { + "enum": [ + "Mono", + "Stereo", + "Dolby", + "DolbyDigital", + "Thx", + "Atmos" + ], + "type": "string" + }, + "BaseItemDto": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "OriginalTitle": { + "type": "string", + "nullable": true + }, + "ServerId": { + "type": "string", + "description": "Gets or sets the server identifier.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the id.", + "format": "uuid" + }, + "Etag": { + "type": "string", + "description": "Gets or sets the etag.", + "nullable": true + }, + "SourceType": { + "type": "string", + "description": "Gets or sets the type of the source.", + "nullable": true + }, + "PlaylistItemId": { + "type": "string", + "description": "Gets or sets the playlist item identifier.", + "nullable": true + }, + "DateCreated": { + "type": "string", + "description": "Gets or sets the date created.", + "format": "date-time", + "nullable": true + }, + "DateLastMediaAdded": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "ExtraType": { + "type": "string", + "nullable": true + }, + "AirsBeforeSeasonNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "AirsAfterSeasonNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "AirsBeforeEpisodeNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "CanDelete": { + "type": "boolean", + "nullable": true + }, + "CanDownload": { + "type": "boolean", + "nullable": true + }, + "HasSubtitles": { + "type": "boolean", + "nullable": true + }, + "PreferredMetadataLanguage": { + "type": "string", + "nullable": true + }, + "PreferredMetadataCountryCode": { + "type": "string", + "nullable": true + }, + "SupportsSync": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [supports synchronize].", + "nullable": true + }, + "Container": { + "type": "string", + "nullable": true + }, + "SortName": { + "type": "string", + "description": "Gets or sets the name of the sort.", + "nullable": true + }, + "ForcedSortName": { + "type": "string", + "nullable": true + }, + "Video3DFormat": { + "$ref": "#/components/schemas/Video3DFormat" + }, + "PremiereDate": { + "type": "string", + "description": "Gets or sets the premiere date.", + "format": "date-time", + "nullable": true + }, + "ExternalUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExternalUrl" + }, + "description": "Gets or sets the external urls.", + "nullable": true + }, + "MediaSources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaSourceInfo" + }, + "description": "Gets or sets the media versions.", + "nullable": true + }, + "CriticRating": { + "type": "number", + "description": "Gets or sets the critic rating.", + "format": "float", + "nullable": true + }, + "ProductionLocations": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "EnableMediaSourceDisplay": { + "type": "boolean", + "nullable": true + }, + "OfficialRating": { + "type": "string", + "description": "Gets or sets the official rating.", + "nullable": true + }, + "CustomRating": { + "type": "string", + "description": "Gets or sets the custom rating.", + "nullable": true + }, + "ChannelId": { + "type": "string", + "description": "Gets or sets the channel identifier.", + "format": "uuid", + "nullable": true + }, + "ChannelName": { + "type": "string", + "nullable": true + }, + "Overview": { + "type": "string", + "description": "Gets or sets the overview.", + "nullable": true + }, + "Taglines": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the taglines.", + "nullable": true + }, + "Genres": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the genres.", + "nullable": true + }, + "CommunityRating": { + "type": "number", + "description": "Gets or sets the community rating.", + "format": "float", + "nullable": true + }, + "CumulativeRunTimeTicks": { + "type": "integer", + "description": "Gets or sets the cumulative run time ticks.", + "format": "int64", + "nullable": true + }, + "RunTimeTicks": { + "type": "integer", + "description": "Gets or sets the run time ticks.", + "format": "int64", + "nullable": true + }, + "PlayAccess": { + "$ref": "#/components/schemas/PlayAccess" + }, + "AspectRatio": { + "type": "string", + "description": "Gets or sets the aspect ratio.", + "nullable": true + }, + "ProductionYear": { + "type": "integer", + "description": "Gets or sets the production year.", + "format": "int32", + "nullable": true + }, + "IsPlaceHolder": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is place holder.", + "nullable": true + }, + "Number": { + "type": "string", + "description": "Gets or sets the number.", + "nullable": true + }, + "ChannelNumber": { + "type": "string", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "description": "Gets or sets the index number.", + "format": "int32", + "nullable": true + }, + "IndexNumberEnd": { + "type": "integer", + "description": "Gets or sets the index number end.", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "description": "Gets or sets the parent index number.", + "format": "int32", + "nullable": true + }, + "RemoteTrailers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaUrl" + }, + "description": "Gets or sets the trailer urls.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "IsHD": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is HD.", + "nullable": true + }, + "IsFolder": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is folder.", + "nullable": true + }, + "ParentId": { + "type": "string", + "description": "Gets or sets the parent id.", + "format": "uuid", + "nullable": true + }, + "Type": { + "type": "string", + "description": "Gets or sets the type.", + "nullable": true + }, + "People": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemPerson" + }, + "description": "Gets or sets the people.", + "nullable": true + }, + "Studios": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameGuidPair" + }, + "description": "Gets or sets the studios.", + "nullable": true + }, + "GenreItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameGuidPair" + }, + "nullable": true + }, + "ParentLogoItemId": { + "type": "string", + "description": "If the item does not have a logo, this will hold the Id of the Parent that has one.", + "nullable": true + }, + "ParentBackdropItemId": { + "type": "string", + "description": "If the item does not have any backdrops, this will hold the Id of the Parent that has one.", + "nullable": true + }, + "ParentBackdropImageTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the parent backdrop image tags.", + "nullable": true + }, + "LocalTrailerCount": { + "type": "integer", + "description": "Gets or sets the local trailer count.", + "format": "int32", + "nullable": true + }, + "UserData": { + "$ref": "#/components/schemas/UserItemDataDto" + }, + "RecursiveItemCount": { + "type": "integer", + "description": "Gets or sets the recursive item count.", + "format": "int32", + "nullable": true + }, + "ChildCount": { + "type": "integer", + "description": "Gets or sets the child count.", + "format": "int32", + "nullable": true + }, + "SeriesName": { + "type": "string", + "description": "Gets or sets the name of the series.", + "nullable": true + }, + "SeriesId": { + "type": "string", + "description": "Gets or sets the series id.", + "format": "uuid", + "nullable": true + }, + "SeasonId": { + "type": "string", + "description": "Gets or sets the season identifier.", + "format": "uuid", + "nullable": true + }, + "SpecialFeatureCount": { + "type": "integer", + "description": "Gets or sets the special feature count.", + "format": "int32", + "nullable": true + }, + "DisplayPreferencesId": { + "type": "string", + "description": "Gets or sets the display preferences id.", + "nullable": true + }, + "Status": { + "type": "string", + "description": "Gets or sets the status.", + "nullable": true + }, + "AirTime": { + "type": "string", + "description": "Gets or sets the air time.", + "nullable": true + }, + "AirDays": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DayOfWeek" + }, + "description": "Gets or sets the air days.", + "nullable": true + }, + "Tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the tags.", + "nullable": true + }, + "PrimaryImageAspectRatio": { + "type": "number", + "description": "Gets or sets the primary image aspect ratio, after image enhancements.", + "format": "double", + "nullable": true + }, + "Artists": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the artists.", + "nullable": true + }, + "ArtistItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameGuidPair" + }, + "description": "Gets or sets the artist items.", + "nullable": true + }, + "Album": { + "type": "string", + "description": "Gets or sets the album.", + "nullable": true + }, + "CollectionType": { + "type": "string", + "description": "Gets or sets the type of the collection.", + "nullable": true + }, + "DisplayOrder": { + "type": "string", + "description": "Gets or sets the display order.", + "nullable": true + }, + "AlbumId": { + "type": "string", + "description": "Gets or sets the album id.", + "format": "uuid", + "nullable": true + }, + "AlbumPrimaryImageTag": { + "type": "string", + "description": "Gets or sets the album image tag.", + "nullable": true + }, + "SeriesPrimaryImageTag": { + "type": "string", + "description": "Gets or sets the series primary image tag.", + "nullable": true + }, + "AlbumArtist": { + "type": "string", + "description": "Gets or sets the album artist.", + "nullable": true + }, + "AlbumArtists": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameGuidPair" + }, + "description": "Gets or sets the album artists.", + "nullable": true + }, + "SeasonName": { + "type": "string", + "description": "Gets or sets the name of the season.", + "nullable": true + }, + "MediaStreams": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaStream" + }, + "description": "Gets or sets the media streams.", + "nullable": true + }, + "VideoType": { + "$ref": "#/components/schemas/VideoType" + }, + "PartCount": { + "type": "integer", + "description": "Gets or sets the part count.", + "format": "int32", + "nullable": true + }, + "MediaSourceCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ImageTags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the image tags.", + "nullable": true + }, + "BackdropImageTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the backdrop image tags.", + "nullable": true + }, + "ScreenshotImageTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the screenshot image tags.", + "nullable": true + }, + "ParentLogoImageTag": { + "type": "string", + "description": "Gets or sets the parent logo image tag.", + "nullable": true + }, + "ParentArtItemId": { + "type": "string", + "description": "If the item does not have a art, this will hold the Id of the Parent that has one.", + "nullable": true + }, + "ParentArtImageTag": { + "type": "string", + "description": "Gets or sets the parent art image tag.", + "nullable": true + }, + "SeriesThumbImageTag": { + "type": "string", + "description": "Gets or sets the series thumb image tag.", + "nullable": true + }, + "ImageBlurHashes": { + "type": "object", + "properties": { + "Primary": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Art": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Backdrop": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Banner": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Logo": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Thumb": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Disc": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Box": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Screenshot": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Menu": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Chapter": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "BoxRear": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "Profile": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "description": "Gets or sets the blurhashes for the image tags.\r\nMaps image type to dictionary mapping image tag to blurhash value.", + "nullable": true + }, + "SeriesStudio": { + "type": "string", + "description": "Gets or sets the series studio.", + "nullable": true + }, + "ParentThumbItemId": { + "type": "string", + "description": "Gets or sets the parent thumb item id.", + "nullable": true + }, + "ParentThumbImageTag": { + "type": "string", + "description": "Gets or sets the parent thumb image tag.", + "nullable": true + }, + "ParentPrimaryImageItemId": { + "type": "string", + "description": "Gets or sets the parent primary image item identifier.", + "nullable": true + }, + "ParentPrimaryImageTag": { + "type": "string", + "description": "Gets or sets the parent primary image tag.", + "nullable": true + }, + "Chapters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChapterInfo" + }, + "description": "Gets or sets the chapters.", + "nullable": true + }, + "LocationType": { + "$ref": "#/components/schemas/LocationType" + }, + "IsoType": { + "$ref": "#/components/schemas/IsoType" + }, + "MediaType": { + "type": "string", + "description": "Gets or sets the type of the media.", + "nullable": true + }, + "EndDate": { + "type": "string", + "description": "Gets or sets the end date.", + "format": "date-time", + "nullable": true + }, + "LockedFields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataField" + }, + "description": "Gets or sets the locked fields.", + "nullable": true + }, + "TrailerCount": { + "type": "integer", + "description": "Gets or sets the trailer count.", + "format": "int32", + "nullable": true + }, + "MovieCount": { + "type": "integer", + "description": "Gets or sets the movie count.", + "format": "int32", + "nullable": true + }, + "SeriesCount": { + "type": "integer", + "description": "Gets or sets the series count.", + "format": "int32", + "nullable": true + }, + "ProgramCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "EpisodeCount": { + "type": "integer", + "description": "Gets or sets the episode count.", + "format": "int32", + "nullable": true + }, + "SongCount": { + "type": "integer", + "description": "Gets or sets the song count.", + "format": "int32", + "nullable": true + }, + "AlbumCount": { + "type": "integer", + "description": "Gets or sets the album count.", + "format": "int32", + "nullable": true + }, + "ArtistCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "MusicVideoCount": { + "type": "integer", + "description": "Gets or sets the music video count.", + "format": "int32", + "nullable": true + }, + "LockData": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [enable internet providers].", + "nullable": true + }, + "Width": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "Height": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "CameraMake": { + "type": "string", + "nullable": true + }, + "CameraModel": { + "type": "string", + "nullable": true + }, + "Software": { + "type": "string", + "nullable": true + }, + "ExposureTime": { + "type": "number", + "format": "double", + "nullable": true + }, + "FocalLength": { + "type": "number", + "format": "double", + "nullable": true + }, + "ImageOrientation": { + "$ref": "#/components/schemas/ImageOrientation" + }, + "Aperture": { + "type": "number", + "format": "double", + "nullable": true + }, + "ShutterSpeed": { + "type": "number", + "format": "double", + "nullable": true + }, + "Latitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "Longitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "Altitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "IsoSpeedRating": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "SeriesTimerId": { + "type": "string", + "description": "Gets or sets the series timer identifier.", + "nullable": true + }, + "ProgramId": { + "type": "string", + "description": "Gets or sets the program identifier.", + "nullable": true + }, + "ChannelPrimaryImageTag": { + "type": "string", + "description": "Gets or sets the channel primary image tag.", + "nullable": true + }, + "StartDate": { + "type": "string", + "description": "The start date of the recording, in UTC.", + "format": "date-time", + "nullable": true + }, + "CompletionPercentage": { + "type": "number", + "description": "Gets or sets the completion percentage.", + "format": "double", + "nullable": true + }, + "IsRepeat": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is repeat.", + "nullable": true + }, + "EpisodeTitle": { + "type": "string", + "description": "Gets or sets the episode title.", + "nullable": true + }, + "ChannelType": { + "$ref": "#/components/schemas/ChannelType" + }, + "Audio": { + "$ref": "#/components/schemas/ProgramAudio" + }, + "IsMovie": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is movie.", + "nullable": true + }, + "IsSports": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is sports.", + "nullable": true + }, + "IsSeries": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is series.", + "nullable": true + }, + "IsLive": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is live.", + "nullable": true + }, + "IsNews": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is news.", + "nullable": true + }, + "IsKids": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is kids.", + "nullable": true + }, + "IsPremiere": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is premiere.", + "nullable": true + }, + "TimerId": { + "type": "string", + "description": "Gets or sets the timer identifier.", + "nullable": true + }, + "CurrentProgram": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "additionalProperties": false, + "description": "This is strictly used as a data transfer object from the api layer.\r\nThis holds information about a BaseItem in a format that is convenient for the client." + }, + "BaseItemDtoQueryResult": { + "type": "object", + "properties": { + "Items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + }, + "description": "Gets or sets the items.", + "nullable": true + }, + "TotalRecordCount": { + "type": "integer", + "description": "The total number of records available.", + "format": "int32" + }, + "StartIndex": { + "type": "integer", + "description": "The index of the first record in Items.", + "format": "int32" + } + }, + "additionalProperties": false + }, + "EncodingContext": { + "enum": [ + "Streaming", + "Static" + ], + "type": "string" + }, + "BrandingOptions": { + "type": "object", + "properties": { + "LoginDisclaimer": { + "type": "string", + "description": "Gets or sets the login disclaimer.", + "nullable": true + }, + "CustomCss": { + "type": "string", + "description": "Gets or sets the custom CSS.", + "nullable": true + } + }, + "additionalProperties": false + }, + "ChannelMediaType": { + "enum": [ + "Audio", + "Video", + "Photo" + ], + "type": "string" + }, + "ChannelMediaContentType": { + "enum": [ + "Clip", + "Podcast", + "Trailer", + "Movie", + "Episode", + "Song", + "MovieExtra", + "TvExtra" + ], + "type": "string" + }, + "ChannelItemSortField": { + "enum": [ + "Name", + "CommunityRating", + "PremiereDate", + "DateCreated", + "Runtime", + "PlayCount", + "CommunityPlayCount" + ], + "type": "string" + }, + "ChannelFeatures": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the identifier.", + "nullable": true + }, + "CanSearch": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance can search." + }, + "MediaTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChannelMediaType" + }, + "description": "Gets or sets the media types.", + "nullable": true + }, + "ContentTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChannelMediaContentType" + }, + "description": "Gets or sets the content types.", + "nullable": true + }, + "MaxPageSize": { + "type": "integer", + "description": "Represents the maximum number of records the channel allows retrieving at a time.", + "format": "int32", + "nullable": true + }, + "AutoRefreshLevels": { + "type": "integer", + "description": "Gets or sets the automatic refresh levels.", + "format": "int32", + "nullable": true + }, + "DefaultSortFields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChannelItemSortField" + }, + "description": "Gets or sets the default sort orders.", + "nullable": true + }, + "SupportsSortOrderToggle": { + "type": "boolean", + "description": "Indicates if a sort ascending/descending toggle is supported or not." + }, + "SupportsLatestMedia": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [supports latest media]." + }, + "CanFilter": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance can filter." + }, + "SupportsContentDownloading": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [supports content downloading]." + } + }, + "additionalProperties": false + }, + "CollectionCreationResult": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "format": "uuid" + } + }, + "additionalProperties": false + }, + "Version": { + "type": "object", + "properties": { + "Major": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "Minor": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "Build": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "Revision": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "MajorRevision": { + "type": "integer", + "format": "int32", + "readOnly": true + }, + "MinorRevision": { + "type": "integer", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false + }, + "ImageSavingConvention": { + "enum": [ + "Legacy", + "Compatible" + ], + "type": "string" + }, + "MetadataOptions": { + "type": "object", + "properties": { + "ItemType": { + "type": "string", + "nullable": true + }, + "DisabledMetadataSavers": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "LocalMetadataReaderOrder": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "DisabledMetadataFetchers": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "MetadataFetcherOrder": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "DisabledImageFetchers": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "ImageFetcherOrder": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class MetadataOptions." + }, + "NameValuePair": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Value": { + "type": "string", + "description": "Gets or sets the value.", + "nullable": true + } + }, + "additionalProperties": false + }, + "RepositoryInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Url": { + "type": "string", + "description": "Gets or sets the URL.", + "nullable": true + }, + "Enabled": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the repository is enabled." + } + }, + "additionalProperties": false, + "description": "Class RepositoryInfo." + }, + "PathSubstitution": { + "type": "object", + "properties": { + "From": { + "type": "string", + "description": "Gets or sets the value to substitute.", + "nullable": true + }, + "To": { + "type": "string", + "description": "Gets or sets the value to substitution with.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Defines the MediaBrowser.Model.Configuration.PathSubstitution." + }, + "ServerConfiguration": { + "type": "object", + "properties": { + "LogFileRetentionDays": { + "type": "integer", + "description": "Gets or sets the number of days we should retain log files.", + "format": "int32" + }, + "IsStartupWizardCompleted": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is first run." + }, + "CachePath": { + "type": "string", + "description": "Gets or sets the cache path.", + "nullable": true + }, + "PreviousVersion": { + "$ref": "#/components/schemas/Version" + }, + "PreviousVersionStr": { + "type": "string", + "description": "Gets or sets the stringified PreviousVersion to be stored/loaded,\r\nbecause System.Version itself isn't xml-serializable.", + "nullable": true + }, + "EnableUPnP": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to enable automatic port forwarding." + }, + "EnableMetrics": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to enable prometheus metrics exporting." + }, + "PublicPort": { + "type": "integer", + "description": "Gets or sets the public mapped port.", + "format": "int32" + }, + "UPnPCreateHttpPortMap": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the http port should be mapped as part of UPnP automatic port forwarding." + }, + "UDPPortRange": { + "type": "string", + "description": "Gets or sets client udp port range.", + "nullable": true + }, + "EnableIPV6": { + "type": "boolean", + "description": "Gets or sets a value indicating whether IPV6 capability is enabled." + }, + "EnableIPV4": { + "type": "boolean", + "description": "Gets or sets a value indicating whether IPV4 capability is enabled." + }, + "EnableSSDPTracing": { + "type": "boolean", + "description": "Gets or sets a value indicating whether detailed ssdp logs are sent to the console/log.\r\n\"Emby.Dlna\": \"Debug\" must be set in logging.default.json for this property to work." + }, + "SSDPTracingFilter": { + "type": "string", + "description": "Gets or sets a value indicating whether an IP address is to be used to filter the detailed ssdp logs that are being sent to the console/log.\r\nIf the setting \"Emby.Dlna\": \"Debug\" msut be set in logging.default.json for this property to work.", + "nullable": true + }, + "UDPSendCount": { + "type": "integer", + "description": "Gets or sets the number of times SSDP UDP messages are sent.", + "format": "int32" + }, + "UDPSendDelay": { + "type": "integer", + "description": "Gets or sets the delay between each groups of SSDP messages (in ms).", + "format": "int32" + }, + "IgnoreVirtualInterfaces": { + "type": "boolean", + "description": "Gets or sets a value indicating whether address names that match MediaBrowser.Model.Configuration.ServerConfiguration.VirtualInterfaceNames should be Ignore for the purposes of binding." + }, + "VirtualInterfaceNames": { + "type": "string", + "description": "Gets or sets a value indicating the interfaces that should be ignored. The list can be comma separated. .", + "nullable": true + }, + "GatewayMonitorPeriod": { + "type": "integer", + "description": "Gets or sets the time (in seconds) between the pings of SSDP gateway monitor.", + "format": "int32" + }, + "EnableMultiSocketBinding": { + "type": "boolean", + "description": "Gets a value indicating whether multi-socket binding is available.", + "readOnly": true + }, + "TrustAllIP6Interfaces": { + "type": "boolean", + "description": "Gets or sets a value indicating whether all IPv6 interfaces should be treated as on the internal network.\r\nDepending on the address range implemented ULA ranges might not be used." + }, + "HDHomerunPortRange": { + "type": "string", + "description": "Gets or sets the ports that HDHomerun uses.", + "nullable": true + }, + "PublishedServerUriBySubnet": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets PublishedServerUri to advertise for specific subnets.", + "nullable": true + }, + "AutoDiscoveryTracing": { + "type": "boolean", + "description": "Gets or sets a value indicating whether Autodiscovery tracing is enabled." + }, + "AutoDiscovery": { + "type": "boolean", + "description": "Gets or sets a value indicating whether Autodiscovery is enabled." + }, + "PublicHttpsPort": { + "type": "integer", + "description": "Gets or sets the public HTTPS port.", + "format": "int32" + }, + "HttpServerPortNumber": { + "type": "integer", + "description": "Gets or sets the HTTP server port number.", + "format": "int32" + }, + "HttpsPortNumber": { + "type": "integer", + "description": "Gets or sets the HTTPS server port number.", + "format": "int32" + }, + "EnableHttps": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to use HTTPS." + }, + "EnableNormalizedItemByNameIds": { + "type": "boolean" + }, + "CertificatePath": { + "type": "string", + "description": "Gets or sets the filesystem path of an X.509 certificate to use for SSL.", + "nullable": true + }, + "CertificatePassword": { + "type": "string", + "description": "Gets or sets the password required to access the X.509 certificate data in the file specified by MediaBrowser.Model.Configuration.ServerConfiguration.CertificatePath.", + "nullable": true + }, + "IsPortAuthorized": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is port authorized." + }, + "QuickConnectAvailable": { + "type": "boolean", + "description": "Gets or sets a value indicating whether quick connect is available for use on this server." + }, + "EnableRemoteAccess": { + "type": "boolean", + "description": "Gets or sets a value indicating whether access outside of the LAN is permitted." + }, + "EnableCaseSensitiveItemIds": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [enable case sensitive item ids]." + }, + "DisableLiveTvChannelUserDataName": { + "type": "boolean" + }, + "MetadataPath": { + "type": "string", + "description": "Gets or sets the metadata path.", + "nullable": true + }, + "MetadataNetworkPath": { + "type": "string", + "nullable": true + }, + "PreferredMetadataLanguage": { + "type": "string", + "description": "Gets or sets the preferred metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "SortReplaceCharacters": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets characters to be replaced with a ' ' in strings to create a sort name.", + "nullable": true + }, + "SortRemoveCharacters": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets characters to be removed from strings to create a sort name.", + "nullable": true + }, + "SortRemoveWords": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets words to be removed from strings to create a sort name.", + "nullable": true + }, + "MinResumePct": { + "type": "integer", + "description": "Gets or sets the minimum percentage of an item that must be played in order for playstate to be updated.", + "format": "int32" + }, + "MaxResumePct": { + "type": "integer", + "description": "Gets or sets the maximum percentage of an item that can be played while still saving playstate. If this percentage is crossed playstate will be reset to the beginning and the item will be marked watched.", + "format": "int32" + }, + "MinResumeDurationSeconds": { + "type": "integer", + "description": "Gets or sets the minimum duration that an item must have in order to be eligible for playstate updates..", + "format": "int32" + }, + "MinAudiobookResume": { + "type": "integer", + "description": "Gets or sets the minimum minutes of a book that must be played in order for playstate to be updated.", + "format": "int32" + }, + "MaxAudiobookResume": { + "type": "integer", + "description": "Gets or sets the remaining minutes of a book that can be played while still saving playstate. If this percentage is crossed playstate will be reset to the beginning and the item will be marked watched.", + "format": "int32" + }, + "LibraryMonitorDelay": { + "type": "integer", + "description": "Gets or sets the delay in seconds that we will wait after a file system change to try and discover what has been added/removed\r\nSome delay is necessary with some items because their creation is not atomic. It involves the creation of several\r\ndifferent directories and files.", + "format": "int32" + }, + "EnableDashboardResponseCaching": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [enable dashboard response caching].\r\nAllows potential contributors without visual studio to modify production dashboard code and test changes." + }, + "ImageSavingConvention": { + "$ref": "#/components/schemas/ImageSavingConvention" + }, + "MetadataOptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataOptions" + }, + "nullable": true + }, + "SkipDeserializationForBasicTypes": { + "type": "boolean" + }, + "ServerName": { + "type": "string", + "nullable": true + }, + "BaseUrl": { + "type": "string", + "nullable": true + }, + "UICulture": { + "type": "string", + "nullable": true + }, + "SaveMetadataHidden": { + "type": "boolean" + }, + "ContentTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameValuePair" + }, + "nullable": true + }, + "RemoteClientBitrateLimit": { + "type": "integer", + "format": "int32" + }, + "EnableFolderView": { + "type": "boolean" + }, + "EnableGroupingIntoCollections": { + "type": "boolean" + }, + "DisplaySpecialsWithinSeasons": { + "type": "boolean" + }, + "LocalNetworkSubnets": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the subnets that are deemed to make up the LAN.", + "nullable": true + }, + "LocalNetworkAddresses": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the interface addresses which Jellyfin will bind to. If empty, all interfaces will be used.", + "nullable": true + }, + "CodecsUsed": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "PluginRepositories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RepositoryInfo" + }, + "nullable": true + }, + "EnableExternalContentInSuggestions": { + "type": "boolean" + }, + "RequireHttps": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the server should force connections over HTTPS." + }, + "EnableNewOmdbSupport": { + "type": "boolean" + }, + "RemoteIPFilter": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the filter for remote IP connectivity. Used in conjuntion with .", + "nullable": true + }, + "IsRemoteIPFilterBlacklist": { + "type": "boolean", + "description": "Gets or sets a value indicating whether contains a blacklist or a whitelist. Default is a whitelist." + }, + "ImageExtractionTimeoutMs": { + "type": "integer", + "format": "int32" + }, + "PathSubstitutions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PathSubstitution" + }, + "nullable": true + }, + "EnableSimpleArtistDetection": { + "type": "boolean" + }, + "UninstalledPlugins": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "EnableSlowResponseWarning": { + "type": "boolean", + "description": "Gets or sets a value indicating whether slow server responses should be logged as a warning." + }, + "SlowResponseThresholdMs": { + "type": "integer", + "description": "Gets or sets the threshold for the slow response time warning in ms.", + "format": "int64" + }, + "CorsHosts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the cors hosts.", + "nullable": true + }, + "KnownProxies": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the known proxies.", + "nullable": true + }, + "ActivityLogRetentionDays": { + "type": "integer", + "description": "Gets or sets the number of days we should retain activity logs.", + "format": "int32", + "nullable": true + }, + "LibraryScanFanoutConcurrency": { + "type": "integer", + "description": "Gets or sets the how the library scan fans out.", + "format": "int32" + }, + "LibraryMetadataRefreshConcurrency": { + "type": "integer", + "description": "Gets or sets the how many metadata refreshes can run concurrently.", + "format": "int32" + }, + "RemoveOldPlugins": { + "type": "boolean", + "description": "Gets or sets a value indicating whether older plugins should automatically be deleted from the plugin folder." + }, + "DisablePluginImages": { + "type": "boolean", + "description": "Gets or sets a value indicating whether plugin image should be disabled." + } + }, + "additionalProperties": false, + "description": "Represents the server configuration." + }, + "MediaEncoderPathDto": { + "type": "object", + "properties": { + "Path": { + "type": "string", + "description": "Gets or sets media encoder path.", + "nullable": true + }, + "PathType": { + "type": "string", + "description": "Gets or sets media encoder path type.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Media Encoder Path Dto." + }, + "ProblemDetails": { + "type": "object", + "properties": { + "type": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "status": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "detail": { + "type": "string", + "nullable": true + }, + "instance": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": { } + }, + "ConfigurationPageType": { + "enum": [ + "PluginConfiguration", + "None" + ], + "type": "string", + "description": "Enum ConfigurationPageType." + }, + "ConfigurationPageInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "EnableInMainMenu": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the configurations page is enabled in the main menu." + }, + "MenuSection": { + "type": "string", + "description": "Gets or sets the menu section.", + "nullable": true + }, + "MenuIcon": { + "type": "string", + "description": "Gets or sets the menu icon.", + "nullable": true + }, + "DisplayName": { + "type": "string", + "description": "Gets or sets the display name.", + "nullable": true + }, + "ConfigurationPageType": { + "$ref": "#/components/schemas/ConfigurationPageType" + }, + "PluginId": { + "type": "string", + "description": "Gets or sets the plugin id.", + "format": "uuid", + "nullable": true + } + }, + "additionalProperties": false, + "description": "The configuration page info." + }, + "GeneralCommandType": { + "enum": [ + "MoveUp", + "MoveDown", + "MoveLeft", + "MoveRight", + "PageUp", + "PageDown", + "PreviousLetter", + "NextLetter", + "ToggleOsd", + "ToggleContextMenu", + "Select", + "Back", + "TakeScreenshot", + "SendKey", + "SendString", + "GoHome", + "GoToSettings", + "VolumeUp", + "VolumeDown", + "Mute", + "Unmute", + "ToggleMute", + "SetVolume", + "SetAudioStreamIndex", + "SetSubtitleStreamIndex", + "ToggleFullscreen", + "DisplayContent", + "GoToSearch", + "DisplayMessage", + "SetRepeatMode", + "ChannelUp", + "ChannelDown", + "Guide", + "ToggleStats", + "PlayMediaSource", + "PlayTrailers", + "SetShuffleQueue", + "PlayState", + "PlayNext", + "ToggleOsdMenu", + "Play" + ], + "type": "string", + "description": "This exists simply to identify a set of known commands." + }, + "HeaderMatchType": { + "enum": [ + "Equals", + "Regex", + "Substring" + ], + "type": "string" + }, + "HttpHeaderInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "nullable": true + }, + "Value": { + "type": "string", + "nullable": true + }, + "Match": { + "$ref": "#/components/schemas/HeaderMatchType" + } + }, + "additionalProperties": false + }, + "DeviceIdentification": { + "type": "object", + "properties": { + "FriendlyName": { + "type": "string", + "description": "Gets or sets the name of the friendly.", + "nullable": true + }, + "ModelNumber": { + "type": "string", + "description": "Gets or sets the model number.", + "nullable": true + }, + "SerialNumber": { + "type": "string", + "description": "Gets or sets the serial number.", + "nullable": true + }, + "ModelName": { + "type": "string", + "description": "Gets or sets the name of the model.", + "nullable": true + }, + "ModelDescription": { + "type": "string", + "description": "Gets or sets the model description.", + "nullable": true + }, + "ModelUrl": { + "type": "string", + "description": "Gets or sets the model URL.", + "nullable": true + }, + "Manufacturer": { + "type": "string", + "description": "Gets or sets the manufacturer.", + "nullable": true + }, + "ManufacturerUrl": { + "type": "string", + "description": "Gets or sets the manufacturer URL.", + "nullable": true + }, + "Headers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HttpHeaderInfo" + }, + "description": "Gets or sets the headers.", + "nullable": true + } + }, + "additionalProperties": false + }, + "XmlAttribute": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name of the attribute.", + "nullable": true + }, + "Value": { + "type": "string", + "description": "Gets or sets the value of the attribute.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Defines the MediaBrowser.Model.Dlna.XmlAttribute." + }, + "DlnaProfileType": { + "enum": [ + "Audio", + "Video", + "Photo" + ], + "type": "string" + }, + "DirectPlayProfile": { + "type": "object", + "properties": { + "Container": { + "type": "string", + "nullable": true + }, + "AudioCodec": { + "type": "string", + "nullable": true + }, + "VideoCodec": { + "type": "string", + "nullable": true + }, + "Type": { + "$ref": "#/components/schemas/DlnaProfileType" + } + }, + "additionalProperties": false + }, + "TranscodeSeekInfo": { + "enum": [ + "Auto", + "Bytes" + ], + "type": "string" + }, + "TranscodingProfile": { + "type": "object", + "properties": { + "Container": { + "type": "string", + "nullable": true + }, + "Type": { + "$ref": "#/components/schemas/DlnaProfileType" + }, + "VideoCodec": { + "type": "string", + "nullable": true + }, + "AudioCodec": { + "type": "string", + "nullable": true + }, + "Protocol": { + "type": "string", + "nullable": true + }, + "EstimateContentLength": { + "type": "boolean" + }, + "EnableMpegtsM2TsMode": { + "type": "boolean" + }, + "TranscodeSeekInfo": { + "$ref": "#/components/schemas/TranscodeSeekInfo" + }, + "CopyTimestamps": { + "type": "boolean" + }, + "Context": { + "$ref": "#/components/schemas/EncodingContext" + }, + "EnableSubtitlesInManifest": { + "type": "boolean" + }, + "MaxAudioChannels": { + "type": "string", + "nullable": true + }, + "MinSegments": { + "type": "integer", + "format": "int32" + }, + "SegmentLength": { + "type": "integer", + "format": "int32" + }, + "BreakOnNonKeyFrames": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ProfileConditionType": { + "enum": [ + "Equals", + "NotEquals", + "LessThanEqual", + "GreaterThanEqual", + "EqualsAny" + ], + "type": "string" + }, + "ProfileConditionValue": { + "enum": [ + "AudioChannels", + "AudioBitrate", + "AudioProfile", + "Width", + "Height", + "Has64BitOffsets", + "PacketLength", + "VideoBitDepth", + "VideoBitrate", + "VideoFramerate", + "VideoLevel", + "VideoProfile", + "VideoTimestamp", + "IsAnamorphic", + "RefFrames", + "NumAudioStreams", + "NumVideoStreams", + "IsSecondaryAudio", + "VideoCodecTag", + "IsAvc", + "IsInterlaced", + "AudioSampleRate", + "AudioBitDepth" + ], + "type": "string" + }, + "ProfileCondition": { + "type": "object", + "properties": { + "Condition": { + "$ref": "#/components/schemas/ProfileConditionType" + }, + "Property": { + "$ref": "#/components/schemas/ProfileConditionValue" + }, + "Value": { + "type": "string", + "nullable": true + }, + "IsRequired": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ContainerProfile": { + "type": "object", + "properties": { + "Type": { + "$ref": "#/components/schemas/DlnaProfileType" + }, + "Conditions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProfileCondition" + }, + "nullable": true + }, + "Container": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CodecType": { + "enum": [ + "Video", + "VideoAudio", + "Audio" + ], + "type": "string" + }, + "CodecProfile": { + "type": "object", + "properties": { + "Type": { + "$ref": "#/components/schemas/CodecType" + }, + "Conditions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProfileCondition" + }, + "nullable": true + }, + "ApplyConditions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProfileCondition" + }, + "nullable": true + }, + "Codec": { + "type": "string", + "nullable": true + }, + "Container": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ResponseProfile": { + "type": "object", + "properties": { + "Container": { + "type": "string", + "nullable": true + }, + "AudioCodec": { + "type": "string", + "nullable": true + }, + "VideoCodec": { + "type": "string", + "nullable": true + }, + "Type": { + "$ref": "#/components/schemas/DlnaProfileType" + }, + "OrgPn": { + "type": "string", + "nullable": true + }, + "MimeType": { + "type": "string", + "nullable": true + }, + "Conditions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProfileCondition" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "SubtitleProfile": { + "type": "object", + "properties": { + "Format": { + "type": "string", + "nullable": true + }, + "Method": { + "$ref": "#/components/schemas/SubtitleDeliveryMethod" + }, + "DidlMode": { + "type": "string", + "nullable": true + }, + "Language": { + "type": "string", + "nullable": true + }, + "Container": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "DeviceProfile": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the Name.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the Id.", + "nullable": true + }, + "Identification": { + "$ref": "#/components/schemas/DeviceIdentification" + }, + "FriendlyName": { + "type": "string", + "description": "Gets or sets the FriendlyName.", + "nullable": true + }, + "Manufacturer": { + "type": "string", + "description": "Gets or sets the Manufacturer.", + "nullable": true + }, + "ManufacturerUrl": { + "type": "string", + "description": "Gets or sets the ManufacturerUrl.", + "nullable": true + }, + "ModelName": { + "type": "string", + "description": "Gets or sets the ModelName.", + "nullable": true + }, + "ModelDescription": { + "type": "string", + "description": "Gets or sets the ModelDescription.", + "nullable": true + }, + "ModelNumber": { + "type": "string", + "description": "Gets or sets the ModelNumber.", + "nullable": true + }, + "ModelUrl": { + "type": "string", + "description": "Gets or sets the ModelUrl.", + "nullable": true + }, + "SerialNumber": { + "type": "string", + "description": "Gets or sets the SerialNumber.", + "nullable": true + }, + "EnableAlbumArtInDidl": { + "type": "boolean", + "description": "Gets or sets a value indicating whether EnableAlbumArtInDidl." + }, + "EnableSingleAlbumArtLimit": { + "type": "boolean", + "description": "Gets or sets a value indicating whether EnableSingleAlbumArtLimit." + }, + "EnableSingleSubtitleLimit": { + "type": "boolean", + "description": "Gets or sets a value indicating whether EnableSingleSubtitleLimit." + }, + "SupportedMediaTypes": { + "type": "string", + "description": "Gets or sets the SupportedMediaTypes.", + "nullable": true + }, + "UserId": { + "type": "string", + "description": "Gets or sets the UserId.", + "nullable": true + }, + "AlbumArtPn": { + "type": "string", + "description": "Gets or sets the AlbumArtPn.", + "nullable": true + }, + "MaxAlbumArtWidth": { + "type": "integer", + "description": "Gets or sets the MaxAlbumArtWidth.", + "format": "int32" + }, + "MaxAlbumArtHeight": { + "type": "integer", + "description": "Gets or sets the MaxAlbumArtHeight.", + "format": "int32" + }, + "MaxIconWidth": { + "type": "integer", + "description": "Gets or sets the MaxIconWidth.", + "format": "int32", + "nullable": true + }, + "MaxIconHeight": { + "type": "integer", + "description": "Gets or sets the MaxIconHeight.", + "format": "int32", + "nullable": true + }, + "MaxStreamingBitrate": { + "type": "integer", + "description": "Gets or sets the MaxStreamingBitrate.", + "format": "int32", + "nullable": true + }, + "MaxStaticBitrate": { + "type": "integer", + "description": "Gets or sets the MaxStaticBitrate.", + "format": "int32", + "nullable": true + }, + "MusicStreamingTranscodingBitrate": { + "type": "integer", + "description": "Gets or sets the MusicStreamingTranscodingBitrate.", + "format": "int32", + "nullable": true + }, + "MaxStaticMusicBitrate": { + "type": "integer", + "description": "Gets or sets the MaxStaticMusicBitrate.", + "format": "int32", + "nullable": true + }, + "SonyAggregationFlags": { + "type": "string", + "description": "Gets or sets the content of the aggregationFlags element in the urn:schemas-sonycom:av namespace.", + "nullable": true + }, + "ProtocolInfo": { + "type": "string", + "description": "Gets or sets the ProtocolInfo.", + "nullable": true + }, + "TimelineOffsetSeconds": { + "type": "integer", + "description": "Gets or sets the TimelineOffsetSeconds.", + "format": "int32" + }, + "RequiresPlainVideoItems": { + "type": "boolean", + "description": "Gets or sets a value indicating whether RequiresPlainVideoItems." + }, + "RequiresPlainFolders": { + "type": "boolean", + "description": "Gets or sets a value indicating whether RequiresPlainFolders." + }, + "EnableMSMediaReceiverRegistrar": { + "type": "boolean", + "description": "Gets or sets a value indicating whether EnableMSMediaReceiverRegistrar." + }, + "IgnoreTranscodeByteRangeRequests": { + "type": "boolean", + "description": "Gets or sets a value indicating whether IgnoreTranscodeByteRangeRequests." + }, + "XmlRootAttributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/XmlAttribute" + }, + "description": "Gets or sets the XmlRootAttributes.", + "nullable": true + }, + "DirectPlayProfiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DirectPlayProfile" + }, + "description": "Gets or sets the direct play profiles.", + "nullable": true + }, + "TranscodingProfiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TranscodingProfile" + }, + "description": "Gets or sets the transcoding profiles.", + "nullable": true + }, + "ContainerProfiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ContainerProfile" + }, + "description": "Gets or sets the ContainerProfiles.", + "nullable": true + }, + "CodecProfiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CodecProfile" + }, + "description": "Gets or sets the CodecProfiles.", + "nullable": true + }, + "ResponseProfiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseProfile" + }, + "description": "Gets or sets the ResponseProfiles.", + "nullable": true + }, + "SubtitleProfiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SubtitleProfile" + }, + "description": "Gets or sets the SubtitleProfiles.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Defines the MediaBrowser.Model.Dlna.DeviceProfile." + }, + "ClientCapabilities": { + "type": "object", + "properties": { + "PlayableMediaTypes": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "SupportedCommands": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GeneralCommandType" + }, + "nullable": true + }, + "SupportsMediaControl": { + "type": "boolean" + }, + "SupportsContentUploading": { + "type": "boolean" + }, + "MessageCallbackUrl": { + "type": "string", + "nullable": true + }, + "SupportsPersistentIdentifier": { + "type": "boolean" + }, + "SupportsSync": { + "type": "boolean" + }, + "DeviceProfile": { + "$ref": "#/components/schemas/DeviceProfile" + }, + "AppStoreUrl": { + "type": "string", + "nullable": true + }, + "IconUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "DeviceInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the identifier.", + "nullable": true + }, + "LastUserName": { + "type": "string", + "description": "Gets or sets the last name of the user.", + "nullable": true + }, + "AppName": { + "type": "string", + "description": "Gets or sets the name of the application.", + "nullable": true + }, + "AppVersion": { + "type": "string", + "description": "Gets or sets the application version.", + "nullable": true + }, + "LastUserId": { + "type": "string", + "description": "Gets or sets the last user identifier.", + "format": "uuid" + }, + "DateLastActivity": { + "type": "string", + "description": "Gets or sets the date last modified.", + "format": "date-time" + }, + "Capabilities": { + "$ref": "#/components/schemas/ClientCapabilities" + }, + "IconUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "DeviceInfoQueryResult": { + "type": "object", + "properties": { + "Items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeviceInfo" + }, + "description": "Gets or sets the items.", + "nullable": true + }, + "TotalRecordCount": { + "type": "integer", + "description": "The total number of records available.", + "format": "int32" + }, + "StartIndex": { + "type": "integer", + "description": "The index of the first record in Items.", + "format": "int32" + } + }, + "additionalProperties": false + }, + "DeviceOptions": { + "type": "object", + "properties": { + "CustomName": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ScrollDirection": { + "enum": [ + "Horizontal", + "Vertical" + ], + "type": "string", + "description": "An enum representing the axis that should be scrolled." + }, + "SortOrder": { + "enum": [ + "Ascending", + "Descending" + ], + "type": "string", + "description": "An enum representing the sorting order." + }, + "DisplayPreferencesDto": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "description": "Gets or sets the user id.", + "nullable": true + }, + "ViewType": { + "type": "string", + "description": "Gets or sets the type of the view.", + "nullable": true + }, + "SortBy": { + "type": "string", + "description": "Gets or sets the sort by.", + "nullable": true + }, + "IndexBy": { + "type": "string", + "description": "Gets or sets the index by.", + "nullable": true + }, + "RememberIndexing": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [remember indexing]." + }, + "PrimaryImageHeight": { + "type": "integer", + "description": "Gets or sets the height of the primary image.", + "format": "int32" + }, + "PrimaryImageWidth": { + "type": "integer", + "description": "Gets or sets the width of the primary image.", + "format": "int32" + }, + "CustomPrefs": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the custom prefs.", + "nullable": true + }, + "ScrollDirection": { + "$ref": "#/components/schemas/ScrollDirection" + }, + "ShowBackdrop": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to show backdrops on this item." + }, + "RememberSorting": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [remember sorting]." + }, + "SortOrder": { + "$ref": "#/components/schemas/SortOrder" + }, + "ShowSidebar": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [show sidebar]." + }, + "Client": { + "type": "string", + "description": "Gets or sets the client.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Defines the display preferences for any item that supports them (usually Folders)." + }, + "DeviceProfileType": { + "enum": [ + "System", + "User" + ], + "type": "string" + }, + "DeviceProfileInfo": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "description": "Gets or sets the identifier.", + "nullable": true + }, + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Type": { + "$ref": "#/components/schemas/DeviceProfileType" + } + }, + "additionalProperties": false + }, + "ControlResponse": { + "type": "object", + "properties": { + "Headers": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true, + "readOnly": true + }, + "Xml": { + "type": "string", + "nullable": true + }, + "IsSuccessful": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "DefaultDirectoryBrowserInfoDto": { + "type": "object", + "properties": { + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Default directory browser info." + }, + "FileSystemEntryType": { + "enum": [ + "File", + "Directory", + "NetworkComputer", + "NetworkShare" + ], + "type": "string", + "description": "Enum FileSystemEntryType." + }, + "FileSystemEntryInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets the name.", + "nullable": true, + "readOnly": true + }, + "Path": { + "type": "string", + "description": "Gets the path.", + "nullable": true, + "readOnly": true + }, + "Type": { + "$ref": "#/components/schemas/FileSystemEntryType" + } + }, + "additionalProperties": false, + "description": "Class FileSystemEntryInfo." + }, + "ValidatePathDto": { + "type": "object", + "properties": { + "ValidateWritable": { + "type": "boolean", + "description": "Gets or sets a value indicating whether validate if path is writable." + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "IsFile": { + "type": "boolean", + "description": "Gets or sets is path file.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Validate path object." + }, + "QueryFiltersLegacy": { + "type": "object", + "properties": { + "Genres": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "Tags": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "OfficialRatings": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "Years": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "QueryFilters": { + "type": "object", + "properties": { + "Genres": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameGuidPair" + }, + "nullable": true + }, + "Tags": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ImageFormat": { + "enum": [ + "Bmp", + "Gif", + "Jpg", + "Png", + "Webp" + ], + "type": "string", + "description": "Enum ImageOutputFormat." + }, + "ImageInfo": { + "type": "object", + "properties": { + "ImageType": { + "$ref": "#/components/schemas/ImageType" + }, + "ImageIndex": { + "type": "integer", + "description": "Gets or sets the index of the image.", + "format": "int32", + "nullable": true + }, + "ImageTag": { + "type": "string", + "description": "Gets or sets the image tag.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "BlurHash": { + "type": "string", + "description": "Gets or sets the blurhash.", + "nullable": true + }, + "Height": { + "type": "integer", + "description": "Gets or sets the height.", + "format": "int32", + "nullable": true + }, + "Width": { + "type": "integer", + "description": "Gets or sets the width.", + "format": "int32", + "nullable": true + }, + "Size": { + "type": "integer", + "description": "Gets or sets the size.", + "format": "int64" + } + }, + "additionalProperties": false, + "description": "Class ImageInfo." + }, + "ImageByNameInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Theme": { + "type": "string", + "description": "Gets or sets the theme.", + "nullable": true + }, + "Context": { + "type": "string", + "description": "Gets or sets the context.", + "nullable": true + }, + "FileLength": { + "type": "integer", + "description": "Gets or sets the length of the file.", + "format": "int64" + }, + "Format": { + "type": "string", + "description": "Gets or sets the format.", + "nullable": true + } + }, + "additionalProperties": false + }, + "ExternalIdMediaType": { + "enum": [ + "Album", + "AlbumArtist", + "Artist", + "BoxSet", + "Episode", + "Movie", + "OtherArtist", + "Person", + "ReleaseGroup", + "Season", + "Series", + "Track" + ], + "type": "string", + "description": "The specific media type of an MediaBrowser.Model.Providers.ExternalIdInfo." + }, + "ExternalIdInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the display name of the external id provider (IE: IMDB, MusicBrainz, etc).", + "nullable": true + }, + "Key": { + "type": "string", + "description": "Gets or sets the unique key for this id. This key should be unique across all providers.", + "nullable": true + }, + "Type": { + "$ref": "#/components/schemas/ExternalIdMediaType" + }, + "UrlFormatString": { + "type": "string", + "description": "Gets or sets the URL format string.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Represents the external id information for serialization to the client." + }, + "RemoteSearchResult": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "ProductionYear": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "IndexNumberEnd": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "ImageUrl": { + "type": "string", + "nullable": true + }, + "SearchProviderName": { + "type": "string", + "nullable": true + }, + "Overview": { + "type": "string", + "nullable": true + }, + "AlbumArtist": { + "$ref": "#/components/schemas/RemoteSearchResult" + }, + "Artists": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteSearchResult" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "BookInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "MetadataLanguage": { + "type": "string", + "description": "Gets or sets the metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "Year": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "IsAutomated": { + "type": "boolean" + }, + "SeriesName": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "BookInfoRemoteSearchQuery": { + "type": "object", + "properties": { + "SearchInfo": { + "$ref": "#/components/schemas/BookInfo" + }, + "ItemId": { + "type": "string", + "format": "uuid" + }, + "SearchProviderName": { + "type": "string", + "description": "Will only search within the given provider when set.", + "nullable": true + }, + "IncludeDisabledProviders": { + "type": "boolean", + "description": "Gets or sets a value indicating whether disabled providers should be included." + } + }, + "additionalProperties": false + }, + "BoxSetInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "MetadataLanguage": { + "type": "string", + "description": "Gets or sets the metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "Year": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "IsAutomated": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "BoxSetInfoRemoteSearchQuery": { + "type": "object", + "properties": { + "SearchInfo": { + "$ref": "#/components/schemas/BoxSetInfo" + }, + "ItemId": { + "type": "string", + "format": "uuid" + }, + "SearchProviderName": { + "type": "string", + "description": "Will only search within the given provider when set.", + "nullable": true + }, + "IncludeDisabledProviders": { + "type": "boolean", + "description": "Gets or sets a value indicating whether disabled providers should be included." + } + }, + "additionalProperties": false + }, + "MovieInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "MetadataLanguage": { + "type": "string", + "description": "Gets or sets the metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "Year": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "IsAutomated": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "MovieInfoRemoteSearchQuery": { + "type": "object", + "properties": { + "SearchInfo": { + "$ref": "#/components/schemas/MovieInfo" + }, + "ItemId": { + "type": "string", + "format": "uuid" + }, + "SearchProviderName": { + "type": "string", + "description": "Will only search within the given provider when set.", + "nullable": true + }, + "IncludeDisabledProviders": { + "type": "boolean", + "description": "Gets or sets a value indicating whether disabled providers should be included." + } + }, + "additionalProperties": false + }, + "SongInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "MetadataLanguage": { + "type": "string", + "description": "Gets or sets the metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "Year": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "IsAutomated": { + "type": "boolean" + }, + "AlbumArtists": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "Album": { + "type": "string", + "nullable": true + }, + "Artists": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "AlbumInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "MetadataLanguage": { + "type": "string", + "description": "Gets or sets the metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "Year": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "IsAutomated": { + "type": "boolean" + }, + "AlbumArtists": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the album artist.", + "nullable": true + }, + "ArtistProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the artist provider ids.", + "nullable": true + }, + "SongInfos": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SongInfo" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "AlbumInfoRemoteSearchQuery": { + "type": "object", + "properties": { + "SearchInfo": { + "$ref": "#/components/schemas/AlbumInfo" + }, + "ItemId": { + "type": "string", + "format": "uuid" + }, + "SearchProviderName": { + "type": "string", + "description": "Will only search within the given provider when set.", + "nullable": true + }, + "IncludeDisabledProviders": { + "type": "boolean", + "description": "Gets or sets a value indicating whether disabled providers should be included." + } + }, + "additionalProperties": false + }, + "ArtistInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "MetadataLanguage": { + "type": "string", + "description": "Gets or sets the metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "Year": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "IsAutomated": { + "type": "boolean" + }, + "SongInfos": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SongInfo" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ArtistInfoRemoteSearchQuery": { + "type": "object", + "properties": { + "SearchInfo": { + "$ref": "#/components/schemas/ArtistInfo" + }, + "ItemId": { + "type": "string", + "format": "uuid" + }, + "SearchProviderName": { + "type": "string", + "description": "Will only search within the given provider when set.", + "nullable": true + }, + "IncludeDisabledProviders": { + "type": "boolean", + "description": "Gets or sets a value indicating whether disabled providers should be included." + } + }, + "additionalProperties": false + }, + "MusicVideoInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "MetadataLanguage": { + "type": "string", + "description": "Gets or sets the metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "Year": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "IsAutomated": { + "type": "boolean" + }, + "Artists": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "MusicVideoInfoRemoteSearchQuery": { + "type": "object", + "properties": { + "SearchInfo": { + "$ref": "#/components/schemas/MusicVideoInfo" + }, + "ItemId": { + "type": "string", + "format": "uuid" + }, + "SearchProviderName": { + "type": "string", + "description": "Will only search within the given provider when set.", + "nullable": true + }, + "IncludeDisabledProviders": { + "type": "boolean", + "description": "Gets or sets a value indicating whether disabled providers should be included." + } + }, + "additionalProperties": false + }, + "PersonLookupInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "MetadataLanguage": { + "type": "string", + "description": "Gets or sets the metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "Year": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "IsAutomated": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "PersonLookupInfoRemoteSearchQuery": { + "type": "object", + "properties": { + "SearchInfo": { + "$ref": "#/components/schemas/PersonLookupInfo" + }, + "ItemId": { + "type": "string", + "format": "uuid" + }, + "SearchProviderName": { + "type": "string", + "description": "Will only search within the given provider when set.", + "nullable": true + }, + "IncludeDisabledProviders": { + "type": "boolean", + "description": "Gets or sets a value indicating whether disabled providers should be included." + } + }, + "additionalProperties": false + }, + "SeriesInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "MetadataLanguage": { + "type": "string", + "description": "Gets or sets the metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "Year": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "IsAutomated": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "SeriesInfoRemoteSearchQuery": { + "type": "object", + "properties": { + "SearchInfo": { + "$ref": "#/components/schemas/SeriesInfo" + }, + "ItemId": { + "type": "string", + "format": "uuid" + }, + "SearchProviderName": { + "type": "string", + "description": "Will only search within the given provider when set.", + "nullable": true + }, + "IncludeDisabledProviders": { + "type": "boolean", + "description": "Gets or sets a value indicating whether disabled providers should be included." + } + }, + "additionalProperties": false + }, + "TrailerInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Path": { + "type": "string", + "description": "Gets or sets the path.", + "nullable": true + }, + "MetadataLanguage": { + "type": "string", + "description": "Gets or sets the metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "ProviderIds": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the provider ids.", + "nullable": true + }, + "Year": { + "type": "integer", + "description": "Gets or sets the year.", + "format": "int32", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "PremiereDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "IsAutomated": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "TrailerInfoRemoteSearchQuery": { + "type": "object", + "properties": { + "SearchInfo": { + "$ref": "#/components/schemas/TrailerInfo" + }, + "ItemId": { + "type": "string", + "format": "uuid" + }, + "SearchProviderName": { + "type": "string", + "description": "Will only search within the given provider when set.", + "nullable": true + }, + "IncludeDisabledProviders": { + "type": "boolean", + "description": "Gets or sets a value indicating whether disabled providers should be included." + } + }, + "additionalProperties": false + }, + "MetadataRefreshMode": { + "enum": [ + "None", + "ValidationOnly", + "Default", + "FullRefresh" + ], + "type": "string" + }, + "SeriesStatus": { + "enum": [ + "Continuing", + "Ended" + ], + "type": "string", + "description": "Enum SeriesStatus." + }, + "ParentalRating": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Value": { + "type": "integer", + "description": "Gets or sets the value.", + "format": "int32" + } + }, + "additionalProperties": false, + "description": "Class ParentalRating." + }, + "CountryInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "DisplayName": { + "type": "string", + "description": "Gets or sets the display name.", + "nullable": true + }, + "TwoLetterISORegionName": { + "type": "string", + "description": "Gets or sets the name of the two letter ISO region.", + "nullable": true + }, + "ThreeLetterISORegionName": { + "type": "string", + "description": "Gets or sets the name of the three letter ISO region.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class CountryInfo." + }, + "CultureDto": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "DisplayName": { + "type": "string", + "description": "Gets or sets the display name.", + "nullable": true + }, + "TwoLetterISOLanguageName": { + "type": "string", + "description": "Gets or sets the name of the two letter ISO language.", + "nullable": true + }, + "ThreeLetterISOLanguageName": { + "type": "string", + "description": "Gets or sets the name of the three letter ISO language.", + "nullable": true, + "readOnly": true + }, + "ThreeLetterISOLanguageNames": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class CultureDto." + }, + "MetadataEditorInfo": { + "type": "object", + "properties": { + "ParentalRatingOptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ParentalRating" + }, + "nullable": true + }, + "Countries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryInfo" + }, + "nullable": true + }, + "Cultures": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CultureDto" + }, + "nullable": true + }, + "ExternalIdInfos": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExternalIdInfo" + }, + "nullable": true + }, + "ContentType": { + "type": "string", + "nullable": true + }, + "ContentTypeOptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameValuePair" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ThemeMediaResult": { + "type": "object", + "properties": { + "Items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + }, + "description": "Gets or sets the items.", + "nullable": true + }, + "TotalRecordCount": { + "type": "integer", + "description": "The total number of records available.", + "format": "int32" + }, + "StartIndex": { + "type": "integer", + "description": "The index of the first record in Items.", + "format": "int32" + }, + "OwnerId": { + "type": "string", + "description": "Gets or sets the owner id.", + "format": "uuid" + } + }, + "additionalProperties": false, + "description": "Class ThemeMediaResult." + }, + "AllThemeMediaResult": { + "type": "object", + "properties": { + "ThemeVideosResult": { + "$ref": "#/components/schemas/ThemeMediaResult" + }, + "ThemeSongsResult": { + "$ref": "#/components/schemas/ThemeMediaResult" + }, + "SoundtrackSongsResult": { + "$ref": "#/components/schemas/ThemeMediaResult" + } + }, + "additionalProperties": false + }, + "ItemCounts": { + "type": "object", + "properties": { + "MovieCount": { + "type": "integer", + "description": "Gets or sets the movie count.", + "format": "int32" + }, + "SeriesCount": { + "type": "integer", + "description": "Gets or sets the series count.", + "format": "int32" + }, + "EpisodeCount": { + "type": "integer", + "description": "Gets or sets the episode count.", + "format": "int32" + }, + "ArtistCount": { + "type": "integer", + "description": "Gets or sets the artist count.", + "format": "int32" + }, + "ProgramCount": { + "type": "integer", + "description": "Gets or sets the program count.", + "format": "int32" + }, + "TrailerCount": { + "type": "integer", + "description": "Gets or sets the trailer count.", + "format": "int32" + }, + "SongCount": { + "type": "integer", + "description": "Gets or sets the song count.", + "format": "int32" + }, + "AlbumCount": { + "type": "integer", + "description": "Gets or sets the album count.", + "format": "int32" + }, + "MusicVideoCount": { + "type": "integer", + "description": "Gets or sets the music video count.", + "format": "int32" + }, + "BoxSetCount": { + "type": "integer", + "description": "Gets or sets the box set count.", + "format": "int32" + }, + "BookCount": { + "type": "integer", + "description": "Gets or sets the book count.", + "format": "int32" + }, + "ItemCount": { + "type": "integer", + "description": "Gets or sets the item count.", + "format": "int32" + } + }, + "additionalProperties": false, + "description": "Class LibrarySummary." + }, + "LibraryOptionInfoDto": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets name.", + "nullable": true + }, + "DefaultEnabled": { + "type": "boolean", + "description": "Gets or sets a value indicating whether default enabled." + } + }, + "additionalProperties": false, + "description": "Library option info dto." + }, + "ImageOption": { + "type": "object", + "properties": { + "Type": { + "$ref": "#/components/schemas/ImageType" + }, + "Limit": { + "type": "integer", + "description": "Gets or sets the limit.", + "format": "int32" + }, + "MinWidth": { + "type": "integer", + "description": "Gets or sets the minimum width.", + "format": "int32" + } + }, + "additionalProperties": false + }, + "LibraryTypeOptionsDto": { + "type": "object", + "properties": { + "Type": { + "type": "string", + "description": "Gets or sets the type.", + "nullable": true + }, + "MetadataFetchers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LibraryOptionInfoDto" + }, + "description": "Gets or sets the metadata fetchers.", + "nullable": true + }, + "ImageFetchers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LibraryOptionInfoDto" + }, + "description": "Gets or sets the image fetchers.", + "nullable": true + }, + "SupportedImageTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Gets or sets the supported image types.", + "nullable": true + }, + "DefaultImageOptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageOption" + }, + "description": "Gets or sets the default image options.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Library type options dto." + }, + "LibraryOptionsResultDto": { + "type": "object", + "properties": { + "MetadataSavers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LibraryOptionInfoDto" + }, + "description": "Gets or sets the metadata savers.", + "nullable": true + }, + "MetadataReaders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LibraryOptionInfoDto" + }, + "description": "Gets or sets the metadata readers.", + "nullable": true + }, + "SubtitleFetchers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LibraryOptionInfoDto" + }, + "description": "Gets or sets the subtitle fetchers.", + "nullable": true + }, + "TypeOptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LibraryTypeOptionsDto" + }, + "description": "Gets or sets the type options.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Library options result dto." + }, + "MediaUpdateInfoDto": { + "type": "object", + "properties": { + "Path": { + "type": "string", + "description": "Gets or sets media path.", + "nullable": true + }, + "UpdateType": { + "type": "string", + "description": "Gets or sets media update type.\r\nCreated, Modified, Deleted.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Media Update Info Dto." + }, + "MediaPathInfo": { + "type": "object", + "properties": { + "Path": { + "type": "string", + "nullable": true + }, + "NetworkPath": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "TypeOptions": { + "type": "object", + "properties": { + "Type": { + "type": "string", + "nullable": true + }, + "MetadataFetchers": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "MetadataFetcherOrder": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "ImageFetchers": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "ImageFetcherOrder": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "ImageOptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageOption" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "LibraryOptions": { + "type": "object", + "properties": { + "EnablePhotos": { + "type": "boolean" + }, + "EnableRealtimeMonitor": { + "type": "boolean" + }, + "EnableChapterImageExtraction": { + "type": "boolean" + }, + "ExtractChapterImagesDuringLibraryScan": { + "type": "boolean" + }, + "PathInfos": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaPathInfo" + }, + "nullable": true + }, + "SaveLocalMetadata": { + "type": "boolean" + }, + "EnableInternetProviders": { + "type": "boolean" + }, + "EnableAutomaticSeriesGrouping": { + "type": "boolean" + }, + "EnableEmbeddedTitles": { + "type": "boolean" + }, + "EnableEmbeddedEpisodeInfos": { + "type": "boolean" + }, + "AutomaticRefreshIntervalDays": { + "type": "integer", + "format": "int32" + }, + "PreferredMetadataLanguage": { + "type": "string", + "description": "Gets or sets the preferred metadata language.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "SeasonZeroDisplayName": { + "type": "string", + "nullable": true + }, + "MetadataSavers": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "DisabledLocalMetadataReaders": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "LocalMetadataReaderOrder": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "DisabledSubtitleFetchers": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "SubtitleFetcherOrder": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "SkipSubtitlesIfEmbeddedSubtitlesPresent": { + "type": "boolean" + }, + "SkipSubtitlesIfAudioTrackMatches": { + "type": "boolean" + }, + "SubtitleDownloadLanguages": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "RequirePerfectSubtitleMatch": { + "type": "boolean" + }, + "SaveSubtitlesWithMedia": { + "type": "boolean" + }, + "TypeOptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TypeOptions" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "VirtualFolderInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Locations": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the locations.", + "nullable": true + }, + "CollectionType": { + "type": "string", + "description": "Gets or sets the type of the collection.", + "nullable": true + }, + "LibraryOptions": { + "$ref": "#/components/schemas/LibraryOptions" + }, + "ItemId": { + "type": "string", + "description": "Gets or sets the item identifier.", + "nullable": true + }, + "PrimaryImageItemId": { + "type": "string", + "description": "Gets or sets the primary image item identifier.", + "nullable": true + }, + "RefreshProgress": { + "type": "number", + "format": "double", + "nullable": true + }, + "RefreshStatus": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Used to hold information about a user's list of configured virtual folders." + }, + "AddVirtualFolderDto": { + "type": "object", + "properties": { + "LibraryOptions": { + "$ref": "#/components/schemas/LibraryOptions" + } + }, + "additionalProperties": false, + "description": "Add virtual folder dto." + }, + "UpdateLibraryOptionsDto": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "description": "Gets or sets the library item id.", + "format": "uuid" + }, + "LibraryOptions": { + "$ref": "#/components/schemas/LibraryOptions" + } + }, + "additionalProperties": false, + "description": "Update library options dto." + }, + "MediaPathDto": { + "required": [ + "Name" + ], + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name of the library." + }, + "Path": { + "type": "string", + "description": "Gets or sets the path to add.", + "nullable": true + }, + "PathInfo": { + "$ref": "#/components/schemas/MediaPathInfo" + } + }, + "additionalProperties": false, + "description": "Media Path dto." + }, + "TunerChannelMapping": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "nullable": true + }, + "ProviderChannelName": { + "type": "string", + "nullable": true + }, + "ProviderChannelId": { + "type": "string", + "nullable": true + }, + "Id": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "NameIdPair": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the identifier.", + "nullable": true + } + }, + "additionalProperties": false + }, + "ChannelMappingOptionsDto": { + "type": "object", + "properties": { + "TunerChannels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TunerChannelMapping" + }, + "description": "Gets or sets list of tuner channels.", + "nullable": true + }, + "ProviderChannels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameIdPair" + }, + "description": "Gets or sets list of provider channels.", + "nullable": true + }, + "Mappings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameValuePair" + }, + "description": "Gets or sets list of mappings.", + "nullable": true + }, + "ProviderName": { + "type": "string", + "description": "Gets or sets provider name.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Channel mapping options dto." + }, + "SetChannelMappingDto": { + "required": [ + "ProviderChannelId", + "ProviderId", + "TunerChannelId" + ], + "type": "object", + "properties": { + "ProviderId": { + "type": "string", + "description": "Gets or sets the provider id." + }, + "TunerChannelId": { + "type": "string", + "description": "Gets or sets the tuner channel id." + }, + "ProviderChannelId": { + "type": "string", + "description": "Gets or sets the provider channel id." + } + }, + "additionalProperties": false, + "description": "Set channel mapping dto." + }, + "GuideInfo": { + "type": "object", + "properties": { + "StartDate": { + "type": "string", + "description": "Gets or sets the start date.", + "format": "date-time" + }, + "EndDate": { + "type": "string", + "description": "Gets or sets the end date.", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "LiveTvServiceStatus": { + "enum": [ + "Ok", + "Unavailable" + ], + "type": "string" + }, + "LiveTvServiceInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "HomePageUrl": { + "type": "string", + "description": "Gets or sets the home page URL.", + "nullable": true + }, + "Status": { + "$ref": "#/components/schemas/LiveTvServiceStatus" + }, + "StatusMessage": { + "type": "string", + "description": "Gets or sets the status message.", + "nullable": true + }, + "Version": { + "type": "string", + "description": "Gets or sets the version.", + "nullable": true + }, + "HasUpdateAvailable": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance has update available." + }, + "IsVisible": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is visible." + }, + "Tuners": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class ServiceInfo." + }, + "LiveTvInfo": { + "type": "object", + "properties": { + "Services": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LiveTvServiceInfo" + }, + "description": "Gets or sets the services.", + "nullable": true + }, + "IsEnabled": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is enabled." + }, + "EnabledUsers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the enabled users.", + "nullable": true + } + }, + "additionalProperties": false + }, + "ListingsProviderInfo": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "nullable": true + }, + "Type": { + "type": "string", + "nullable": true + }, + "Username": { + "type": "string", + "nullable": true + }, + "Password": { + "type": "string", + "nullable": true + }, + "ListingsId": { + "type": "string", + "nullable": true + }, + "ZipCode": { + "type": "string", + "nullable": true + }, + "Country": { + "type": "string", + "nullable": true + }, + "Path": { + "type": "string", + "nullable": true + }, + "EnabledTuners": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "EnableAllTuners": { + "type": "boolean" + }, + "NewsCategories": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "SportsCategories": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "KidsCategories": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "MovieCategories": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "ChannelMappings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NameValuePair" + }, + "nullable": true + }, + "MoviePrefix": { + "type": "string", + "nullable": true + }, + "PreferredLanguage": { + "type": "string", + "nullable": true + }, + "UserAgent": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "GetProgramsDto": { + "type": "object", + "properties": { + "ChannelIds": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Gets or sets the channels to return guide information for.", + "nullable": true + }, + "UserId": { + "type": "string", + "description": "Gets or sets optional. Filter by user id.", + "format": "uuid" + }, + "MinStartDate": { + "type": "string", + "description": "Gets or sets the minimum premiere start date.\r\nOptional.", + "format": "date-time", + "nullable": true + }, + "HasAired": { + "type": "boolean", + "description": "Gets or sets filter by programs that have completed airing, or not.\r\nOptional.", + "nullable": true + }, + "IsAiring": { + "type": "boolean", + "description": "Gets or sets filter by programs that are currently airing, or not.\r\nOptional.", + "nullable": true + }, + "MaxStartDate": { + "type": "string", + "description": "Gets or sets the maximum premiere start date.\r\nOptional.", + "format": "date-time", + "nullable": true + }, + "MinEndDate": { + "type": "string", + "description": "Gets or sets the minimum premiere end date.\r\nOptional.", + "format": "date-time", + "nullable": true + }, + "MaxEndDate": { + "type": "string", + "description": "Gets or sets the maximum premiere end date.\r\nOptional.", + "format": "date-time", + "nullable": true + }, + "IsMovie": { + "type": "boolean", + "description": "Gets or sets filter for movies.\r\nOptional.", + "nullable": true + }, + "IsSeries": { + "type": "boolean", + "description": "Gets or sets filter for series.\r\nOptional.", + "nullable": true + }, + "IsNews": { + "type": "boolean", + "description": "Gets or sets filter for news.\r\nOptional.", + "nullable": true + }, + "IsKids": { + "type": "boolean", + "description": "Gets or sets filter for kids.\r\nOptional.", + "nullable": true + }, + "IsSports": { + "type": "boolean", + "description": "Gets or sets filter for sports.\r\nOptional.", + "nullable": true + }, + "StartIndex": { + "type": "integer", + "description": "Gets or sets the record index to start at. All items with a lower index will be dropped from the results.\r\nOptional.", + "format": "int32", + "nullable": true + }, + "Limit": { + "type": "integer", + "description": "Gets or sets the maximum number of records to return.\r\nOptional.", + "format": "int32", + "nullable": true + }, + "SortBy": { + "type": "string", + "description": "Gets or sets specify one or more sort orders, comma delimited. Options: Name, StartDate.\r\nOptional.", + "nullable": true + }, + "SortOrder": { + "type": "string", + "description": "Gets or sets sort Order - Ascending,Descending.", + "nullable": true + }, + "Genres": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the genres to return guide information for.", + "nullable": true + }, + "GenreIds": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Gets or sets the genre ids to return guide information for.", + "nullable": true + }, + "EnableImages": { + "type": "boolean", + "description": "Gets or sets include image information in output.\r\nOptional.", + "nullable": true + }, + "EnableTotalRecordCount": { + "type": "boolean", + "description": "Gets or sets a value indicating whether retrieve total record count." + }, + "ImageTypeLimit": { + "type": "integer", + "description": "Gets or sets the max number of images to return, per image type.\r\nOptional.", + "format": "int32", + "nullable": true + }, + "EnableImageTypes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Gets or sets the image types to include in the output.\r\nOptional.", + "nullable": true + }, + "EnableUserData": { + "type": "boolean", + "description": "Gets or sets include user data.\r\nOptional.", + "nullable": true + }, + "SeriesTimerId": { + "type": "string", + "description": "Gets or sets filter by series timer id.\r\nOptional.", + "nullable": true + }, + "LibrarySeriesId": { + "type": "string", + "description": "Gets or sets filter by library series id.\r\nOptional.", + "format": "uuid" + }, + "Fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ItemFields" + }, + "description": "Gets or sets specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines.\r\nOptional.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Get programs dto." + }, + "RecordingStatus": { + "enum": [ + "New", + "InProgress", + "Completed", + "Cancelled", + "ConflictedOk", + "ConflictedNotOk", + "Error" + ], + "type": "string" + }, + "KeepUntil": { + "enum": [ + "UntilDeleted", + "UntilSpaceNeeded", + "UntilWatched", + "UntilDate" + ], + "type": "string" + }, + "DayPattern": { + "enum": [ + "Daily", + "Weekdays", + "Weekends" + ], + "type": "string" + }, + "SeriesTimerInfoDto": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "description": "Id of the recording.", + "nullable": true + }, + "Type": { + "type": "string", + "nullable": true + }, + "ServerId": { + "type": "string", + "description": "Gets or sets the server identifier.", + "nullable": true + }, + "ExternalId": { + "type": "string", + "description": "Gets or sets the external identifier.", + "nullable": true + }, + "ChannelId": { + "type": "string", + "description": "ChannelId of the recording.", + "format": "uuid" + }, + "ExternalChannelId": { + "type": "string", + "description": "Gets or sets the external channel identifier.", + "nullable": true + }, + "ChannelName": { + "type": "string", + "description": "ChannelName of the recording.", + "nullable": true + }, + "ChannelPrimaryImageTag": { + "type": "string", + "nullable": true + }, + "ProgramId": { + "type": "string", + "description": "Gets or sets the program identifier.", + "nullable": true + }, + "ExternalProgramId": { + "type": "string", + "description": "Gets or sets the external program identifier.", + "nullable": true + }, + "Name": { + "type": "string", + "description": "Name of the recording.", + "nullable": true + }, + "Overview": { + "type": "string", + "description": "Description of the recording.", + "nullable": true + }, + "StartDate": { + "type": "string", + "description": "The start date of the recording, in UTC.", + "format": "date-time" + }, + "EndDate": { + "type": "string", + "description": "The end date of the recording, in UTC.", + "format": "date-time" + }, + "ServiceName": { + "type": "string", + "description": "Gets or sets the name of the service.", + "nullable": true + }, + "Priority": { + "type": "integer", + "description": "Gets or sets the priority.", + "format": "int32" + }, + "PrePaddingSeconds": { + "type": "integer", + "description": "Gets or sets the pre padding seconds.", + "format": "int32" + }, + "PostPaddingSeconds": { + "type": "integer", + "description": "Gets or sets the post padding seconds.", + "format": "int32" + }, + "IsPrePaddingRequired": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is pre padding required." + }, + "ParentBackdropItemId": { + "type": "string", + "description": "If the item does not have any backdrops, this will hold the Id of the Parent that has one.", + "nullable": true + }, + "ParentBackdropImageTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the parent backdrop image tags.", + "nullable": true + }, + "IsPostPaddingRequired": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is post padding required." + }, + "KeepUntil": { + "$ref": "#/components/schemas/KeepUntil" + }, + "RecordAnyTime": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [record any time]." + }, + "SkipEpisodesInLibrary": { + "type": "boolean" + }, + "RecordAnyChannel": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [record any channel]." + }, + "KeepUpTo": { + "type": "integer", + "format": "int32" + }, + "RecordNewOnly": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [record new only]." + }, + "Days": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DayOfWeek" + }, + "description": "Gets or sets the days.", + "nullable": true + }, + "DayPattern": { + "$ref": "#/components/schemas/DayPattern" + }, + "ImageTags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Gets or sets the image tags.", + "nullable": true + }, + "ParentThumbItemId": { + "type": "string", + "description": "Gets or sets the parent thumb item id.", + "nullable": true + }, + "ParentThumbImageTag": { + "type": "string", + "description": "Gets or sets the parent thumb image tag.", + "nullable": true + }, + "ParentPrimaryImageItemId": { + "type": "string", + "description": "Gets or sets the parent primary image item identifier.", + "nullable": true + }, + "ParentPrimaryImageTag": { + "type": "string", + "description": "Gets or sets the parent primary image tag.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class SeriesTimerInfoDto." + }, + "SeriesTimerInfoDtoQueryResult": { + "type": "object", + "properties": { + "Items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeriesTimerInfoDto" + }, + "description": "Gets or sets the items.", + "nullable": true + }, + "TotalRecordCount": { + "type": "integer", + "description": "The total number of records available.", + "format": "int32" + }, + "StartIndex": { + "type": "integer", + "description": "The index of the first record in Items.", + "format": "int32" + } + }, + "additionalProperties": false + }, + "TimerInfoDto": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "description": "Id of the recording.", + "nullable": true + }, + "Type": { + "type": "string", + "nullable": true + }, + "ServerId": { + "type": "string", + "description": "Gets or sets the server identifier.", + "nullable": true + }, + "ExternalId": { + "type": "string", + "description": "Gets or sets the external identifier.", + "nullable": true + }, + "ChannelId": { + "type": "string", + "description": "ChannelId of the recording.", + "format": "uuid" + }, + "ExternalChannelId": { + "type": "string", + "description": "Gets or sets the external channel identifier.", + "nullable": true + }, + "ChannelName": { + "type": "string", + "description": "ChannelName of the recording.", + "nullable": true + }, + "ChannelPrimaryImageTag": { + "type": "string", + "nullable": true + }, + "ProgramId": { + "type": "string", + "description": "Gets or sets the program identifier.", + "nullable": true + }, + "ExternalProgramId": { + "type": "string", + "description": "Gets or sets the external program identifier.", + "nullable": true + }, + "Name": { + "type": "string", + "description": "Name of the recording.", + "nullable": true + }, + "Overview": { + "type": "string", + "description": "Description of the recording.", + "nullable": true + }, + "StartDate": { + "type": "string", + "description": "The start date of the recording, in UTC.", + "format": "date-time" + }, + "EndDate": { + "type": "string", + "description": "The end date of the recording, in UTC.", + "format": "date-time" + }, + "ServiceName": { + "type": "string", + "description": "Gets or sets the name of the service.", + "nullable": true + }, + "Priority": { + "type": "integer", + "description": "Gets or sets the priority.", + "format": "int32" + }, + "PrePaddingSeconds": { + "type": "integer", + "description": "Gets or sets the pre padding seconds.", + "format": "int32" + }, + "PostPaddingSeconds": { + "type": "integer", + "description": "Gets or sets the post padding seconds.", + "format": "int32" + }, + "IsPrePaddingRequired": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is pre padding required." + }, + "ParentBackdropItemId": { + "type": "string", + "description": "If the item does not have any backdrops, this will hold the Id of the Parent that has one.", + "nullable": true + }, + "ParentBackdropImageTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the parent backdrop image tags.", + "nullable": true + }, + "IsPostPaddingRequired": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is post padding required." + }, + "KeepUntil": { + "$ref": "#/components/schemas/KeepUntil" + }, + "Status": { + "$ref": "#/components/schemas/RecordingStatus" + }, + "SeriesTimerId": { + "type": "string", + "description": "Gets or sets the series timer identifier.", + "nullable": true + }, + "ExternalSeriesTimerId": { + "type": "string", + "description": "Gets or sets the external series timer identifier.", + "nullable": true + }, + "RunTimeTicks": { + "type": "integer", + "description": "Gets or sets the run time ticks.", + "format": "int64", + "nullable": true + }, + "ProgramInfo": { + "$ref": "#/components/schemas/BaseItemDto" + } + }, + "additionalProperties": false + }, + "TimerInfoDtoQueryResult": { + "type": "object", + "properties": { + "Items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TimerInfoDto" + }, + "description": "Gets or sets the items.", + "nullable": true + }, + "TotalRecordCount": { + "type": "integer", + "description": "The total number of records available.", + "format": "int32" + }, + "StartIndex": { + "type": "integer", + "description": "The index of the first record in Items.", + "format": "int32" + } + }, + "additionalProperties": false + }, + "TunerHostInfo": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "nullable": true + }, + "Url": { + "type": "string", + "nullable": true + }, + "Type": { + "type": "string", + "nullable": true + }, + "DeviceId": { + "type": "string", + "nullable": true + }, + "FriendlyName": { + "type": "string", + "nullable": true + }, + "ImportFavoritesOnly": { + "type": "boolean" + }, + "AllowHWTranscoding": { + "type": "boolean" + }, + "EnableStreamLooping": { + "type": "boolean" + }, + "Source": { + "type": "string", + "nullable": true + }, + "TunerCount": { + "type": "integer", + "format": "int32" + }, + "UserAgent": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "LocalizationOption": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "nullable": true + }, + "Value": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "PlaybackErrorCode": { + "enum": [ + "NotAllowed", + "NoCompatibleStream", + "RateLimitExceeded" + ], + "type": "string" + }, + "PlaybackInfoResponse": { + "type": "object", + "properties": { + "MediaSources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaSourceInfo" + }, + "description": "Gets or sets the media sources.", + "nullable": true + }, + "PlaySessionId": { + "type": "string", + "description": "Gets or sets the play session identifier.", + "nullable": true + }, + "ErrorCode": { + "$ref": "#/components/schemas/PlaybackErrorCode" + } + }, + "additionalProperties": false, + "description": "Class PlaybackInfoResponse." + }, + "PlaybackInfoDto": { + "type": "object", + "properties": { + "UserId": { + "type": "string", + "description": "Gets or sets the playback userId.", + "format": "uuid", + "nullable": true + }, + "MaxStreamingBitrate": { + "type": "integer", + "description": "Gets or sets the max streaming bitrate.", + "format": "int32", + "nullable": true + }, + "StartTimeTicks": { + "type": "integer", + "description": "Gets or sets the start time in ticks.", + "format": "int64", + "nullable": true + }, + "AudioStreamIndex": { + "type": "integer", + "description": "Gets or sets the audio stream index.", + "format": "int32", + "nullable": true + }, + "SubtitleStreamIndex": { + "type": "integer", + "description": "Gets or sets the subtitle stream index.", + "format": "int32", + "nullable": true + }, + "MaxAudioChannels": { + "type": "integer", + "description": "Gets or sets the max audio channels.", + "format": "int32", + "nullable": true + }, + "MediaSourceId": { + "type": "string", + "description": "Gets or sets the media source id.", + "nullable": true + }, + "LiveStreamId": { + "type": "string", + "description": "Gets or sets the live stream id.", + "nullable": true + }, + "DeviceProfile": { + "$ref": "#/components/schemas/DeviceProfile" + }, + "EnableDirectPlay": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to enable direct play.", + "nullable": true + }, + "EnableDirectStream": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to enable direct stream.", + "nullable": true + }, + "EnableTranscoding": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to enable transcoding.", + "nullable": true + }, + "AllowVideoStreamCopy": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to enable video stream copy.", + "nullable": true + }, + "AllowAudioStreamCopy": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to allow audio stream copy.", + "nullable": true + }, + "AutoOpenLiveStream": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to auto open the live stream.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Plabyback info dto." + }, + "OpenLiveStreamDto": { + "type": "object", + "properties": { + "OpenToken": { + "type": "string", + "description": "Gets or sets the open token.", + "nullable": true + }, + "UserId": { + "type": "string", + "description": "Gets or sets the user id.", + "format": "uuid", + "nullable": true + }, + "PlaySessionId": { + "type": "string", + "description": "Gets or sets the play session id.", + "nullable": true + }, + "MaxStreamingBitrate": { + "type": "integer", + "description": "Gets or sets the max streaming bitrate.", + "format": "int32", + "nullable": true + }, + "StartTimeTicks": { + "type": "integer", + "description": "Gets or sets the start time in ticks.", + "format": "int64", + "nullable": true + }, + "AudioStreamIndex": { + "type": "integer", + "description": "Gets or sets the audio stream index.", + "format": "int32", + "nullable": true + }, + "SubtitleStreamIndex": { + "type": "integer", + "description": "Gets or sets the subtitle stream index.", + "format": "int32", + "nullable": true + }, + "MaxAudioChannels": { + "type": "integer", + "description": "Gets or sets the max audio channels.", + "format": "int32", + "nullable": true + }, + "ItemId": { + "type": "string", + "description": "Gets or sets the item id.", + "format": "uuid", + "nullable": true + }, + "EnableDirectPlay": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to enable direct play.", + "nullable": true + }, + "EnableDirectStream": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to enale direct stream.", + "nullable": true + }, + "DeviceProfile": { + "$ref": "#/components/schemas/DeviceProfile" + }, + "DirectPlayProtocols": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaProtocol" + }, + "description": "Gets or sets the device play protocols.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Open live stream dto." + }, + "LiveStreamResponse": { + "type": "object", + "properties": { + "MediaSource": { + "$ref": "#/components/schemas/MediaSourceInfo" + } + }, + "additionalProperties": false + }, + "RecommendationType": { + "enum": [ + "SimilarToRecentlyPlayed", + "SimilarToLikedItem", + "HasDirectorFromRecentlyPlayed", + "HasActorFromRecentlyPlayed", + "HasLikedDirector", + "HasLikedActor" + ], + "type": "string" + }, + "RecommendationDto": { + "type": "object", + "properties": { + "Items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BaseItemDto" + }, + "nullable": true + }, + "RecommendationType": { + "$ref": "#/components/schemas/RecommendationType" + }, + "BaselineItemName": { + "type": "string", + "nullable": true + }, + "CategoryId": { + "type": "string", + "format": "uuid" + } + }, + "additionalProperties": false + }, + "NotificationLevel": { + "enum": [ + "Normal", + "Warning", + "Error" + ], + "type": "string" + }, + "NotificationDto": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "description": "Gets or sets the notification ID. Defaults to an empty string.", + "nullable": true + }, + "UserId": { + "type": "string", + "description": "Gets or sets the notification's user ID. Defaults to an empty string.", + "nullable": true + }, + "Date": { + "type": "string", + "description": "Gets or sets the notification date.", + "format": "date-time" + }, + "IsRead": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the notification has been read. Defaults to false." + }, + "Name": { + "type": "string", + "description": "Gets or sets the notification's name. Defaults to an empty string.", + "nullable": true + }, + "Description": { + "type": "string", + "description": "Gets or sets the notification's description. Defaults to an empty string.", + "nullable": true + }, + "Url": { + "type": "string", + "description": "Gets or sets the notification's URL. Defaults to an empty string.", + "nullable": true + }, + "Level": { + "$ref": "#/components/schemas/NotificationLevel" + } + }, + "additionalProperties": false, + "description": "The notification DTO." + }, + "NotificationResultDto": { + "type": "object", + "properties": { + "Notifications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationDto" + }, + "description": "Gets or sets the current page of notifications.", + "nullable": true + }, + "TotalRecordCount": { + "type": "integer", + "description": "Gets or sets the total number of notifications.", + "format": "int32" + } + }, + "additionalProperties": false, + "description": "A list of notifications with the total record count for pagination." + }, + "NotificationsSummaryDto": { + "type": "object", + "properties": { + "UnreadCount": { + "type": "integer", + "description": "Gets or sets the number of unread notifications.", + "format": "int32" + }, + "MaxUnreadNotificationLevel": { + "$ref": "#/components/schemas/NotificationLevel" + } + }, + "additionalProperties": false, + "description": "The notification summary DTO." + }, + "NotificationTypeInfo": { + "type": "object", + "properties": { + "Type": { + "type": "string", + "nullable": true + }, + "Name": { + "type": "string", + "nullable": true + }, + "Enabled": { + "type": "boolean" + }, + "Category": { + "type": "string", + "nullable": true + }, + "IsBasedOnUserEvent": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "VersionInfo": { + "type": "object", + "properties": { + "version": { + "type": "string", + "description": "Gets or sets the version.", + "nullable": true + }, + "VersionNumber": { + "$ref": "#/components/schemas/Version" + }, + "changelog": { + "type": "string", + "description": "Gets or sets the changelog for this version.", + "nullable": true + }, + "targetAbi": { + "type": "string", + "description": "Gets or sets the ABI that this version was built against.", + "nullable": true + }, + "sourceUrl": { + "type": "string", + "description": "Gets or sets the source URL.", + "nullable": true + }, + "checksum": { + "type": "string", + "description": "Gets or sets a checksum for the binary.", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "Gets or sets a timestamp of when the binary was built.", + "nullable": true + }, + "repositoryName": { + "type": "string", + "description": "Gets or sets the repository name.", + "nullable": true + }, + "repositoryUrl": { + "type": "string", + "description": "Gets or sets the repository url.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Defines the MediaBrowser.Model.Updates.VersionInfo class." + }, + "PackageInfo": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "description": { + "type": "string", + "description": "Gets or sets a long description of the plugin containing features or helpful explanations.", + "nullable": true + }, + "overview": { + "type": "string", + "description": "Gets or sets a short overview of what the plugin does.", + "nullable": true + }, + "owner": { + "type": "string", + "description": "Gets or sets the owner.", + "nullable": true + }, + "category": { + "type": "string", + "description": "Gets or sets the category.", + "nullable": true + }, + "guid": { + "type": "string", + "description": "Gets or sets the guid of the assembly associated with this plugin.\r\nThis is used to identify the proper item for automatic updates.", + "nullable": true + }, + "versions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VersionInfo" + }, + "description": "Gets or sets the versions.", + "nullable": true + }, + "imageUrl": { + "type": "string", + "description": "Gets or sets the image url for the package.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class PackageInfo." + }, + "CreatePlaylistDto": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name of the new playlist.", + "nullable": true + }, + "Ids": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Gets or sets item ids to add to the playlist.", + "nullable": true + }, + "UserId": { + "type": "string", + "description": "Gets or sets the user id.", + "format": "uuid", + "nullable": true + }, + "MediaType": { + "type": "string", + "description": "Gets or sets the media type.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Create new playlist dto." + }, + "PlaylistCreationResult": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "PlayMethod": { + "enum": [ + "Transcode", + "DirectStream", + "DirectPlay" + ], + "type": "string" + }, + "RepeatMode": { + "enum": [ + "RepeatNone", + "RepeatAll", + "RepeatOne" + ], + "type": "string" + }, + "QueueItem": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "format": "uuid" + }, + "PlaylistItemId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "PlaybackStartInfo": { + "type": "object", + "properties": { + "CanSeek": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance can seek." + }, + "Item": { + "$ref": "#/components/schemas/BaseItemDto" + }, + "ItemId": { + "type": "string", + "description": "Gets or sets the item identifier.", + "format": "uuid" + }, + "SessionId": { + "type": "string", + "description": "Gets or sets the session id.", + "nullable": true + }, + "MediaSourceId": { + "type": "string", + "description": "Gets or sets the media version identifier.", + "nullable": true + }, + "AudioStreamIndex": { + "type": "integer", + "description": "Gets or sets the index of the audio stream.", + "format": "int32", + "nullable": true + }, + "SubtitleStreamIndex": { + "type": "integer", + "description": "Gets or sets the index of the subtitle stream.", + "format": "int32", + "nullable": true + }, + "IsPaused": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is paused." + }, + "IsMuted": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is muted." + }, + "PositionTicks": { + "type": "integer", + "description": "Gets or sets the position ticks.", + "format": "int64", + "nullable": true + }, + "PlaybackStartTimeTicks": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "VolumeLevel": { + "type": "integer", + "description": "Gets or sets the volume level.", + "format": "int32", + "nullable": true + }, + "Brightness": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "AspectRatio": { + "type": "string", + "nullable": true + }, + "PlayMethod": { + "$ref": "#/components/schemas/PlayMethod" + }, + "LiveStreamId": { + "type": "string", + "description": "Gets or sets the live stream identifier.", + "nullable": true + }, + "PlaySessionId": { + "type": "string", + "description": "Gets or sets the play session identifier.", + "nullable": true + }, + "RepeatMode": { + "$ref": "#/components/schemas/RepeatMode" + }, + "NowPlayingQueue": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueItem" + }, + "nullable": true + }, + "PlaylistItemId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class PlaybackStartInfo." + }, + "PlaybackProgressInfo": { + "type": "object", + "properties": { + "CanSeek": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance can seek." + }, + "Item": { + "$ref": "#/components/schemas/BaseItemDto" + }, + "ItemId": { + "type": "string", + "description": "Gets or sets the item identifier.", + "format": "uuid" + }, + "SessionId": { + "type": "string", + "description": "Gets or sets the session id.", + "nullable": true + }, + "MediaSourceId": { + "type": "string", + "description": "Gets or sets the media version identifier.", + "nullable": true + }, + "AudioStreamIndex": { + "type": "integer", + "description": "Gets or sets the index of the audio stream.", + "format": "int32", + "nullable": true + }, + "SubtitleStreamIndex": { + "type": "integer", + "description": "Gets or sets the index of the subtitle stream.", + "format": "int32", + "nullable": true + }, + "IsPaused": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is paused." + }, + "IsMuted": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is muted." + }, + "PositionTicks": { + "type": "integer", + "description": "Gets or sets the position ticks.", + "format": "int64", + "nullable": true + }, + "PlaybackStartTimeTicks": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "VolumeLevel": { + "type": "integer", + "description": "Gets or sets the volume level.", + "format": "int32", + "nullable": true + }, + "Brightness": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "AspectRatio": { + "type": "string", + "nullable": true + }, + "PlayMethod": { + "$ref": "#/components/schemas/PlayMethod" + }, + "LiveStreamId": { + "type": "string", + "description": "Gets or sets the live stream identifier.", + "nullable": true + }, + "PlaySessionId": { + "type": "string", + "description": "Gets or sets the play session identifier.", + "nullable": true + }, + "RepeatMode": { + "$ref": "#/components/schemas/RepeatMode" + }, + "NowPlayingQueue": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueItem" + }, + "nullable": true + }, + "PlaylistItemId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class PlaybackProgressInfo." + }, + "PlaybackStopInfo": { + "type": "object", + "properties": { + "Item": { + "$ref": "#/components/schemas/BaseItemDto" + }, + "ItemId": { + "type": "string", + "description": "Gets or sets the item identifier.", + "format": "uuid" + }, + "SessionId": { + "type": "string", + "description": "Gets or sets the session id.", + "nullable": true + }, + "MediaSourceId": { + "type": "string", + "description": "Gets or sets the media version identifier.", + "nullable": true + }, + "PositionTicks": { + "type": "integer", + "description": "Gets or sets the position ticks.", + "format": "int64", + "nullable": true + }, + "LiveStreamId": { + "type": "string", + "description": "Gets or sets the live stream identifier.", + "nullable": true + }, + "PlaySessionId": { + "type": "string", + "description": "Gets or sets the play session identifier.", + "nullable": true + }, + "Failed": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this MediaBrowser.Model.Session.PlaybackStopInfo is failed." + }, + "NextMediaType": { + "type": "string", + "nullable": true + }, + "PlaylistItemId": { + "type": "string", + "nullable": true + }, + "NowPlayingQueue": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueItem" + }, + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class PlaybackStopInfo." + }, + "PluginStatus": { + "enum": [ + "Active", + "Restart", + "Deleted", + "Superceded", + "Malfunctioned", + "NotSupported", + "Disabled" + ], + "type": "string", + "description": "Plugin load status." + }, + "PluginInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Version": { + "$ref": "#/components/schemas/Version" + }, + "ConfigurationFileName": { + "type": "string", + "description": "Gets or sets the name of the configuration file.", + "nullable": true + }, + "Description": { + "type": "string", + "description": "Gets or sets the description.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the unique id.", + "format": "uuid" + }, + "CanUninstall": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the plugin can be uninstalled." + }, + "HasImage": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this plugin has a valid image." + }, + "Status": { + "$ref": "#/components/schemas/PluginStatus" + } + }, + "additionalProperties": false, + "description": "This is a serializable stub class that is used by the api to provide information about installed plugins." + }, + "BasePluginConfiguration": { + "type": "object", + "additionalProperties": false, + "description": "Class BasePluginConfiguration." + }, + "PluginSecurityInfo": { + "type": "object", + "properties": { + "SupporterKey": { + "type": "string", + "description": "Gets or sets the supporter key.", + "nullable": true + }, + "IsMbSupporter": { + "type": "boolean", + "description": "Gets or sets a value indicating whether is mb supporter." + } + }, + "additionalProperties": false, + "description": "Plugin security info." + }, + "QuickConnectState": { + "enum": [ + "Unavailable", + "Available", + "Active" + ], + "type": "string", + "description": "Quick connect state." + }, + "QuickConnectResult": { + "type": "object", + "properties": { + "Authenticated": { + "type": "boolean", + "description": "Gets a value indicating whether this request is authorized.", + "readOnly": true + }, + "Secret": { + "type": "string", + "description": "Gets or sets the secret value used to uniquely identify this request. Can be used to retrieve authentication information.", + "nullable": true + }, + "Code": { + "type": "string", + "description": "Gets or sets the user facing code used so the user can quickly differentiate this request from others.", + "nullable": true + }, + "Authentication": { + "type": "string", + "description": "Gets or sets the private access token.", + "nullable": true + }, + "Error": { + "type": "string", + "description": "Gets or sets an error message.", + "nullable": true + }, + "DateAdded": { + "type": "string", + "description": "Gets or sets the DateTime that this request was created.", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Stores the result of an incoming quick connect request." + }, + "RatingType": { + "enum": [ + "Score", + "Likes" + ], + "type": "string" + }, + "RemoteImageInfo": { + "type": "object", + "properties": { + "ProviderName": { + "type": "string", + "description": "Gets or sets the name of the provider.", + "nullable": true + }, + "Url": { + "type": "string", + "description": "Gets or sets the URL.", + "nullable": true + }, + "ThumbnailUrl": { + "type": "string", + "description": "Gets a url used for previewing a smaller version.", + "nullable": true + }, + "Height": { + "type": "integer", + "description": "Gets or sets the height.", + "format": "int32", + "nullable": true + }, + "Width": { + "type": "integer", + "description": "Gets or sets the width.", + "format": "int32", + "nullable": true + }, + "CommunityRating": { + "type": "number", + "description": "Gets or sets the community rating.", + "format": "double", + "nullable": true + }, + "VoteCount": { + "type": "integer", + "description": "Gets or sets the vote count.", + "format": "int32", + "nullable": true + }, + "Language": { + "type": "string", + "description": "Gets or sets the language.", + "nullable": true + }, + "Type": { + "$ref": "#/components/schemas/ImageType" + }, + "RatingType": { + "$ref": "#/components/schemas/RatingType" + } + }, + "additionalProperties": false, + "description": "Class RemoteImageInfo." + }, + "RemoteImageResult": { + "type": "object", + "properties": { + "Images": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteImageInfo" + }, + "description": "Gets or sets the images.", + "nullable": true + }, + "TotalRecordCount": { + "type": "integer", + "description": "Gets or sets the total record count.", + "format": "int32" + }, + "Providers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the providers.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class RemoteImageResult." + }, + "ImageProviderInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets the name.", + "nullable": true, + "readOnly": true + }, + "SupportedImages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImageType" + }, + "description": "Gets the supported image types.", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false, + "description": "Class ImageProviderInfo." + }, + "TaskState": { + "enum": [ + "Idle", + "Cancelling", + "Running" + ], + "type": "string", + "description": "Enum TaskState." + }, + "TaskCompletionStatus": { + "enum": [ + "Completed", + "Failed", + "Cancelled", + "Aborted" + ], + "type": "string", + "description": "Enum TaskCompletionStatus." + }, + "TaskResult": { + "type": "object", + "properties": { + "StartTimeUtc": { + "type": "string", + "description": "Gets or sets the start time UTC.", + "format": "date-time" + }, + "EndTimeUtc": { + "type": "string", + "description": "Gets or sets the end time UTC.", + "format": "date-time" + }, + "Status": { + "$ref": "#/components/schemas/TaskCompletionStatus" + }, + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Key": { + "type": "string", + "description": "Gets or sets the key.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the id.", + "nullable": true + }, + "ErrorMessage": { + "type": "string", + "description": "Gets or sets the error message.", + "nullable": true + }, + "LongErrorMessage": { + "type": "string", + "description": "Gets or sets the long error message.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class TaskExecutionInfo." + }, + "TaskTriggerInfo": { + "type": "object", + "properties": { + "Type": { + "type": "string", + "description": "Gets or sets the type.", + "nullable": true + }, + "TimeOfDayTicks": { + "type": "integer", + "description": "Gets or sets the time of day.", + "format": "int64", + "nullable": true + }, + "IntervalTicks": { + "type": "integer", + "description": "Gets or sets the interval.", + "format": "int64", + "nullable": true + }, + "DayOfWeek": { + "$ref": "#/components/schemas/DayOfWeek" + }, + "MaxRuntimeTicks": { + "type": "integer", + "description": "Gets or sets the maximum runtime ticks.", + "format": "int64", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class TaskTriggerInfo." + }, + "TaskInfo": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "State": { + "$ref": "#/components/schemas/TaskState" + }, + "CurrentProgressPercentage": { + "type": "number", + "description": "Gets or sets the progress.", + "format": "double", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the id.", + "nullable": true + }, + "LastExecutionResult": { + "$ref": "#/components/schemas/TaskResult" + }, + "Triggers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskTriggerInfo" + }, + "description": "Gets or sets the triggers.", + "nullable": true + }, + "Description": { + "type": "string", + "description": "Gets or sets the description.", + "nullable": true + }, + "Category": { + "type": "string", + "description": "Gets or sets the category.", + "nullable": true + }, + "IsHidden": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is hidden." + }, + "Key": { + "type": "string", + "description": "Gets or sets the key.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class TaskInfo." + }, + "SearchHint": { + "type": "object", + "properties": { + "ItemId": { + "type": "string", + "description": "Gets or sets the item id.", + "format": "uuid" + }, + "Id": { + "type": "string", + "format": "uuid" + }, + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "MatchedTerm": { + "type": "string", + "description": "Gets or sets the matched term.", + "nullable": true + }, + "IndexNumber": { + "type": "integer", + "description": "Gets or sets the index number.", + "format": "int32", + "nullable": true + }, + "ProductionYear": { + "type": "integer", + "description": "Gets or sets the production year.", + "format": "int32", + "nullable": true + }, + "ParentIndexNumber": { + "type": "integer", + "description": "Gets or sets the parent index number.", + "format": "int32", + "nullable": true + }, + "PrimaryImageTag": { + "type": "string", + "description": "Gets or sets the image tag.", + "nullable": true + }, + "ThumbImageTag": { + "type": "string", + "description": "Gets or sets the thumb image tag.", + "nullable": true + }, + "ThumbImageItemId": { + "type": "string", + "description": "Gets or sets the thumb image item identifier.", + "nullable": true + }, + "BackdropImageTag": { + "type": "string", + "description": "Gets or sets the backdrop image tag.", + "nullable": true + }, + "BackdropImageItemId": { + "type": "string", + "description": "Gets or sets the backdrop image item identifier.", + "nullable": true + }, + "Type": { + "type": "string", + "description": "Gets or sets the type.", + "nullable": true + }, + "IsFolder": { + "type": "boolean", + "nullable": true + }, + "RunTimeTicks": { + "type": "integer", + "description": "Gets or sets the run time ticks.", + "format": "int64", + "nullable": true + }, + "MediaType": { + "type": "string", + "description": "Gets or sets the type of the media.", + "nullable": true + }, + "StartDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "EndDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "Series": { + "type": "string", + "description": "Gets or sets the series.", + "nullable": true + }, + "Status": { + "type": "string", + "nullable": true + }, + "Album": { + "type": "string", + "description": "Gets or sets the album.", + "nullable": true + }, + "AlbumId": { + "type": "string", + "format": "uuid" + }, + "AlbumArtist": { + "type": "string", + "description": "Gets or sets the album artist.", + "nullable": true + }, + "Artists": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the artists.", + "nullable": true + }, + "SongCount": { + "type": "integer", + "description": "Gets or sets the song count.", + "format": "int32", + "nullable": true + }, + "EpisodeCount": { + "type": "integer", + "description": "Gets or sets the episode count.", + "format": "int32", + "nullable": true + }, + "ChannelId": { + "type": "string", + "description": "Gets or sets the channel identifier.", + "format": "uuid" + }, + "ChannelName": { + "type": "string", + "description": "Gets or sets the name of the channel.", + "nullable": true + }, + "PrimaryImageAspectRatio": { + "type": "number", + "description": "Gets or sets the primary image aspect ratio.", + "format": "double", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class SearchHintResult." + }, + "SearchHintResult": { + "type": "object", + "properties": { + "SearchHints": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchHint" + }, + "description": "Gets or sets the search hints.", + "nullable": true + }, + "TotalRecordCount": { + "type": "integer", + "description": "Gets or sets the total record count.", + "format": "int32" + } + }, + "additionalProperties": false, + "description": "Class SearchHintResult." + }, + "PlayerStateInfo": { + "type": "object", + "properties": { + "PositionTicks": { + "type": "integer", + "description": "Gets or sets the now playing position ticks.", + "format": "int64", + "nullable": true + }, + "CanSeek": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance can seek." + }, + "IsPaused": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is paused." + }, + "IsMuted": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is muted." + }, + "VolumeLevel": { + "type": "integer", + "description": "Gets or sets the volume level.", + "format": "int32", + "nullable": true + }, + "AudioStreamIndex": { + "type": "integer", + "description": "Gets or sets the index of the now playing audio stream.", + "format": "int32", + "nullable": true + }, + "SubtitleStreamIndex": { + "type": "integer", + "description": "Gets or sets the index of the now playing subtitle stream.", + "format": "int32", + "nullable": true + }, + "MediaSourceId": { + "type": "string", + "description": "Gets or sets the now playing media version identifier.", + "nullable": true + }, + "PlayMethod": { + "$ref": "#/components/schemas/PlayMethod" + }, + "RepeatMode": { + "$ref": "#/components/schemas/RepeatMode" + } + }, + "additionalProperties": false + }, + "SessionUserInfo": { + "type": "object", + "properties": { + "UserId": { + "type": "string", + "description": "Gets or sets the user identifier.", + "format": "uuid" + }, + "UserName": { + "type": "string", + "description": "Gets or sets the name of the user.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class SessionUserInfo." + }, + "BaseItem": { + "type": "object", + "properties": { + "Size": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "Container": { + "type": "string", + "nullable": true + }, + "DateLastSaved": { + "type": "string", + "format": "date-time" + }, + "RemoteTrailers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaUrl" + }, + "description": "Gets or sets the remote trailers.", + "nullable": true + }, + "IsHD": { + "type": "boolean", + "readOnly": true + }, + "IsShortcut": { + "type": "boolean" + }, + "ShortcutPath": { + "type": "string", + "nullable": true + }, + "Width": { + "type": "integer", + "format": "int32" + }, + "Height": { + "type": "integer", + "format": "int32" + }, + "ExtraIds": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "nullable": true + }, + "SupportsExternalTransfer": { + "type": "boolean", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "Class BaseItem." + }, + "TranscodeReason": { + "enum": [ + "ContainerNotSupported", + "VideoCodecNotSupported", + "AudioCodecNotSupported", + "ContainerBitrateExceedsLimit", + "AudioBitrateNotSupported", + "AudioChannelsNotSupported", + "VideoResolutionNotSupported", + "UnknownVideoStreamInfo", + "UnknownAudioStreamInfo", + "AudioProfileNotSupported", + "AudioSampleRateNotSupported", + "AnamorphicVideoNotSupported", + "InterlacedVideoNotSupported", + "SecondaryAudioNotSupported", + "RefFramesNotSupported", + "VideoBitDepthNotSupported", + "VideoBitrateNotSupported", + "VideoFramerateNotSupported", + "VideoLevelNotSupported", + "VideoProfileNotSupported", + "AudioBitDepthNotSupported", + "SubtitleCodecNotSupported", + "DirectPlayError" + ], + "type": "string" + }, + "TranscodingInfo": { + "type": "object", + "properties": { + "AudioCodec": { + "type": "string", + "nullable": true + }, + "VideoCodec": { + "type": "string", + "nullable": true + }, + "Container": { + "type": "string", + "nullable": true + }, + "IsVideoDirect": { + "type": "boolean" + }, + "IsAudioDirect": { + "type": "boolean" + }, + "Bitrate": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "Framerate": { + "type": "number", + "format": "float", + "nullable": true + }, + "CompletionPercentage": { + "type": "number", + "format": "double", + "nullable": true + }, + "Width": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "Height": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "AudioChannels": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "TranscodeReasons": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TranscodeReason" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "SessionInfo": { + "type": "object", + "properties": { + "PlayState": { + "$ref": "#/components/schemas/PlayerStateInfo" + }, + "AdditionalUsers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SessionUserInfo" + }, + "nullable": true + }, + "Capabilities": { + "$ref": "#/components/schemas/ClientCapabilities" + }, + "RemoteEndPoint": { + "type": "string", + "description": "Gets or sets the remote end point.", + "nullable": true + }, + "PlayableMediaTypes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the playable media types.", + "nullable": true, + "readOnly": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the id.", + "nullable": true + }, + "UserId": { + "type": "string", + "description": "Gets or sets the user id.", + "format": "uuid" + }, + "UserName": { + "type": "string", + "description": "Gets or sets the username.", + "nullable": true + }, + "Client": { + "type": "string", + "description": "Gets or sets the type of the client.", + "nullable": true + }, + "LastActivityDate": { + "type": "string", + "description": "Gets or sets the last activity date.", + "format": "date-time" + }, + "LastPlaybackCheckIn": { + "type": "string", + "description": "Gets or sets the last playback check in.", + "format": "date-time" + }, + "DeviceName": { + "type": "string", + "description": "Gets or sets the name of the device.", + "nullable": true + }, + "DeviceType": { + "type": "string", + "description": "Gets or sets the type of the device.", + "nullable": true + }, + "NowPlayingItem": { + "$ref": "#/components/schemas/BaseItemDto" + }, + "FullNowPlayingItem": { + "$ref": "#/components/schemas/BaseItem" + }, + "NowViewingItem": { + "$ref": "#/components/schemas/BaseItemDto" + }, + "DeviceId": { + "type": "string", + "description": "Gets or sets the device id.", + "nullable": true + }, + "ApplicationVersion": { + "type": "string", + "description": "Gets or sets the application version.", + "nullable": true + }, + "TranscodingInfo": { + "$ref": "#/components/schemas/TranscodingInfo" + }, + "IsActive": { + "type": "boolean", + "description": "Gets a value indicating whether this instance is active.", + "readOnly": true + }, + "SupportsMediaControl": { + "type": "boolean", + "readOnly": true + }, + "SupportsRemoteControl": { + "type": "boolean", + "readOnly": true + }, + "NowPlayingQueue": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueItem" + }, + "nullable": true + }, + "HasCustomDeviceName": { + "type": "boolean" + }, + "PlaylistItemId": { + "type": "string", + "nullable": true + }, + "ServerId": { + "type": "string", + "nullable": true + }, + "UserPrimaryImageTag": { + "type": "string", + "nullable": true + }, + "SupportedCommands": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GeneralCommandType" + }, + "description": "Gets or sets the supported commands.", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false, + "description": "Class SessionInfo." + }, + "GeneralCommand": { + "type": "object", + "properties": { + "Name": { + "$ref": "#/components/schemas/GeneralCommandType" + }, + "ControllingUserId": { + "type": "string", + "format": "uuid" + }, + "Arguments": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "PlayCommand": { + "enum": [ + "PlayNow", + "PlayNext", + "PlayLast", + "PlayInstantMix", + "PlayShuffle" + ], + "type": "string", + "description": "Enum PlayCommand." + }, + "PlaystateCommand": { + "enum": [ + "Stop", + "Pause", + "Unpause", + "NextTrack", + "PreviousTrack", + "Seek", + "Rewind", + "FastForward", + "PlayPause" + ], + "type": "string", + "description": "Enum PlaystateCommand." + }, + "ClientCapabilitiesDto": { + "type": "object", + "properties": { + "PlayableMediaTypes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the list of playable media types.", + "nullable": true + }, + "SupportedCommands": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GeneralCommandType" + }, + "description": "Gets or sets the list of supported commands.", + "nullable": true + }, + "SupportsMediaControl": { + "type": "boolean", + "description": "Gets or sets a value indicating whether session supports media control." + }, + "SupportsContentUploading": { + "type": "boolean", + "description": "Gets or sets a value indicating whether session supports content uploading." + }, + "MessageCallbackUrl": { + "type": "string", + "description": "Gets or sets the message callback url.", + "nullable": true + }, + "SupportsPersistentIdentifier": { + "type": "boolean", + "description": "Gets or sets a value indicating whether session supports a persistent identifier." + }, + "SupportsSync": { + "type": "boolean", + "description": "Gets or sets a value indicating whether session supports sync." + }, + "DeviceProfile": { + "$ref": "#/components/schemas/DeviceProfile" + }, + "AppStoreUrl": { + "type": "string", + "description": "Gets or sets the app store url.", + "nullable": true + }, + "IconUrl": { + "type": "string", + "description": "Gets or sets the icon url.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Client capabilities dto." + }, + "StartupConfigurationDto": { + "type": "object", + "properties": { + "UICulture": { + "type": "string", + "description": "Gets or sets UI language culture.", + "nullable": true + }, + "MetadataCountryCode": { + "type": "string", + "description": "Gets or sets the metadata country code.", + "nullable": true + }, + "PreferredMetadataLanguage": { + "type": "string", + "description": "Gets or sets the preferred language for the metadata.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "The startup configuration DTO." + }, + "StartupUserDto": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the username.", + "nullable": true + }, + "Password": { + "type": "string", + "description": "Gets or sets the user's password.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "The startup user DTO." + }, + "StartupRemoteAccessDto": { + "required": [ + "EnableAutomaticPortMapping", + "EnableRemoteAccess" + ], + "type": "object", + "properties": { + "EnableRemoteAccess": { + "type": "boolean", + "description": "Gets or sets a value indicating whether enable remote access." + }, + "EnableAutomaticPortMapping": { + "type": "boolean", + "description": "Gets or sets a value indicating whether enable automatic port mapping." + } + }, + "additionalProperties": false, + "description": "Startup remote access dto." + }, + "FontFile": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Size": { + "type": "integer", + "description": "Gets or sets the size.", + "format": "int64" + }, + "DateCreated": { + "type": "string", + "description": "Gets or sets the date created.", + "format": "date-time" + }, + "DateModified": { + "type": "string", + "description": "Gets or sets the date modified.", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "Class FontFile." + }, + "RemoteSubtitleInfo": { + "type": "object", + "properties": { + "ThreeLetterISOLanguageName": { + "type": "string", + "nullable": true + }, + "Id": { + "type": "string", + "nullable": true + }, + "ProviderName": { + "type": "string", + "nullable": true + }, + "Name": { + "type": "string", + "nullable": true + }, + "Format": { + "type": "string", + "nullable": true + }, + "Author": { + "type": "string", + "nullable": true + }, + "Comment": { + "type": "string", + "nullable": true + }, + "DateCreated": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "CommunityRating": { + "type": "number", + "format": "float", + "nullable": true + }, + "DownloadCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "IsHashMatch": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "UploadSubtitleDto": { + "required": [ + "Data", + "Format", + "IsForced", + "Language" + ], + "type": "object", + "properties": { + "Language": { + "type": "string", + "description": "Gets or sets the subtitle language." + }, + "Format": { + "type": "string", + "description": "Gets or sets the subtitle format." + }, + "IsForced": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the subtitle is forced." + }, + "Data": { + "type": "string", + "description": "Gets or sets the subtitle data." + } + }, + "additionalProperties": false, + "description": "Upload subtitles dto." + }, + "BufferRequestDto": { + "type": "object", + "properties": { + "When": { + "type": "string", + "description": "Gets or sets when the request has been made by the client.", + "format": "date-time" + }, + "PositionTicks": { + "type": "integer", + "description": "Gets or sets the position ticks.", + "format": "int64" + }, + "IsPlaying": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the client playback is unpaused." + }, + "PlaylistItemId": { + "type": "string", + "description": "Gets or sets the playlist item identifier of the playing item.", + "format": "uuid" + } + }, + "additionalProperties": false, + "description": "Class BufferRequestDto." + }, + "JoinGroupRequestDto": { + "type": "object", + "properties": { + "GroupId": { + "type": "string", + "description": "Gets or sets the group identifier.", + "format": "uuid" + } + }, + "additionalProperties": false, + "description": "Class JoinGroupRequestDto." + }, + "GroupStateType": { + "enum": [ + "Idle", + "Waiting", + "Paused", + "Playing" + ], + "type": "string", + "description": "Enum GroupState." + }, + "GroupInfoDto": { + "type": "object", + "properties": { + "GroupId": { + "type": "string", + "description": "Gets the group identifier.", + "format": "uuid", + "readOnly": true + }, + "GroupName": { + "type": "string", + "description": "Gets the group name.", + "nullable": true, + "readOnly": true + }, + "State": { + "$ref": "#/components/schemas/GroupStateType" + }, + "Participants": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets the participants.", + "nullable": true, + "readOnly": true + }, + "LastUpdatedAt": { + "type": "string", + "description": "Gets the date when this DTO has been created.", + "format": "date-time", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "Class GroupInfoDto." + }, + "MovePlaylistItemRequestDto": { + "type": "object", + "properties": { + "PlaylistItemId": { + "type": "string", + "description": "Gets or sets the playlist identifier of the item.", + "format": "uuid" + }, + "NewIndex": { + "type": "integer", + "description": "Gets or sets the new position.", + "format": "int32" + } + }, + "additionalProperties": false, + "description": "Class MovePlaylistItemRequestDto." + }, + "NewGroupRequestDto": { + "type": "object", + "properties": { + "GroupName": { + "type": "string", + "description": "Gets or sets the group name.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class NewGroupRequestDto." + }, + "NextItemRequestDto": { + "type": "object", + "properties": { + "PlaylistItemId": { + "type": "string", + "description": "Gets or sets the playing item identifier.", + "format": "uuid" + } + }, + "additionalProperties": false, + "description": "Class NextItemRequestDto." + }, + "PingRequestDto": { + "type": "object", + "properties": { + "Ping": { + "type": "integer", + "description": "Gets or sets the ping time.", + "format": "int64" + } + }, + "additionalProperties": false, + "description": "Class PingRequestDto." + }, + "PreviousItemRequestDto": { + "type": "object", + "properties": { + "PlaylistItemId": { + "type": "string", + "description": "Gets or sets the playing item identifier.", + "format": "uuid" + } + }, + "additionalProperties": false, + "description": "Class PreviousItemRequestDto." + }, + "GroupQueueMode": { + "enum": [ + "Queue", + "QueueNext" + ], + "type": "string", + "description": "Enum GroupQueueMode." + }, + "QueueRequestDto": { + "type": "object", + "properties": { + "ItemIds": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Gets or sets the items to enqueue.", + "nullable": true + }, + "Mode": { + "$ref": "#/components/schemas/GroupQueueMode" + } + }, + "additionalProperties": false, + "description": "Class QueueRequestDto." + }, + "ReadyRequestDto": { + "type": "object", + "properties": { + "When": { + "type": "string", + "description": "Gets or sets when the request has been made by the client.", + "format": "date-time" + }, + "PositionTicks": { + "type": "integer", + "description": "Gets or sets the position ticks.", + "format": "int64" + }, + "IsPlaying": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the client playback is unpaused." + }, + "PlaylistItemId": { + "type": "string", + "description": "Gets or sets the playlist item identifier of the playing item.", + "format": "uuid" + } + }, + "additionalProperties": false, + "description": "Class ReadyRequest." + }, + "RemoveFromPlaylistRequestDto": { + "type": "object", + "properties": { + "PlaylistItemIds": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Gets or sets the playlist identifiers ot the items.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class RemoveFromPlaylistRequestDto." + }, + "SeekRequestDto": { + "type": "object", + "properties": { + "PositionTicks": { + "type": "integer", + "description": "Gets or sets the position ticks.", + "format": "int64" + } + }, + "additionalProperties": false, + "description": "Class SeekRequestDto." + }, + "IgnoreWaitRequestDto": { + "type": "object", + "properties": { + "IgnoreWait": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the client should be ignored." + } + }, + "additionalProperties": false, + "description": "Class IgnoreWaitRequestDto." + }, + "PlayRequestDto": { + "type": "object", + "properties": { + "PlayingQueue": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Gets or sets the playing queue.", + "nullable": true + }, + "PlayingItemPosition": { + "type": "integer", + "description": "Gets or sets the position of the playing item in the queue.", + "format": "int32" + }, + "StartPositionTicks": { + "type": "integer", + "description": "Gets or sets the start position ticks.", + "format": "int64" + } + }, + "additionalProperties": false, + "description": "Class PlayRequestDto." + }, + "SetPlaylistItemRequestDto": { + "type": "object", + "properties": { + "PlaylistItemId": { + "type": "string", + "description": "Gets or sets the playlist identifier of the playing item.", + "format": "uuid" + } + }, + "additionalProperties": false, + "description": "Class SetPlaylistItemRequestDto." + }, + "GroupRepeatMode": { + "enum": [ + "RepeatOne", + "RepeatAll", + "RepeatNone" + ], + "type": "string", + "description": "Enum GroupRepeatMode." + }, + "SetRepeatModeRequestDto": { + "type": "object", + "properties": { + "Mode": { + "$ref": "#/components/schemas/GroupRepeatMode" + } + }, + "additionalProperties": false, + "description": "Class SetRepeatModeRequestDto." + }, + "GroupShuffleMode": { + "enum": [ + "Sorted", + "Shuffle" + ], + "type": "string", + "description": "Enum GroupShuffleMode." + }, + "SetShuffleModeRequestDto": { + "type": "object", + "properties": { + "Mode": { + "$ref": "#/components/schemas/GroupShuffleMode" + } + }, + "additionalProperties": false, + "description": "Class SetShuffleModeRequestDto." + }, + "EndPointInfo": { + "type": "object", + "properties": { + "IsLocal": { + "type": "boolean" + }, + "IsInNetwork": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "InstallationInfo": { + "type": "object", + "properties": { + "Guid": { + "type": "string", + "description": "Gets or sets the Id.", + "format": "uuid" + }, + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "Version": { + "$ref": "#/components/schemas/Version" + }, + "Changelog": { + "type": "string", + "description": "Gets or sets the changelog for this version.", + "nullable": true + }, + "SourceUrl": { + "type": "string", + "description": "Gets or sets the source URL.", + "nullable": true + }, + "Checksum": { + "type": "string", + "description": "Gets or sets a checksum for the binary.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class InstallationInfo." + }, + "FFmpegLocation": { + "enum": [ + "NotFound", + "SetByArgument", + "Custom", + "System" + ], + "type": "string", + "description": "Enum describing the location of the FFmpeg tool." + }, + "Architecture": { + "enum": [ + "X86", + "X64", + "Arm", + "Arm64", + "Wasm" + ], + "type": "string" + }, + "SystemInfo": { + "type": "object", + "properties": { + "LocalAddress": { + "type": "string", + "description": "Gets or sets the local address.", + "nullable": true + }, + "ServerName": { + "type": "string", + "description": "Gets or sets the name of the server.", + "nullable": true + }, + "Version": { + "type": "string", + "description": "Gets or sets the server version.", + "nullable": true + }, + "ProductName": { + "type": "string", + "description": "Gets or sets the product name. This is the AssemblyProduct name.", + "nullable": true + }, + "OperatingSystem": { + "type": "string", + "description": "Gets or sets the operating system.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the id.", + "nullable": true + }, + "StartupWizardCompleted": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the startup wizard is completed.", + "nullable": true + }, + "OperatingSystemDisplayName": { + "type": "string", + "description": "Gets or sets the display name of the operating system.", + "nullable": true + }, + "PackageName": { + "type": "string", + "description": "Get or sets the package name.", + "nullable": true + }, + "HasPendingRestart": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance has pending restart." + }, + "IsShuttingDown": { + "type": "boolean" + }, + "SupportsLibraryMonitor": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [supports library monitor]." + }, + "WebSocketPortNumber": { + "type": "integer", + "description": "Gets or sets the web socket port number.", + "format": "int32" + }, + "CompletedInstallations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InstallationInfo" + }, + "description": "Gets or sets the completed installations.", + "nullable": true + }, + "CanSelfRestart": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance can self restart." + }, + "CanLaunchWebBrowser": { + "type": "boolean" + }, + "ProgramDataPath": { + "type": "string", + "description": "Gets or sets the program data path.", + "nullable": true + }, + "WebPath": { + "type": "string", + "description": "Gets or sets the web UI resources path.", + "nullable": true + }, + "ItemsByNamePath": { + "type": "string", + "description": "Gets or sets the items by name path.", + "nullable": true + }, + "CachePath": { + "type": "string", + "description": "Gets or sets the cache path.", + "nullable": true + }, + "LogPath": { + "type": "string", + "description": "Gets or sets the log path.", + "nullable": true + }, + "InternalMetadataPath": { + "type": "string", + "description": "Gets or sets the internal metadata path.", + "nullable": true + }, + "TranscodingTempPath": { + "type": "string", + "description": "Gets or sets the transcode path.", + "nullable": true + }, + "HasUpdateAvailable": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance has update available." + }, + "EncoderLocation": { + "$ref": "#/components/schemas/FFmpegLocation" + }, + "SystemArchitecture": { + "$ref": "#/components/schemas/Architecture" + } + }, + "additionalProperties": false, + "description": "Class SystemInfo." + }, + "PublicSystemInfo": { + "type": "object", + "properties": { + "LocalAddress": { + "type": "string", + "description": "Gets or sets the local address.", + "nullable": true + }, + "ServerName": { + "type": "string", + "description": "Gets or sets the name of the server.", + "nullable": true + }, + "Version": { + "type": "string", + "description": "Gets or sets the server version.", + "nullable": true + }, + "ProductName": { + "type": "string", + "description": "Gets or sets the product name. This is the AssemblyProduct name.", + "nullable": true + }, + "OperatingSystem": { + "type": "string", + "description": "Gets or sets the operating system.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the id.", + "nullable": true + }, + "StartupWizardCompleted": { + "type": "boolean", + "description": "Gets or sets a value indicating whether the startup wizard is completed.", + "nullable": true + } + }, + "additionalProperties": false + }, + "LogFile": { + "type": "object", + "properties": { + "DateCreated": { + "type": "string", + "description": "Gets or sets the date created.", + "format": "date-time" + }, + "DateModified": { + "type": "string", + "description": "Gets or sets the date modified.", + "format": "date-time" + }, + "Size": { + "type": "integer", + "description": "Gets or sets the size.", + "format": "int64" + }, + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + } + }, + "additionalProperties": false + }, + "WakeOnLanInfo": { + "type": "object", + "properties": { + "MacAddress": { + "type": "string", + "description": "Gets the MAC address of the device.", + "nullable": true + }, + "Port": { + "type": "integer", + "description": "Gets or sets the wake-on-LAN port.", + "format": "int32" + } + }, + "additionalProperties": false, + "description": "Provides the MAC address and port for wake-on-LAN functionality." + }, + "UtcTimeResponse": { + "type": "object", + "properties": { + "RequestReceptionTime": { + "type": "string", + "description": "Gets the UTC time when request has been received.", + "format": "date-time", + "readOnly": true + }, + "ResponseTransmissionTime": { + "type": "string", + "description": "Gets the UTC time when response has been sent.", + "format": "date-time", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "Class UtcTimeResponse." + }, + "SubtitlePlaybackMode": { + "enum": [ + "Default", + "Always", + "OnlyForced", + "None", + "Smart" + ], + "type": "string", + "description": "An enum representing a subtitle playback mode." + }, + "UserConfiguration": { + "type": "object", + "properties": { + "AudioLanguagePreference": { + "type": "string", + "description": "Gets or sets the audio language preference.", + "nullable": true + }, + "PlayDefaultAudioTrack": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [play default audio track]." + }, + "SubtitleLanguagePreference": { + "type": "string", + "description": "Gets or sets the subtitle language preference.", + "nullable": true + }, + "DisplayMissingEpisodes": { + "type": "boolean" + }, + "GroupedFolders": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "SubtitleMode": { + "$ref": "#/components/schemas/SubtitlePlaybackMode" + }, + "DisplayCollectionsView": { + "type": "boolean" + }, + "EnableLocalPassword": { + "type": "boolean" + }, + "OrderedViews": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "LatestItemsExcludes": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "MyMediaExcludes": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "HidePlayedInLatest": { + "type": "boolean" + }, + "RememberAudioSelections": { + "type": "boolean" + }, + "RememberSubtitleSelections": { + "type": "boolean" + }, + "EnableNextEpisodeAutoPlay": { + "type": "boolean" + } + }, + "additionalProperties": false, + "description": "Class UserConfiguration." + }, + "DynamicDayOfWeek": { + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Everyday", + "Weekday", + "Weekend" + ], + "type": "string", + "description": "An enum that represents a day of the week, weekdays, weekends, or all days." + }, + "AccessSchedule": { + "required": [ + "DayOfWeek", + "EndHour", + "Id", + "StartHour", + "UserId" + ], + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Gets or sets the id of this instance.", + "format": "int32", + "readOnly": true + }, + "UserId": { + "type": "string", + "description": "Gets or sets the id of the associated user.", + "format": "uuid", + "readOnly": true + }, + "DayOfWeek": { + "$ref": "#/components/schemas/DynamicDayOfWeek" + }, + "StartHour": { + "type": "number", + "description": "Gets or sets the start hour.", + "format": "double" + }, + "EndHour": { + "type": "number", + "description": "Gets or sets the end hour.", + "format": "double" + } + }, + "additionalProperties": false, + "description": "An entity representing a user's access schedule." + }, + "UnratedItem": { + "enum": [ + "Movie", + "Trailer", + "Series", + "Music", + "Book", + "LiveTvChannel", + "LiveTvProgram", + "ChannelContent", + "Other" + ], + "type": "string", + "description": "An enum representing an unrated item." + }, + "SyncPlayUserAccessType": { + "enum": [ + "CreateAndJoinGroups", + "JoinGroups", + "None" + ], + "type": "string", + "description": "Enum SyncPlayUserAccessType." + }, + "UserPolicy": { + "type": "object", + "properties": { + "IsAdministrator": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is administrator." + }, + "IsHidden": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is hidden." + }, + "IsDisabled": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance is disabled." + }, + "MaxParentalRating": { + "type": "integer", + "description": "Gets or sets the max parental rating.", + "format": "int32", + "nullable": true + }, + "BlockedTags": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "EnableUserPreferenceAccess": { + "type": "boolean" + }, + "AccessSchedules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AccessSchedule" + }, + "nullable": true + }, + "BlockUnratedItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UnratedItem" + }, + "nullable": true + }, + "EnableRemoteControlOfOtherUsers": { + "type": "boolean" + }, + "EnableSharedDeviceControl": { + "type": "boolean" + }, + "EnableRemoteAccess": { + "type": "boolean" + }, + "EnableLiveTvManagement": { + "type": "boolean" + }, + "EnableLiveTvAccess": { + "type": "boolean" + }, + "EnableMediaPlayback": { + "type": "boolean" + }, + "EnableAudioPlaybackTranscoding": { + "type": "boolean" + }, + "EnableVideoPlaybackTranscoding": { + "type": "boolean" + }, + "EnablePlaybackRemuxing": { + "type": "boolean" + }, + "ForceRemoteSourceTranscoding": { + "type": "boolean" + }, + "EnableContentDeletion": { + "type": "boolean" + }, + "EnableContentDeletionFromFolders": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "EnableContentDownloading": { + "type": "boolean" + }, + "EnableSyncTranscoding": { + "type": "boolean", + "description": "Gets or sets a value indicating whether [enable synchronize]." + }, + "EnableMediaConversion": { + "type": "boolean" + }, + "EnabledDevices": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "EnableAllDevices": { + "type": "boolean" + }, + "EnabledChannels": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "nullable": true + }, + "EnableAllChannels": { + "type": "boolean" + }, + "EnabledFolders": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "nullable": true + }, + "EnableAllFolders": { + "type": "boolean" + }, + "InvalidLoginAttemptCount": { + "type": "integer", + "format": "int32" + }, + "LoginAttemptsBeforeLockout": { + "type": "integer", + "format": "int32" + }, + "MaxActiveSessions": { + "type": "integer", + "format": "int32" + }, + "EnablePublicSharing": { + "type": "boolean" + }, + "BlockedMediaFolders": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "nullable": true + }, + "BlockedChannels": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "nullable": true + }, + "RemoteClientBitrateLimit": { + "type": "integer", + "format": "int32" + }, + "AuthenticationProviderId": { + "type": "string", + "nullable": true + }, + "PasswordResetProviderId": { + "type": "string", + "nullable": true + }, + "SyncPlayAccess": { + "$ref": "#/components/schemas/SyncPlayUserAccessType" + } + }, + "additionalProperties": false + }, + "UserDto": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the name.", + "nullable": true + }, + "ServerId": { + "type": "string", + "description": "Gets or sets the server identifier.", + "nullable": true + }, + "ServerName": { + "type": "string", + "description": "Gets or sets the name of the server.\r\nThis is not used by the server and is for client-side usage only.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets the id.", + "format": "uuid" + }, + "PrimaryImageTag": { + "type": "string", + "description": "Gets or sets the primary image tag.", + "nullable": true + }, + "HasPassword": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance has password." + }, + "HasConfiguredPassword": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance has configured password." + }, + "HasConfiguredEasyPassword": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this instance has configured easy password." + }, + "EnableAutoLogin": { + "type": "boolean", + "description": "Gets or sets whether async login is enabled or not.", + "nullable": true + }, + "LastLoginDate": { + "type": "string", + "description": "Gets or sets the last login date.", + "format": "date-time", + "nullable": true + }, + "LastActivityDate": { + "type": "string", + "description": "Gets or sets the last activity date.", + "format": "date-time", + "nullable": true + }, + "Configuration": { + "$ref": "#/components/schemas/UserConfiguration" + }, + "Policy": { + "$ref": "#/components/schemas/UserPolicy" + }, + "PrimaryImageAspectRatio": { + "type": "number", + "description": "Gets or sets the primary image aspect ratio.", + "format": "double", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class UserDto." + }, + "AuthenticationResult": { + "type": "object", + "properties": { + "User": { + "$ref": "#/components/schemas/UserDto" + }, + "SessionInfo": { + "$ref": "#/components/schemas/SessionInfo" + }, + "AccessToken": { + "type": "string", + "nullable": true + }, + "ServerId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateUserEasyPassword": { + "type": "object", + "properties": { + "NewPassword": { + "type": "string", + "description": "Gets or sets the new sha1-hashed password.", + "nullable": true + }, + "NewPw": { + "type": "string", + "description": "Gets or sets the new password.", + "nullable": true + }, + "ResetPassword": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to reset the password." + } + }, + "additionalProperties": false, + "description": "The update user easy password request body." + }, + "UpdateUserPassword": { + "type": "object", + "properties": { + "CurrentPassword": { + "type": "string", + "description": "Gets or sets the current sha1-hashed password.", + "nullable": true + }, + "CurrentPw": { + "type": "string", + "description": "Gets or sets the current plain text password.", + "nullable": true + }, + "NewPw": { + "type": "string", + "description": "Gets or sets the new plain text password.", + "nullable": true + }, + "ResetPassword": { + "type": "boolean", + "description": "Gets or sets a value indicating whether to reset the password." + } + }, + "additionalProperties": false, + "description": "The update user password request body." + }, + "AuthenticateUserByName": { + "type": "object", + "properties": { + "Username": { + "type": "string", + "description": "Gets or sets the username.", + "nullable": true + }, + "Pw": { + "type": "string", + "description": "Gets or sets the plain text password.", + "nullable": true + }, + "Password": { + "type": "string", + "description": "Gets or sets the sha1-hashed password.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "The authenticate user by name request body." + }, + "QuickConnectDto": { + "required": [ + "Token" + ], + "type": "object", + "properties": { + "Token": { + "type": "string", + "description": "Gets or sets the quick connect token." + } + }, + "additionalProperties": false, + "description": "The quick connect request body." + }, + "ForgotPasswordDto": { + "required": [ + "EnteredUsername" + ], + "type": "object", + "properties": { + "EnteredUsername": { + "type": "string", + "description": "Gets or sets the entered username to have its password reset." + } + }, + "additionalProperties": false, + "description": "Forgot Password request body DTO." + }, + "ForgotPasswordAction": { + "enum": [ + "ContactAdmin", + "PinCode", + "InNetworkRequired" + ], + "type": "string" + }, + "ForgotPasswordResult": { + "type": "object", + "properties": { + "Action": { + "$ref": "#/components/schemas/ForgotPasswordAction" + }, + "PinFile": { + "type": "string", + "description": "Gets or sets the pin file.", + "nullable": true + }, + "PinExpirationDate": { + "type": "string", + "description": "Gets or sets the pin expiration date.", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "PinRedeemResult": { + "type": "object", + "properties": { + "Success": { + "type": "boolean", + "description": "Gets or sets a value indicating whether this MediaBrowser.Model.Users.PinRedeemResult is success." + }, + "UsersReset": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the users reset.", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateUserByName": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets the username.", + "nullable": true + }, + "Password": { + "type": "string", + "description": "Gets or sets the password.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "The create user by name request body." + }, + "SpecialViewOptionDto": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets or sets view option name.", + "nullable": true + }, + "Id": { + "type": "string", + "description": "Gets or sets view option id.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Special view option dto." + }, + "LibraryUpdateInfo": { + "type": "object", + "properties": { + "FoldersAddedTo": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the folders added to.", + "nullable": true + }, + "FoldersRemovedFrom": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the folders removed from.", + "nullable": true + }, + "ItemsAdded": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the items added.", + "nullable": true + }, + "ItemsRemoved": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the items removed.", + "nullable": true + }, + "ItemsUpdated": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets the items updated.", + "nullable": true + }, + "CollectionFolders": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "IsEmpty": { + "type": "boolean", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "Class LibraryUpdateInfo." + }, + "IPlugin": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Gets the name of the plugin.", + "nullable": true, + "readOnly": true + }, + "Description": { + "type": "string", + "description": "Gets the Description.", + "nullable": true, + "readOnly": true + }, + "Id": { + "type": "string", + "description": "Gets the unique id.", + "format": "uuid", + "readOnly": true + }, + "Version": { + "$ref": "#/components/schemas/Version" + }, + "AssemblyFilePath": { + "type": "string", + "description": "Gets the path to the assembly file.", + "nullable": true, + "readOnly": true + }, + "CanUninstall": { + "type": "boolean", + "description": "Gets a value indicating whether the plugin can be uninstalled.", + "readOnly": true + }, + "DataFolderPath": { + "type": "string", + "description": "Gets the full path to the data folder, where the plugin can store any miscellaneous files needed.", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false, + "description": "Defines the MediaBrowser.Common.Plugins.IPlugin." + }, + "PlayRequest": { + "type": "object", + "properties": { + "ItemIds": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "Gets or sets the item ids.", + "nullable": true + }, + "StartPositionTicks": { + "type": "integer", + "description": "Gets or sets the start position ticks that the first item should be played at.", + "format": "int64", + "nullable": true + }, + "PlayCommand": { + "$ref": "#/components/schemas/PlayCommand" + }, + "ControllingUserId": { + "type": "string", + "description": "Gets or sets the controlling user identifier.", + "format": "uuid" + }, + "SubtitleStreamIndex": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "AudioStreamIndex": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "MediaSourceId": { + "type": "string", + "nullable": true + }, + "StartIndex": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Class PlayRequest." + }, + "PlaystateRequest": { + "type": "object", + "properties": { + "Command": { + "$ref": "#/components/schemas/PlaystateCommand" + }, + "SeekPositionTicks": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "ControllingUserId": { + "type": "string", + "description": "Gets or sets the controlling user identifier.", + "nullable": true + } + }, + "additionalProperties": false + }, + "TimerEventInfo": { + "type": "object", + "properties": { + "Id": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "ProgramId": { + "type": "string", + "format": "uuid", + "nullable": true + } + }, + "additionalProperties": false + }, + "SendCommandType": { + "enum": [ + "Unpause", + "Pause", + "Stop", + "Seek" + ], + "type": "string", + "description": "Enum SendCommandType." + }, + "SendCommand": { + "type": "object", + "properties": { + "GroupId": { + "type": "string", + "description": "Gets the group identifier.", + "format": "uuid", + "readOnly": true + }, + "PlaylistItemId": { + "type": "string", + "description": "Gets the playlist identifier of the playing item.", + "format": "uuid", + "readOnly": true + }, + "When": { + "type": "string", + "description": "Gets or sets the UTC time when to execute the command.", + "format": "date-time" + }, + "PositionTicks": { + "type": "integer", + "description": "Gets the position ticks.", + "format": "int64", + "nullable": true, + "readOnly": true + }, + "Command": { + "$ref": "#/components/schemas/SendCommandType" + }, + "EmittedAt": { + "type": "string", + "description": "Gets the UTC time when this command has been emitted.", + "format": "date-time", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "Class SendCommand." + }, + "GroupUpdateType": { + "enum": [ + "UserJoined", + "UserLeft", + "GroupJoined", + "GroupLeft", + "StateUpdate", + "PlayQueue", + "NotInGroup", + "GroupDoesNotExist", + "CreateGroupDenied", + "JoinGroupDenied", + "LibraryAccessDenied" + ], + "type": "string", + "description": "Enum GroupUpdateType." + }, + "ObjectGroupUpdate": { + "type": "object", + "properties": { + "GroupId": { + "type": "string", + "description": "Gets the group identifier.", + "format": "uuid", + "readOnly": true + }, + "Type": { + "$ref": "#/components/schemas/GroupUpdateType" + }, + "Data": { + "description": "Gets the update data.", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false, + "description": "Class GroupUpdate." + } + }, + "securitySchemes": { + "CustomAuthentication": { + "type": "apiKey", + "description": "API key header parameter", + "name": "X-Emby-Authorization", + "in": "header" + } + } + } +} \ No newline at end of file diff --git a/core/openapigenerator.d b/core/openapigenerator.d new file mode 100755 index 0000000..296174d --- /dev/null +++ b/core/openapigenerator.d @@ -0,0 +1,651 @@ +#!/usr/bin/env dub +/+ dub.sdl: + name "openapigenerator.d" + dependency "dyaml" version="~>0.8.0" ++/ + +// The following copyright string also applies to this file. +string COPYRIGHT = q"EOL +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +EOL"; +import std.algorithm; +import std.array; +import std.file : mkdirRecurse; +import std.exception; +import std.path : buildPath, dirSeparator; +import std.range; +import std.string; +import std.stdio; +import std.uni; + +import dyaml; + +static this() { + COPYRIGHT ~= q"EOS +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ +EOS"; +} + +// CODE GENERATION SETTINGS + +// File name of the CMake file this generated should generate. +string CMAKE_INCLUDE_FILE = "GeneratedSources.cmake"; +string CMAKE_VAR_PREFIX = "openapi"; + + +string INCLUDE_PREFIX = "JellyfinQt"; +string SRC_PREFIX = ""; + +string MODEL_FOLDER = "model"; +string SUPPORT_FOLDER = "support"; + +string[string] compatAliases; +string[string] memberAliases; + +static this() { + compatAliases["BaseItemDto"] = "Item"; + compatAliases["UserDto"] = "User"; + compatAliases["UserItemDataDto"] = "UserData"; + + memberAliases["id"] = "jellyfinId"; +} + +CasePolicy OPENAPI_CASING = CasePolicy.PASCAL; +string[] CPP_NAMESPACE = ["Jellyfin", "DTO"]; +CasePolicy CPP_FILENAME_CASING = CasePolicy.LOWER; +CasePolicy CPP_CLASS_CASING = CasePolicy.PASCAL; +CasePolicy CPP_CLASS_MEMBER_CASING = CasePolicy.CAMEL; +// Prefix for class members. +string CPP_CLASS_MEMBER_PREFIX = "m_"; +CasePolicy CPP_CLASS_METHOD_CASING = CasePolicy.CAMEL; +bool GENERATE_PROPERTIES = true; + +string outputDirectory = "generated"; +// END CODE GENERATION SETTINGS. + +// Implementation + +enum CasePolicy { + KEEP, // Do not modify + PASCAL, // PascalCase + CAMEL, // camelCase + SNAKE, // snake_case + SCREAMING_SNAKE, // SCREAMING_SNAKE_CASE + LOWER, // lowercase + UPPER // UPPERCASE +} + +string USAGE = "USAGE: %s "; + +class CLIArgumentException : Exception { + mixin basicExceptionCtors; +} + +int main(string[] args) { + try { + realMain(args); + } catch (CLIArgumentException e) { + stderr.writeln(e.message); + return -1; + } + return 0; +} + +void realMain(string[] args) { + enforce!CLIArgumentException(args.length >= 2, USAGE.format(args[0])); + string schemeFile = args[1]; + + if (args.length >= 3) outputDirectory = args[2]; + mkdirRecurse(buildPath(outputDirectory, "include", INCLUDE_PREFIX, MODEL_FOLDER)); + mkdirRecurse(buildPath(outputDirectory, "src", SRC_PREFIX, MODEL_FOLDER)); + + Node root = Loader.fromFile(schemeFile).load(); + Appender!(string[]) headerFiles, implementationFiles; + foreach(string key, ref const Node scheme; root["components"]["schemas"]) { + generateFileForSchema(key, scheme, root["components"]["schemas"]); + + string fileBase = key.applyCasePolicy(OPENAPI_CASING, CPP_FILENAME_CASING); + headerFiles ~= [buildPath(outputDirectory, "include", INCLUDE_PREFIX, MODEL_FOLDER, fileBase ~ ".h")]; + implementationFiles ~= [buildPath(outputDirectory, "src", SRC_PREFIX, MODEL_FOLDER, fileBase ~ ".cpp")]; + } + foreach(string original, string compatAlias; compatAliases) { + writeCompatAliasFile(original, compatAlias); + } + writeCMakeFile(headerFiles[], implementationFiles[]); +} + +void writeCMakeFile(string[] headerFiles, string[] implementationFiles) { + File output = File(buildPath(outputDirectory, CMAKE_INCLUDE_FILE), "w+"); + output.writeln("cmake_minimum_required(VERSION 3.0)"); + // Peek laziness: wrapping a C++ comment inside a CMake block comment because I couldn't be + // donkey'd to do otherwise. + output.writeln("#[["); + output.writeln(COPYRIGHT); + output.writeln("]]"); + + output.writef("set(%s_HEADERS", CMAKE_VAR_PREFIX); + foreach (headerFile; headerFiles) { + output.writeln(); + output.writef("\t%s", headerFile); + } + output.writeln(")"); + output.writeln(); + + output.writef("set(%s_SOURCES", CMAKE_VAR_PREFIX); + foreach (implementationFile; implementationFiles) { + output.writeln(); + output.writef("\t%s", implementationFile); + } + output.writeln(")"); +} + +void writeCompatAliasFile(ref const string original, ref const string compatAlias) { + string fileBase = compatAlias.applyCasePolicy(OPENAPI_CASING, CPP_FILENAME_CASING); + File headerFile = File(buildPath(outputDirectory, "include", INCLUDE_PREFIX, MODEL_FOLDER, fileBase ~ ".h"), "w+"); + File implementationFile = File(buildPath(outputDirectory, "src", SRC_PREFIX, MODEL_FOLDER, fileBase ~ ".cpp"), "w+"); + + writeHeaderPreamble(headerFile, compatAlias, [], [original]); + headerFile.writefln("using %s = %s;", compatAlias, original); + writeHeaderPostamble(headerFile, compatAlias); +} + +void generateFileForSchema(ref string name, ref const Node scheme, Node allSchemas) { + string fileBase = name.applyCasePolicy(OPENAPI_CASING, CPP_FILENAME_CASING); + File headerFile = File(buildPath(outputDirectory, "include", INCLUDE_PREFIX, MODEL_FOLDER, fileBase ~ ".h"), "w+"); + File implementationFile = File(buildPath(outputDirectory, "src", SRC_PREFIX, MODEL_FOLDER, fileBase ~ ".cpp"), "w+"); + + if ("enum" in scheme) { + string[3] imports = ["QJsonValue", "QObject", "QString"]; + writeHeaderPreamble(headerFile, name, imports); + + Appender!(string[]) values; + foreach (string value; scheme["enum"]) { + values ~= value; + } + writeEnumHeader(headerFile, name, values[]); + writeHeaderPostamble(headerFile, name); + + writeImplementationPreamble(implementationFile, name); + writeEnumImplementation(implementationFile, name); + writeImplementationPostamble(implementationFile, name); + } + if (scheme["type"].as!string == "object" && "properties" in scheme) { + // Determine all imports + Appender!(string[]) systemImports, userImports; + Appender!(string[]) forwardDeclarations; + systemImports ~= ["QObject", "QJsonObject"]; + userImports ~= [buildPath(SUPPORT_FOLDER, "jsonconv.h")]; + + MetaTypeInfo[] usedTypes = collectTypeInfo(scheme["properties"], allSchemas); + bool importedContainers = false; + void collectImports(MetaTypeInfo type) { + if (type.needsSystemImport && !systemImports[].canFind(type.typeName)) { + if (type.isContainer) { + if (!importedContainers) { + systemImports ~= ["QList", "QStringList"]; + importedContainers = true; + } + if (type.containerType !is null) { + collectImports(type.containerType); + } + } else { + systemImports ~= [type.typeName]; + } + } else if (type.needsLocalImport && !userImports[].canFind(type.typeName)) { + if (type.needsPointer) { + forwardDeclarations ~= type.typeName; + } else { + userImports ~= buildPath(MODEL_FOLDER, type.typeName.applyCasePolicy(OPENAPI_CASING, CasePolicy.LOWER) ~ ".h"); + } + } + } + foreach (type; usedTypes) { + collectImports(type); + } + + // Sort them for nicer reading + string[] sortedSystemImports = sort(systemImports[]).array; + string[] sortedUserImports = sort(userImports[]).array; + string[] sortedForwardDeclarations = sort(forwardDeclarations[]).array; + + // Write implementation files + writeHeaderPreamble(headerFile, name, sortedSystemImports, sortedUserImports); + writeObjectHeader(headerFile, name, usedTypes, sortedForwardDeclarations); + writeHeaderPostamble(headerFile, name); + + writeImplementationPreamble(implementationFile, name); + writeObjectImplementation(implementationFile, name, usedTypes); + writeImplementationPostamble(implementationFile, name); + } +} + +// Object +MetaTypeInfo[] collectTypeInfo(Node properties, Node allSchemas) { + + // We need to recurse (sometimes) + MetaTypeInfo getType(string name, Node node) { + MetaTypeInfo info = new MetaTypeInfo(); + info.originalName = name; + info.name = name.applyCasePolicy(OPENAPI_CASING, CPP_CLASS_MEMBER_CASING); + if ("description" in node) { + info.description = node["description"].as!string; + } + + // Special case for QML + info.name = memberAliases.get(info.name.toLower(), info.name); + + if ("$ref" in node) { + string type = node["$ref"].as!string()["#/components/schemas/".length..$]; + if (type in allSchemas&& "type" in allSchemas[type] + && allSchemas[type]["type"].as!string == "object") { + info.needsPointer = true; + } + info.needsLocalImport = true; + info.typeName = type; + return info; + } + if (!("type" in node)) { + info.typeName = "QVariant"; + info.needsSystemImport = true; + return info; + } + switch(node["type"].as!string) { + case "boolean": + info.typeName = "bool"; + return info; + case "string": + if ("format" in node) { + switch(node["format"].as!string) { + case "date-time": + info.typeName= "QDateTime"; + info.needsSystemImport = true; + return info; + default: + break; + } + } + info.typeName= "QString"; + info.needsSystemImport = true; + return info; + case "integer": + if ("format" in node) { + info.typeName= "q" ~ node["format"].as!string; + return info; + } + goto default; + case "number": + if ("format" in node) { + switch(node["format"].as!string) { + case "float": + case "double": + info.typeName = node["format"].as!string; + return info; + default: + break; + } + } + goto default; + case "object": + info.typeName = "QJsonObject"; // This'll do for now + return info; + case "array": + MetaTypeInfo containedType = getType("arrayItem", node["items"]); + info.needsLocalImport = containedType.needsLocalImport; + info.needsSystemImport = true; + info.isContainer = true; + info.containerType = containedType; + if (containedType.typeName == "QString") { + info.typeName = "QStringList"; + } else { + info.typeName = "QList<" ~ containedType.typeNameWithQualifiers ~ ">"; + } + return info; + default: + info.typeName = "UNIMPLEMENTED"; + return info; + } + } + + Appender!(MetaTypeInfo[]) result; + + foreach(const ref string name, const ref Node node; properties) { + result ~= getType(name, node); + } + return result[]; +} + +void writeObjectHeader(File output, string name, MetaTypeInfo[] properties, string[] userImports) { + string className = name.applyCasePolicy(OPENAPI_CASING, CPP_CLASS_CASING); + foreach (userClass; userImports) { + if (userClass != className) output.writefln("class %s;", userClass); + } + if (userImports.length > 0) output.writeln(); + output.writefln("class %s : public QObject {", className); + output.writefln("\tQ_OBJECT"); + output.writefln("public:"); + output.writefln("\texplicit %s(QObject *parent = nullptr);", className); + output.writefln("\tstatic %s *fromJSON(QJsonObject source, QObject *parent = nullptr);", className); + output.writefln("\tvoid updateFromJSON(QJsonObject source, bool emitSignals = true);"); + output.writefln("\tQJsonObject toJSON();"); + output.writeln(); + + // Generate Q_PROPERTIES + foreach (property; properties) { + // Avoid clashes with QML + if (property.description.length > 0) { + output.writefln("\t/**"); + output.writefln("\t * @brief %s", property.description); + output.writefln("\t */"); + } + output.writefln("\tQ_PROPERTY(%s %s READ %s WRITE set%s NOTIFY %sChanged)", + property.typeNameWithQualifiers, property.name, property.name, property.writeName, property.name); + } + + output.writeln(); + // Write getters + foreach (property; properties) { + // Avoid clashes with QML + output.writefln("\t%s %s() const;", + property.typeNameWithQualifiers, property.name); + output.writefln("\tvoid set%s(%s new%s);", + property.writeName, property.typeNameWithQualifiers, property.writeName); + output.writefln("\t"); + } + + // Signals + output.writefln("signals:"); + foreach (property; properties) { + output.writefln("\tvoid %sChanged(%s new%s);", + property.name, property.typeNameWithQualifiers, property.writeName); + } + output.writefln("protected:"); + + // Write member variables + foreach (property; properties) { + if (property.defaultInitializer.length > 0) { + output.writefln("\t%s %s = %s;", + property.typeNameWithQualifiers, property.memberName, property.defaultInitializer); + } else { + output.writefln("\t%s %s;", + property.typeNameWithQualifiers, property.memberName); + } + } + + output.writefln("};"); +} + +void writeObjectImplementation(File output, string name, MetaTypeInfo[] properties) { + string className = name.applyCasePolicy(OPENAPI_CASING, CPP_CLASS_CASING); + + output.writefln("%s::%s(QObject *parent) : QObject(parent) {}", className, className); + output.writeln(); + + output.writefln("%s *%s::fromJSON(QJsonObject source, QObject *parent) {", className, className); + output.writefln("\t%s *instance = new %s(parent);", className, className); + output.writefln("\tinstance->updateFromJSON(source, false);", className); + output.writefln("\treturn instance;"); + output.writefln("}"); + output.writeln(); + + output.writefln("void %s::updateFromJSON(QJsonObject source, bool emitSignals) {", className, className); + output.writefln("\tQ_UNIMPLEMENTED();"); + foreach (property; properties) { + output.writefln("\t%s = fromJsonValue<%s>(source[\"%s\");", property.memberName, property.typeNameWithQualifiers, + property.originalName); + } + output.writeln(); + output.writefln("\tif (emitSignals) {"); + foreach (property; properties) { + output.writefln("\t\temit %sChanged(%s);", property.name, property.memberName); + } + output.writefln("\t}"); + output.writefln("}"); + + output.writefln("QJsonObject %s::toJSON() {", className); + output.writefln("\tQJsonObject result;"); + foreach (property; properties) { + output.writefln("\tresult[\"%s\"] = toJsonValue<%s>(%s);", property.originalName, property.typeNameWithQualifiers, + property.memberName); + } + output.writefln("\treturn result;"); + output.writefln("}"); + + foreach(property; properties) { + output.writefln("%s %s::%s() const { return %s; }", property.typeNameWithQualifiers, + className, property.name, property.memberName); + + output.writefln("void %s::set%s(%s new%s) {", className, property.writeName, + property.typeNameWithQualifiers, property.writeName); + output.writefln("\t%s = new%s;", property.memberName, property.writeName); + output.writefln("\temit %sChanged(new%s);", property.name, property.writeName); + output.writefln("}"); + output.writeln(); + } +} + +// Enum +void writeEnumHeader(File output, string name, string[] values, string doc = "") { + string className = name.applyCasePolicy(OPENAPI_CASING, CPP_CLASS_CASING); + output.writefln("class %sClass {", className); + output.writefln("\tQ_GADGET"); + output.writefln("public:"); + output.writefln("\tenum Value {"); + output.writefln("\t\tEnumNotSet,"); + foreach (value; values) { + output.writefln("\t\t%s,", value); + } + output.writefln("\t};"); + output.writefln("\tQ_ENUM(Value)"); + output.writefln("private:"); + output.writefln("\texplicit %sClass();", className); + output.writefln("};"); + output.writefln("typedef %sClass::Value %s;", className, className); + output.writeln(); + output.writefln("template <>"); + output.writefln("%s fromJsonValue<%s>(QJsonValue source) {", className, className); + output.writefln("\tif (!source.isString()) return %sClass::EnumNotSet;", className); + output.writeln(); + output.writefln("\tQString str = source.toString();"); + if (values.length > 0) { + output.writefln("\tif (str == QStringLiteral(\"%s\")) {", values[0]); + output.writefln("\t\treturn %sClass::%s;", className, values[0]); + output.write("\t}"); + foreach(value; drop(values, 1)) { + output.writefln(" else if (str == QStringLiteral(\"%s\")) {", value); + output.writefln("\t\treturn %sClass::%s;", className, value); + output.write("\t}"); + } + output.writeln(); + } + output.writeln(); + output.writefln("\treturn %sClass::EnumNotSet;", className); + output.writefln("}"); +} + +void writeEnumImplementation(File output, string name) { + string className = name.applyCasePolicy(OPENAPI_CASING, CPP_CLASS_CASING); + string importName = name.applyCasePolicy(OPENAPI_CASING, CPP_FILENAME_CASING); + output.writefln("%sClass::%sClass() {}", name, name); +} + +// Common +void writeHeaderPreamble(File output, string className, string[] imports = [], string[] userImports = []) { + output.writeln(COPYRIGHT); + string guard = guardName(CPP_NAMESPACE, className); + output.writefln("#ifndef %s", guard); + output.writefln("#define %s", guard); + output.writeln(); + + foreach(file; imports) { + output.writefln("#include <%s>", file); + } + + if (imports.length > 0) output.writeln(); + + foreach(file; userImports) { + output.writefln("#include \"%s\"", buildPath(INCLUDE_PREFIX, file)); + } + if (userImports.length > 0) output.writeln(); + + foreach (namespace; CPP_NAMESPACE) { + output.writefln("namespace %s {", namespace); + } + output.writeln(); +} + +void writeHeaderPostamble(File output, string className) { + output.writeln(); + foreach(namespace; CPP_NAMESPACE) { + output.writefln("} // NS %s", namespace); + } + output.writeln(); + output.writefln("#endif // %s", guardName(CPP_NAMESPACE, className)); +} + +void writeImplementationPreamble(File output, string className, string[] imports = []) { + output.writeln(COPYRIGHT); + output.writefln("#include <%s>", buildPath(INCLUDE_PREFIX, MODEL_FOLDER, className.applyCasePolicy(OPENAPI_CASING, CasePolicy.LOWER) ~ ".h")); + output.writeln(); + + foreach(file; imports) { + output.writefln("#include <%s>", buildPath(INCLUDE_PREFIX, file)); + } + if (imports.length > 0) output.writeln(); + + foreach (namespace; CPP_NAMESPACE) { + output.writefln("namespace %s {", namespace); + } + output.writeln(); +} + +void writeImplementationPostamble(File output, string className) { + output.writeln(); + foreach(namespace; CPP_NAMESPACE) { + output.writefln("} // NS %s", namespace); + } +} + + +// Helper functions +string applyCasePolicy(string source, CasePolicy input, CasePolicy output) { + if (input == output) return source; + switch(output) { + case CasePolicy.KEEP: + return source; + case CasePolicy.PASCAL: + if (input == CasePolicy.CAMEL) { + char[] result = source.dup; + result[0] = cast(char) toUpper(result[0]); + return cast(string) result; + } else { + throw new Exception("Not implemented"); + } + case CasePolicy.CAMEL: + if (input == CasePolicy.PASCAL) { + char[] result = source.dup; + result[0] = cast(char) toLower(result[0]); + return cast(string) result; + } else { + throw new Exception("Not implemented"); + } + case CasePolicy.LOWER: + if (input == CasePolicy.CAMEL || input == CasePolicy.PASCAL) { + return source.toLower(); + } + throw new Exception("Not implemented"); + case CasePolicy.UPPER: + if (input == CasePolicy.CAMEL || input == CasePolicy.PASCAL) { + return source.toUpper(); + } + throw new Exception("Not implemented"); + case CasePolicy.SCREAMING_SNAKE: + if (input == CasePolicy.CAMEL || input == CasePolicy.PASCAL) { + char[] mutableSource = source.dup; + Appender!(char[]) result; + foreach(window; source.slide!(Yes.withPartial)(2)) { + dchar c = window.front; + window.popFront(); + dchar n = window.front; + if (isLower(c) && !isLower(n)) { + result ~= toUpper(c); + result ~= '_'; + } else if (!isLower(c) && !isLower(n)) { + result ~= toUpper(c); + } else { + result ~= toUpper(c); + } + } + result ~= toUpper(source[$ - 1]); + return cast(string) result[]; + } + throw new Exception("Not implemented"); + default: + throw new Exception("Not implemented"); + } +} + +class MetaTypeInfo { +public: + string originalName = ""; + string name = ""; + string typeName = ""; + string description = ""; + bool needsPointer = false; + bool needsSystemImport = false; + bool needsLocalImport = false; + bool isContainer = false; + MetaTypeInfo containerType = null; + + string writeName() { + return name.applyCasePolicy(CPP_CLASS_MEMBER_CASING, CasePolicy.PASCAL); + } + + string memberName() { + return CPP_CLASS_MEMBER_PREFIX ~ name; + } + + string typeNameWithQualifiers() { + if (needsPointer) { + return typeName~ " *"; + } else { + return typeName; + } + } + + string defaultInitializer() { + if (needsPointer) return "nullptr"; + return ""; + } +} + +string guardName(string[] namespace, string className) { + return namespace.map!toUpper().join("_") ~ "_" + ~ className.applyCasePolicy(OPENAPI_CASING, CasePolicy.UPPER) + ~ "_H"; +} diff --git a/core/src/DTO/accessschedule.cpp b/core/src/DTO/accessschedule.cpp new file mode 100644 index 0000000..7d134cb --- /dev/null +++ b/core/src/DTO/accessschedule.cpp @@ -0,0 +1,85 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +AccessSchedule::AccessSchedule(QObject *parent) : QObject(parent) {} + +AccessSchedule *AccessSchedule::fromJSON(QJsonObject source, QObject *parent) { + AccessSchedule *instance = new AccessSchedule(parent); + instance->updateFromJSON(source); + return instance; +} + +void AccessSchedule::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject AccessSchedule::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint32 AccessSchedule::jellyfinId() const { return m_jellyfinId; } +void AccessSchedule::setJellyfinId(qint32 newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString AccessSchedule::userId() const { return m_userId; } +void AccessSchedule::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +DynamicDayOfWeek AccessSchedule::dayOfWeek() const { return m_dayOfWeek; } +void AccessSchedule::setDayOfWeek(DynamicDayOfWeek newDayOfWeek) { + m_dayOfWeek = newDayOfWeek; + emit dayOfWeekChanged(newDayOfWeek); +} + +double AccessSchedule::startHour() const { return m_startHour; } +void AccessSchedule::setStartHour(double newStartHour) { + m_startHour = newStartHour; + emit startHourChanged(newStartHour); +} + +double AccessSchedule::endHour() const { return m_endHour; } +void AccessSchedule::setEndHour(double newEndHour) { + m_endHour = newEndHour; + emit endHourChanged(newEndHour); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/activitylogentry.cpp b/core/src/DTO/activitylogentry.cpp new file mode 100644 index 0000000..3d410fb --- /dev/null +++ b/core/src/DTO/activitylogentry.cpp @@ -0,0 +1,115 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ActivityLogEntry::ActivityLogEntry(QObject *parent) : QObject(parent) {} + +ActivityLogEntry *ActivityLogEntry::fromJSON(QJsonObject source, QObject *parent) { + ActivityLogEntry *instance = new ActivityLogEntry(parent); + instance->updateFromJSON(source); + return instance; +} + +void ActivityLogEntry::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ActivityLogEntry::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint64 ActivityLogEntry::jellyfinId() const { return m_jellyfinId; } +void ActivityLogEntry::setJellyfinId(qint64 newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString ActivityLogEntry::name() const { return m_name; } +void ActivityLogEntry::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString ActivityLogEntry::overview() const { return m_overview; } +void ActivityLogEntry::setOverview(QString newOverview) { + m_overview = newOverview; + emit overviewChanged(newOverview); +} + +QString ActivityLogEntry::shortOverview() const { return m_shortOverview; } +void ActivityLogEntry::setShortOverview(QString newShortOverview) { + m_shortOverview = newShortOverview; + emit shortOverviewChanged(newShortOverview); +} + +QString ActivityLogEntry::type() const { return m_type; } +void ActivityLogEntry::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString ActivityLogEntry::itemId() const { return m_itemId; } +void ActivityLogEntry::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QDateTime ActivityLogEntry::date() const { return m_date; } +void ActivityLogEntry::setDate(QDateTime newDate) { + m_date = newDate; + emit dateChanged(newDate); +} + +QString ActivityLogEntry::userId() const { return m_userId; } +void ActivityLogEntry::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +QString ActivityLogEntry::userPrimaryImageTag() const { return m_userPrimaryImageTag; } +void ActivityLogEntry::setUserPrimaryImageTag(QString newUserPrimaryImageTag) { + m_userPrimaryImageTag = newUserPrimaryImageTag; + emit userPrimaryImageTagChanged(newUserPrimaryImageTag); +} + +LogLevel ActivityLogEntry::severity() const { return m_severity; } +void ActivityLogEntry::setSeverity(LogLevel newSeverity) { + m_severity = newSeverity; + emit severityChanged(newSeverity); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/activitylogentryqueryresult.cpp b/core/src/DTO/activitylogentryqueryresult.cpp new file mode 100644 index 0000000..a77cc38 --- /dev/null +++ b/core/src/DTO/activitylogentryqueryresult.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ActivityLogEntryQueryResult::ActivityLogEntryQueryResult(QObject *parent) : QObject(parent) {} + +ActivityLogEntryQueryResult *ActivityLogEntryQueryResult::fromJSON(QJsonObject source, QObject *parent) { + ActivityLogEntryQueryResult *instance = new ActivityLogEntryQueryResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void ActivityLogEntryQueryResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ActivityLogEntryQueryResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList ActivityLogEntryQueryResult::items() const { return m_items; } +void ActivityLogEntryQueryResult::setItems(QList newItems) { + m_items = newItems; + emit itemsChanged(newItems); +} + +qint32 ActivityLogEntryQueryResult::totalRecordCount() const { return m_totalRecordCount; } +void ActivityLogEntryQueryResult::setTotalRecordCount(qint32 newTotalRecordCount) { + m_totalRecordCount = newTotalRecordCount; + emit totalRecordCountChanged(newTotalRecordCount); +} + +qint32 ActivityLogEntryQueryResult::startIndex() const { return m_startIndex; } +void ActivityLogEntryQueryResult::setStartIndex(qint32 newStartIndex) { + m_startIndex = newStartIndex; + emit startIndexChanged(newStartIndex); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/addvirtualfolderdto.cpp b/core/src/DTO/addvirtualfolderdto.cpp new file mode 100644 index 0000000..37738df --- /dev/null +++ b/core/src/DTO/addvirtualfolderdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +AddVirtualFolderDto::AddVirtualFolderDto(QObject *parent) : QObject(parent) {} + +AddVirtualFolderDto *AddVirtualFolderDto::fromJSON(QJsonObject source, QObject *parent) { + AddVirtualFolderDto *instance = new AddVirtualFolderDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void AddVirtualFolderDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject AddVirtualFolderDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +LibraryOptions * AddVirtualFolderDto::libraryOptions() const { return m_libraryOptions; } +void AddVirtualFolderDto::setLibraryOptions(LibraryOptions * newLibraryOptions) { + m_libraryOptions = newLibraryOptions; + emit libraryOptionsChanged(newLibraryOptions); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/albuminfo.cpp b/core/src/DTO/albuminfo.cpp new file mode 100644 index 0000000..1728797 --- /dev/null +++ b/core/src/DTO/albuminfo.cpp @@ -0,0 +1,131 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +AlbumInfo::AlbumInfo(QObject *parent) : QObject(parent) {} + +AlbumInfo *AlbumInfo::fromJSON(QJsonObject source, QObject *parent) { + AlbumInfo *instance = new AlbumInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void AlbumInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject AlbumInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString AlbumInfo::name() const { return m_name; } +void AlbumInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString AlbumInfo::path() const { return m_path; } +void AlbumInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString AlbumInfo::metadataLanguage() const { return m_metadataLanguage; } +void AlbumInfo::setMetadataLanguage(QString newMetadataLanguage) { + m_metadataLanguage = newMetadataLanguage; + emit metadataLanguageChanged(newMetadataLanguage); +} + +QString AlbumInfo::metadataCountryCode() const { return m_metadataCountryCode; } +void AlbumInfo::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QJsonObject AlbumInfo::providerIds() const { return m_providerIds; } +void AlbumInfo::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 AlbumInfo::year() const { return m_year; } +void AlbumInfo::setYear(qint32 newYear) { + m_year = newYear; + emit yearChanged(newYear); +} + +qint32 AlbumInfo::indexNumber() const { return m_indexNumber; } +void AlbumInfo::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 AlbumInfo::parentIndexNumber() const { return m_parentIndexNumber; } +void AlbumInfo::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime AlbumInfo::premiereDate() const { return m_premiereDate; } +void AlbumInfo::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +bool AlbumInfo::isAutomated() const { return m_isAutomated; } +void AlbumInfo::setIsAutomated(bool newIsAutomated) { + m_isAutomated = newIsAutomated; + emit isAutomatedChanged(newIsAutomated); +} + +QStringList AlbumInfo::albumArtists() const { return m_albumArtists; } +void AlbumInfo::setAlbumArtists(QStringList newAlbumArtists) { + m_albumArtists = newAlbumArtists; + emit albumArtistsChanged(newAlbumArtists); +} + +QJsonObject AlbumInfo::artistProviderIds() const { return m_artistProviderIds; } +void AlbumInfo::setArtistProviderIds(QJsonObject newArtistProviderIds) { + m_artistProviderIds = newArtistProviderIds; + emit artistProviderIdsChanged(newArtistProviderIds); +} + +QList AlbumInfo::songInfos() const { return m_songInfos; } +void AlbumInfo::setSongInfos(QList newSongInfos) { + m_songInfos = newSongInfos; + emit songInfosChanged(newSongInfos); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/albuminforemotesearchquery.cpp b/core/src/DTO/albuminforemotesearchquery.cpp new file mode 100644 index 0000000..2ba9fab --- /dev/null +++ b/core/src/DTO/albuminforemotesearchquery.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +AlbumInfoRemoteSearchQuery::AlbumInfoRemoteSearchQuery(QObject *parent) : QObject(parent) {} + +AlbumInfoRemoteSearchQuery *AlbumInfoRemoteSearchQuery::fromJSON(QJsonObject source, QObject *parent) { + AlbumInfoRemoteSearchQuery *instance = new AlbumInfoRemoteSearchQuery(parent); + instance->updateFromJSON(source); + return instance; +} + +void AlbumInfoRemoteSearchQuery::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject AlbumInfoRemoteSearchQuery::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +AlbumInfo * AlbumInfoRemoteSearchQuery::searchInfo() const { return m_searchInfo; } +void AlbumInfoRemoteSearchQuery::setSearchInfo(AlbumInfo * newSearchInfo) { + m_searchInfo = newSearchInfo; + emit searchInfoChanged(newSearchInfo); +} + +QString AlbumInfoRemoteSearchQuery::itemId() const { return m_itemId; } +void AlbumInfoRemoteSearchQuery::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString AlbumInfoRemoteSearchQuery::searchProviderName() const { return m_searchProviderName; } +void AlbumInfoRemoteSearchQuery::setSearchProviderName(QString newSearchProviderName) { + m_searchProviderName = newSearchProviderName; + emit searchProviderNameChanged(newSearchProviderName); +} + +bool AlbumInfoRemoteSearchQuery::includeDisabledProviders() const { return m_includeDisabledProviders; } +void AlbumInfoRemoteSearchQuery::setIncludeDisabledProviders(bool newIncludeDisabledProviders) { + m_includeDisabledProviders = newIncludeDisabledProviders; + emit includeDisabledProvidersChanged(newIncludeDisabledProviders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/allthememediaresult.cpp b/core/src/DTO/allthememediaresult.cpp new file mode 100644 index 0000000..f2c2827 --- /dev/null +++ b/core/src/DTO/allthememediaresult.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +AllThemeMediaResult::AllThemeMediaResult(QObject *parent) : QObject(parent) {} + +AllThemeMediaResult *AllThemeMediaResult::fromJSON(QJsonObject source, QObject *parent) { + AllThemeMediaResult *instance = new AllThemeMediaResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void AllThemeMediaResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject AllThemeMediaResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +ThemeMediaResult * AllThemeMediaResult::themeVideosResult() const { return m_themeVideosResult; } +void AllThemeMediaResult::setThemeVideosResult(ThemeMediaResult * newThemeVideosResult) { + m_themeVideosResult = newThemeVideosResult; + emit themeVideosResultChanged(newThemeVideosResult); +} + +ThemeMediaResult * AllThemeMediaResult::themeSongsResult() const { return m_themeSongsResult; } +void AllThemeMediaResult::setThemeSongsResult(ThemeMediaResult * newThemeSongsResult) { + m_themeSongsResult = newThemeSongsResult; + emit themeSongsResultChanged(newThemeSongsResult); +} + +ThemeMediaResult * AllThemeMediaResult::soundtrackSongsResult() const { return m_soundtrackSongsResult; } +void AllThemeMediaResult::setSoundtrackSongsResult(ThemeMediaResult * newSoundtrackSongsResult) { + m_soundtrackSongsResult = newSoundtrackSongsResult; + emit soundtrackSongsResultChanged(newSoundtrackSongsResult); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/architecture.cpp b/core/src/DTO/architecture.cpp new file mode 100644 index 0000000..0b721e1 --- /dev/null +++ b/core/src/DTO/architecture.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ArchitectureClass::ArchitectureClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/artistinfo.cpp b/core/src/DTO/artistinfo.cpp new file mode 100644 index 0000000..33836e8 --- /dev/null +++ b/core/src/DTO/artistinfo.cpp @@ -0,0 +1,119 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ArtistInfo::ArtistInfo(QObject *parent) : QObject(parent) {} + +ArtistInfo *ArtistInfo::fromJSON(QJsonObject source, QObject *parent) { + ArtistInfo *instance = new ArtistInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void ArtistInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ArtistInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ArtistInfo::name() const { return m_name; } +void ArtistInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString ArtistInfo::path() const { return m_path; } +void ArtistInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString ArtistInfo::metadataLanguage() const { return m_metadataLanguage; } +void ArtistInfo::setMetadataLanguage(QString newMetadataLanguage) { + m_metadataLanguage = newMetadataLanguage; + emit metadataLanguageChanged(newMetadataLanguage); +} + +QString ArtistInfo::metadataCountryCode() const { return m_metadataCountryCode; } +void ArtistInfo::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QJsonObject ArtistInfo::providerIds() const { return m_providerIds; } +void ArtistInfo::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 ArtistInfo::year() const { return m_year; } +void ArtistInfo::setYear(qint32 newYear) { + m_year = newYear; + emit yearChanged(newYear); +} + +qint32 ArtistInfo::indexNumber() const { return m_indexNumber; } +void ArtistInfo::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 ArtistInfo::parentIndexNumber() const { return m_parentIndexNumber; } +void ArtistInfo::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime ArtistInfo::premiereDate() const { return m_premiereDate; } +void ArtistInfo::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +bool ArtistInfo::isAutomated() const { return m_isAutomated; } +void ArtistInfo::setIsAutomated(bool newIsAutomated) { + m_isAutomated = newIsAutomated; + emit isAutomatedChanged(newIsAutomated); +} + +QList ArtistInfo::songInfos() const { return m_songInfos; } +void ArtistInfo::setSongInfos(QList newSongInfos) { + m_songInfos = newSongInfos; + emit songInfosChanged(newSongInfos); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/artistinforemotesearchquery.cpp b/core/src/DTO/artistinforemotesearchquery.cpp new file mode 100644 index 0000000..a184f69 --- /dev/null +++ b/core/src/DTO/artistinforemotesearchquery.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ArtistInfoRemoteSearchQuery::ArtistInfoRemoteSearchQuery(QObject *parent) : QObject(parent) {} + +ArtistInfoRemoteSearchQuery *ArtistInfoRemoteSearchQuery::fromJSON(QJsonObject source, QObject *parent) { + ArtistInfoRemoteSearchQuery *instance = new ArtistInfoRemoteSearchQuery(parent); + instance->updateFromJSON(source); + return instance; +} + +void ArtistInfoRemoteSearchQuery::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ArtistInfoRemoteSearchQuery::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +ArtistInfo * ArtistInfoRemoteSearchQuery::searchInfo() const { return m_searchInfo; } +void ArtistInfoRemoteSearchQuery::setSearchInfo(ArtistInfo * newSearchInfo) { + m_searchInfo = newSearchInfo; + emit searchInfoChanged(newSearchInfo); +} + +QString ArtistInfoRemoteSearchQuery::itemId() const { return m_itemId; } +void ArtistInfoRemoteSearchQuery::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString ArtistInfoRemoteSearchQuery::searchProviderName() const { return m_searchProviderName; } +void ArtistInfoRemoteSearchQuery::setSearchProviderName(QString newSearchProviderName) { + m_searchProviderName = newSearchProviderName; + emit searchProviderNameChanged(newSearchProviderName); +} + +bool ArtistInfoRemoteSearchQuery::includeDisabledProviders() const { return m_includeDisabledProviders; } +void ArtistInfoRemoteSearchQuery::setIncludeDisabledProviders(bool newIncludeDisabledProviders) { + m_includeDisabledProviders = newIncludeDisabledProviders; + emit includeDisabledProvidersChanged(newIncludeDisabledProviders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/authenticateuserbyname.cpp b/core/src/DTO/authenticateuserbyname.cpp new file mode 100644 index 0000000..7a949ce --- /dev/null +++ b/core/src/DTO/authenticateuserbyname.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +AuthenticateUserByName::AuthenticateUserByName(QObject *parent) : QObject(parent) {} + +AuthenticateUserByName *AuthenticateUserByName::fromJSON(QJsonObject source, QObject *parent) { + AuthenticateUserByName *instance = new AuthenticateUserByName(parent); + instance->updateFromJSON(source); + return instance; +} + +void AuthenticateUserByName::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject AuthenticateUserByName::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString AuthenticateUserByName::username() const { return m_username; } +void AuthenticateUserByName::setUsername(QString newUsername) { + m_username = newUsername; + emit usernameChanged(newUsername); +} + +QString AuthenticateUserByName::pw() const { return m_pw; } +void AuthenticateUserByName::setPw(QString newPw) { + m_pw = newPw; + emit pwChanged(newPw); +} + +QString AuthenticateUserByName::password() const { return m_password; } +void AuthenticateUserByName::setPassword(QString newPassword) { + m_password = newPassword; + emit passwordChanged(newPassword); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/authenticationinfo.cpp b/core/src/DTO/authenticationinfo.cpp new file mode 100644 index 0000000..0ec1609 --- /dev/null +++ b/core/src/DTO/authenticationinfo.cpp @@ -0,0 +1,125 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +AuthenticationInfo::AuthenticationInfo(QObject *parent) : QObject(parent) {} + +AuthenticationInfo *AuthenticationInfo::fromJSON(QJsonObject source, QObject *parent) { + AuthenticationInfo *instance = new AuthenticationInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void AuthenticationInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject AuthenticationInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint64 AuthenticationInfo::jellyfinId() const { return m_jellyfinId; } +void AuthenticationInfo::setJellyfinId(qint64 newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString AuthenticationInfo::accessToken() const { return m_accessToken; } +void AuthenticationInfo::setAccessToken(QString newAccessToken) { + m_accessToken = newAccessToken; + emit accessTokenChanged(newAccessToken); +} + +QString AuthenticationInfo::deviceId() const { return m_deviceId; } +void AuthenticationInfo::setDeviceId(QString newDeviceId) { + m_deviceId = newDeviceId; + emit deviceIdChanged(newDeviceId); +} + +QString AuthenticationInfo::appName() const { return m_appName; } +void AuthenticationInfo::setAppName(QString newAppName) { + m_appName = newAppName; + emit appNameChanged(newAppName); +} + +QString AuthenticationInfo::appVersion() const { return m_appVersion; } +void AuthenticationInfo::setAppVersion(QString newAppVersion) { + m_appVersion = newAppVersion; + emit appVersionChanged(newAppVersion); +} + +QString AuthenticationInfo::deviceName() const { return m_deviceName; } +void AuthenticationInfo::setDeviceName(QString newDeviceName) { + m_deviceName = newDeviceName; + emit deviceNameChanged(newDeviceName); +} + +QString AuthenticationInfo::userId() const { return m_userId; } +void AuthenticationInfo::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +bool AuthenticationInfo::isActive() const { return m_isActive; } +void AuthenticationInfo::setIsActive(bool newIsActive) { + m_isActive = newIsActive; + emit isActiveChanged(newIsActive); +} + +QDateTime AuthenticationInfo::dateCreated() const { return m_dateCreated; } +void AuthenticationInfo::setDateCreated(QDateTime newDateCreated) { + m_dateCreated = newDateCreated; + emit dateCreatedChanged(newDateCreated); +} + +QDateTime AuthenticationInfo::dateRevoked() const { return m_dateRevoked; } +void AuthenticationInfo::setDateRevoked(QDateTime newDateRevoked) { + m_dateRevoked = newDateRevoked; + emit dateRevokedChanged(newDateRevoked); +} + +QDateTime AuthenticationInfo::dateLastActivity() const { return m_dateLastActivity; } +void AuthenticationInfo::setDateLastActivity(QDateTime newDateLastActivity) { + m_dateLastActivity = newDateLastActivity; + emit dateLastActivityChanged(newDateLastActivity); +} + +QString AuthenticationInfo::userName() const { return m_userName; } +void AuthenticationInfo::setUserName(QString newUserName) { + m_userName = newUserName; + emit userNameChanged(newUserName); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/authenticationinfoqueryresult.cpp b/core/src/DTO/authenticationinfoqueryresult.cpp new file mode 100644 index 0000000..6fec163 --- /dev/null +++ b/core/src/DTO/authenticationinfoqueryresult.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +AuthenticationInfoQueryResult::AuthenticationInfoQueryResult(QObject *parent) : QObject(parent) {} + +AuthenticationInfoQueryResult *AuthenticationInfoQueryResult::fromJSON(QJsonObject source, QObject *parent) { + AuthenticationInfoQueryResult *instance = new AuthenticationInfoQueryResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void AuthenticationInfoQueryResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject AuthenticationInfoQueryResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList AuthenticationInfoQueryResult::items() const { return m_items; } +void AuthenticationInfoQueryResult::setItems(QList newItems) { + m_items = newItems; + emit itemsChanged(newItems); +} + +qint32 AuthenticationInfoQueryResult::totalRecordCount() const { return m_totalRecordCount; } +void AuthenticationInfoQueryResult::setTotalRecordCount(qint32 newTotalRecordCount) { + m_totalRecordCount = newTotalRecordCount; + emit totalRecordCountChanged(newTotalRecordCount); +} + +qint32 AuthenticationInfoQueryResult::startIndex() const { return m_startIndex; } +void AuthenticationInfoQueryResult::setStartIndex(qint32 newStartIndex) { + m_startIndex = newStartIndex; + emit startIndexChanged(newStartIndex); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/authenticationresult.cpp b/core/src/DTO/authenticationresult.cpp new file mode 100644 index 0000000..d5496cb --- /dev/null +++ b/core/src/DTO/authenticationresult.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +AuthenticationResult::AuthenticationResult(QObject *parent) : QObject(parent) {} + +AuthenticationResult *AuthenticationResult::fromJSON(QJsonObject source, QObject *parent) { + AuthenticationResult *instance = new AuthenticationResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void AuthenticationResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject AuthenticationResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +UserDto * AuthenticationResult::user() const { return m_user; } +void AuthenticationResult::setUser(UserDto * newUser) { + m_user = newUser; + emit userChanged(newUser); +} + +SessionInfo * AuthenticationResult::sessionInfo() const { return m_sessionInfo; } +void AuthenticationResult::setSessionInfo(SessionInfo * newSessionInfo) { + m_sessionInfo = newSessionInfo; + emit sessionInfoChanged(newSessionInfo); +} + +QString AuthenticationResult::accessToken() const { return m_accessToken; } +void AuthenticationResult::setAccessToken(QString newAccessToken) { + m_accessToken = newAccessToken; + emit accessTokenChanged(newAccessToken); +} + +QString AuthenticationResult::serverId() const { return m_serverId; } +void AuthenticationResult::setServerId(QString newServerId) { + m_serverId = newServerId; + emit serverIdChanged(newServerId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/baseitem.cpp b/core/src/DTO/baseitem.cpp new file mode 100644 index 0000000..9b04ca3 --- /dev/null +++ b/core/src/DTO/baseitem.cpp @@ -0,0 +1,119 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +BaseItem::BaseItem(QObject *parent) : QObject(parent) {} + +BaseItem *BaseItem::fromJSON(QJsonObject source, QObject *parent) { + BaseItem *instance = new BaseItem(parent); + instance->updateFromJSON(source); + return instance; +} + +void BaseItem::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject BaseItem::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint64 BaseItem::size() const { return m_size; } +void BaseItem::setSize(qint64 newSize) { + m_size = newSize; + emit sizeChanged(newSize); +} + +QString BaseItem::container() const { return m_container; } +void BaseItem::setContainer(QString newContainer) { + m_container = newContainer; + emit containerChanged(newContainer); +} + +QDateTime BaseItem::dateLastSaved() const { return m_dateLastSaved; } +void BaseItem::setDateLastSaved(QDateTime newDateLastSaved) { + m_dateLastSaved = newDateLastSaved; + emit dateLastSavedChanged(newDateLastSaved); +} + +QList BaseItem::remoteTrailers() const { return m_remoteTrailers; } +void BaseItem::setRemoteTrailers(QList newRemoteTrailers) { + m_remoteTrailers = newRemoteTrailers; + emit remoteTrailersChanged(newRemoteTrailers); +} + +bool BaseItem::isHD() const { return m_isHD; } +void BaseItem::setIsHD(bool newIsHD) { + m_isHD = newIsHD; + emit isHDChanged(newIsHD); +} + +bool BaseItem::isShortcut() const { return m_isShortcut; } +void BaseItem::setIsShortcut(bool newIsShortcut) { + m_isShortcut = newIsShortcut; + emit isShortcutChanged(newIsShortcut); +} + +QString BaseItem::shortcutPath() const { return m_shortcutPath; } +void BaseItem::setShortcutPath(QString newShortcutPath) { + m_shortcutPath = newShortcutPath; + emit shortcutPathChanged(newShortcutPath); +} + +qint32 BaseItem::width() const { return m_width; } +void BaseItem::setWidth(qint32 newWidth) { + m_width = newWidth; + emit widthChanged(newWidth); +} + +qint32 BaseItem::height() const { return m_height; } +void BaseItem::setHeight(qint32 newHeight) { + m_height = newHeight; + emit heightChanged(newHeight); +} + +QStringList BaseItem::extraIds() const { return m_extraIds; } +void BaseItem::setExtraIds(QStringList newExtraIds) { + m_extraIds = newExtraIds; + emit extraIdsChanged(newExtraIds); +} + +bool BaseItem::supportsExternalTransfer() const { return m_supportsExternalTransfer; } +void BaseItem::setSupportsExternalTransfer(bool newSupportsExternalTransfer) { + m_supportsExternalTransfer = newSupportsExternalTransfer; + emit supportsExternalTransferChanged(newSupportsExternalTransfer); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/baseitemdto.cpp b/core/src/DTO/baseitemdto.cpp new file mode 100644 index 0000000..d983147 --- /dev/null +++ b/core/src/DTO/baseitemdto.cpp @@ -0,0 +1,970 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +BaseItemDto::BaseItemDto(QObject *parent) : QObject(parent) {} + +BaseItemDto *BaseItemDto::fromJSON(QJsonObject source, QObject *parent) { + BaseItemDto *instance = new BaseItemDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void BaseItemDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject BaseItemDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString BaseItemDto::name() const { return m_name; } +void BaseItemDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString BaseItemDto::originalTitle() const { return m_originalTitle; } +void BaseItemDto::setOriginalTitle(QString newOriginalTitle) { + m_originalTitle = newOriginalTitle; + emit originalTitleChanged(newOriginalTitle); +} + +QString BaseItemDto::serverId() const { return m_serverId; } +void BaseItemDto::setServerId(QString newServerId) { + m_serverId = newServerId; + emit serverIdChanged(newServerId); +} + +QString BaseItemDto::jellyfinId() const { return m_jellyfinId; } +void BaseItemDto::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString BaseItemDto::etag() const { return m_etag; } +void BaseItemDto::setEtag(QString newEtag) { + m_etag = newEtag; + emit etagChanged(newEtag); +} + +QString BaseItemDto::sourceType() const { return m_sourceType; } +void BaseItemDto::setSourceType(QString newSourceType) { + m_sourceType = newSourceType; + emit sourceTypeChanged(newSourceType); +} + +QString BaseItemDto::playlistItemId() const { return m_playlistItemId; } +void BaseItemDto::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + +QDateTime BaseItemDto::dateCreated() const { return m_dateCreated; } +void BaseItemDto::setDateCreated(QDateTime newDateCreated) { + m_dateCreated = newDateCreated; + emit dateCreatedChanged(newDateCreated); +} + +QDateTime BaseItemDto::dateLastMediaAdded() const { return m_dateLastMediaAdded; } +void BaseItemDto::setDateLastMediaAdded(QDateTime newDateLastMediaAdded) { + m_dateLastMediaAdded = newDateLastMediaAdded; + emit dateLastMediaAddedChanged(newDateLastMediaAdded); +} + +QString BaseItemDto::extraType() const { return m_extraType; } +void BaseItemDto::setExtraType(QString newExtraType) { + m_extraType = newExtraType; + emit extraTypeChanged(newExtraType); +} + +qint32 BaseItemDto::airsBeforeSeasonNumber() const { return m_airsBeforeSeasonNumber; } +void BaseItemDto::setAirsBeforeSeasonNumber(qint32 newAirsBeforeSeasonNumber) { + m_airsBeforeSeasonNumber = newAirsBeforeSeasonNumber; + emit airsBeforeSeasonNumberChanged(newAirsBeforeSeasonNumber); +} + +qint32 BaseItemDto::airsAfterSeasonNumber() const { return m_airsAfterSeasonNumber; } +void BaseItemDto::setAirsAfterSeasonNumber(qint32 newAirsAfterSeasonNumber) { + m_airsAfterSeasonNumber = newAirsAfterSeasonNumber; + emit airsAfterSeasonNumberChanged(newAirsAfterSeasonNumber); +} + +qint32 BaseItemDto::airsBeforeEpisodeNumber() const { return m_airsBeforeEpisodeNumber; } +void BaseItemDto::setAirsBeforeEpisodeNumber(qint32 newAirsBeforeEpisodeNumber) { + m_airsBeforeEpisodeNumber = newAirsBeforeEpisodeNumber; + emit airsBeforeEpisodeNumberChanged(newAirsBeforeEpisodeNumber); +} + +bool BaseItemDto::canDelete() const { return m_canDelete; } +void BaseItemDto::setCanDelete(bool newCanDelete) { + m_canDelete = newCanDelete; + emit canDeleteChanged(newCanDelete); +} + +bool BaseItemDto::canDownload() const { return m_canDownload; } +void BaseItemDto::setCanDownload(bool newCanDownload) { + m_canDownload = newCanDownload; + emit canDownloadChanged(newCanDownload); +} + +bool BaseItemDto::hasSubtitles() const { return m_hasSubtitles; } +void BaseItemDto::setHasSubtitles(bool newHasSubtitles) { + m_hasSubtitles = newHasSubtitles; + emit hasSubtitlesChanged(newHasSubtitles); +} + +QString BaseItemDto::preferredMetadataLanguage() const { return m_preferredMetadataLanguage; } +void BaseItemDto::setPreferredMetadataLanguage(QString newPreferredMetadataLanguage) { + m_preferredMetadataLanguage = newPreferredMetadataLanguage; + emit preferredMetadataLanguageChanged(newPreferredMetadataLanguage); +} + +QString BaseItemDto::preferredMetadataCountryCode() const { return m_preferredMetadataCountryCode; } +void BaseItemDto::setPreferredMetadataCountryCode(QString newPreferredMetadataCountryCode) { + m_preferredMetadataCountryCode = newPreferredMetadataCountryCode; + emit preferredMetadataCountryCodeChanged(newPreferredMetadataCountryCode); +} + +bool BaseItemDto::supportsSync() const { return m_supportsSync; } +void BaseItemDto::setSupportsSync(bool newSupportsSync) { + m_supportsSync = newSupportsSync; + emit supportsSyncChanged(newSupportsSync); +} + +QString BaseItemDto::container() const { return m_container; } +void BaseItemDto::setContainer(QString newContainer) { + m_container = newContainer; + emit containerChanged(newContainer); +} + +QString BaseItemDto::sortName() const { return m_sortName; } +void BaseItemDto::setSortName(QString newSortName) { + m_sortName = newSortName; + emit sortNameChanged(newSortName); +} + +QString BaseItemDto::forcedSortName() const { return m_forcedSortName; } +void BaseItemDto::setForcedSortName(QString newForcedSortName) { + m_forcedSortName = newForcedSortName; + emit forcedSortNameChanged(newForcedSortName); +} + +Video3DFormat BaseItemDto::video3DFormat() const { return m_video3DFormat; } +void BaseItemDto::setVideo3DFormat(Video3DFormat newVideo3DFormat) { + m_video3DFormat = newVideo3DFormat; + emit video3DFormatChanged(newVideo3DFormat); +} + +QDateTime BaseItemDto::premiereDate() const { return m_premiereDate; } +void BaseItemDto::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +QList BaseItemDto::externalUrls() const { return m_externalUrls; } +void BaseItemDto::setExternalUrls(QList newExternalUrls) { + m_externalUrls = newExternalUrls; + emit externalUrlsChanged(newExternalUrls); +} + +QList BaseItemDto::mediaSources() const { return m_mediaSources; } +void BaseItemDto::setMediaSources(QList newMediaSources) { + m_mediaSources = newMediaSources; + emit mediaSourcesChanged(newMediaSources); +} + +float BaseItemDto::criticRating() const { return m_criticRating; } +void BaseItemDto::setCriticRating(float newCriticRating) { + m_criticRating = newCriticRating; + emit criticRatingChanged(newCriticRating); +} + +QStringList BaseItemDto::productionLocations() const { return m_productionLocations; } +void BaseItemDto::setProductionLocations(QStringList newProductionLocations) { + m_productionLocations = newProductionLocations; + emit productionLocationsChanged(newProductionLocations); +} + +QString BaseItemDto::path() const { return m_path; } +void BaseItemDto::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +bool BaseItemDto::enableMediaSourceDisplay() const { return m_enableMediaSourceDisplay; } +void BaseItemDto::setEnableMediaSourceDisplay(bool newEnableMediaSourceDisplay) { + m_enableMediaSourceDisplay = newEnableMediaSourceDisplay; + emit enableMediaSourceDisplayChanged(newEnableMediaSourceDisplay); +} + +QString BaseItemDto::officialRating() const { return m_officialRating; } +void BaseItemDto::setOfficialRating(QString newOfficialRating) { + m_officialRating = newOfficialRating; + emit officialRatingChanged(newOfficialRating); +} + +QString BaseItemDto::customRating() const { return m_customRating; } +void BaseItemDto::setCustomRating(QString newCustomRating) { + m_customRating = newCustomRating; + emit customRatingChanged(newCustomRating); +} + +QString BaseItemDto::channelId() const { return m_channelId; } +void BaseItemDto::setChannelId(QString newChannelId) { + m_channelId = newChannelId; + emit channelIdChanged(newChannelId); +} + +QString BaseItemDto::channelName() const { return m_channelName; } +void BaseItemDto::setChannelName(QString newChannelName) { + m_channelName = newChannelName; + emit channelNameChanged(newChannelName); +} + +QString BaseItemDto::overview() const { return m_overview; } +void BaseItemDto::setOverview(QString newOverview) { + m_overview = newOverview; + emit overviewChanged(newOverview); +} + +QStringList BaseItemDto::taglines() const { return m_taglines; } +void BaseItemDto::setTaglines(QStringList newTaglines) { + m_taglines = newTaglines; + emit taglinesChanged(newTaglines); +} + +QStringList BaseItemDto::genres() const { return m_genres; } +void BaseItemDto::setGenres(QStringList newGenres) { + m_genres = newGenres; + emit genresChanged(newGenres); +} + +float BaseItemDto::communityRating() const { return m_communityRating; } +void BaseItemDto::setCommunityRating(float newCommunityRating) { + m_communityRating = newCommunityRating; + emit communityRatingChanged(newCommunityRating); +} + +qint64 BaseItemDto::cumulativeRunTimeTicks() const { return m_cumulativeRunTimeTicks; } +void BaseItemDto::setCumulativeRunTimeTicks(qint64 newCumulativeRunTimeTicks) { + m_cumulativeRunTimeTicks = newCumulativeRunTimeTicks; + emit cumulativeRunTimeTicksChanged(newCumulativeRunTimeTicks); +} + +qint64 BaseItemDto::runTimeTicks() const { return m_runTimeTicks; } +void BaseItemDto::setRunTimeTicks(qint64 newRunTimeTicks) { + m_runTimeTicks = newRunTimeTicks; + emit runTimeTicksChanged(newRunTimeTicks); +} + +PlayAccess BaseItemDto::playAccess() const { return m_playAccess; } +void BaseItemDto::setPlayAccess(PlayAccess newPlayAccess) { + m_playAccess = newPlayAccess; + emit playAccessChanged(newPlayAccess); +} + +QString BaseItemDto::aspectRatio() const { return m_aspectRatio; } +void BaseItemDto::setAspectRatio(QString newAspectRatio) { + m_aspectRatio = newAspectRatio; + emit aspectRatioChanged(newAspectRatio); +} + +qint32 BaseItemDto::productionYear() const { return m_productionYear; } +void BaseItemDto::setProductionYear(qint32 newProductionYear) { + m_productionYear = newProductionYear; + emit productionYearChanged(newProductionYear); +} + +bool BaseItemDto::isPlaceHolder() const { return m_isPlaceHolder; } +void BaseItemDto::setIsPlaceHolder(bool newIsPlaceHolder) { + m_isPlaceHolder = newIsPlaceHolder; + emit isPlaceHolderChanged(newIsPlaceHolder); +} + +QString BaseItemDto::number() const { return m_number; } +void BaseItemDto::setNumber(QString newNumber) { + m_number = newNumber; + emit numberChanged(newNumber); +} + +QString BaseItemDto::channelNumber() const { return m_channelNumber; } +void BaseItemDto::setChannelNumber(QString newChannelNumber) { + m_channelNumber = newChannelNumber; + emit channelNumberChanged(newChannelNumber); +} + +qint32 BaseItemDto::indexNumber() const { return m_indexNumber; } +void BaseItemDto::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 BaseItemDto::indexNumberEnd() const { return m_indexNumberEnd; } +void BaseItemDto::setIndexNumberEnd(qint32 newIndexNumberEnd) { + m_indexNumberEnd = newIndexNumberEnd; + emit indexNumberEndChanged(newIndexNumberEnd); +} + +qint32 BaseItemDto::parentIndexNumber() const { return m_parentIndexNumber; } +void BaseItemDto::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QList BaseItemDto::remoteTrailers() const { return m_remoteTrailers; } +void BaseItemDto::setRemoteTrailers(QList newRemoteTrailers) { + m_remoteTrailers = newRemoteTrailers; + emit remoteTrailersChanged(newRemoteTrailers); +} + +QJsonObject BaseItemDto::providerIds() const { return m_providerIds; } +void BaseItemDto::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +bool BaseItemDto::isHD() const { return m_isHD; } +void BaseItemDto::setIsHD(bool newIsHD) { + m_isHD = newIsHD; + emit isHDChanged(newIsHD); +} + +bool BaseItemDto::isFolder() const { return m_isFolder; } +void BaseItemDto::setIsFolder(bool newIsFolder) { + m_isFolder = newIsFolder; + emit isFolderChanged(newIsFolder); +} + +QString BaseItemDto::parentId() const { return m_parentId; } +void BaseItemDto::setParentId(QString newParentId) { + m_parentId = newParentId; + emit parentIdChanged(newParentId); +} + +QString BaseItemDto::type() const { return m_type; } +void BaseItemDto::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QList BaseItemDto::people() const { return m_people; } +void BaseItemDto::setPeople(QList newPeople) { + m_people = newPeople; + emit peopleChanged(newPeople); +} + +QList BaseItemDto::studios() const { return m_studios; } +void BaseItemDto::setStudios(QList newStudios) { + m_studios = newStudios; + emit studiosChanged(newStudios); +} + +QList BaseItemDto::genreItems() const { return m_genreItems; } +void BaseItemDto::setGenreItems(QList newGenreItems) { + m_genreItems = newGenreItems; + emit genreItemsChanged(newGenreItems); +} + +QString BaseItemDto::parentLogoItemId() const { return m_parentLogoItemId; } +void BaseItemDto::setParentLogoItemId(QString newParentLogoItemId) { + m_parentLogoItemId = newParentLogoItemId; + emit parentLogoItemIdChanged(newParentLogoItemId); +} + +QString BaseItemDto::parentBackdropItemId() const { return m_parentBackdropItemId; } +void BaseItemDto::setParentBackdropItemId(QString newParentBackdropItemId) { + m_parentBackdropItemId = newParentBackdropItemId; + emit parentBackdropItemIdChanged(newParentBackdropItemId); +} + +QStringList BaseItemDto::parentBackdropImageTags() const { return m_parentBackdropImageTags; } +void BaseItemDto::setParentBackdropImageTags(QStringList newParentBackdropImageTags) { + m_parentBackdropImageTags = newParentBackdropImageTags; + emit parentBackdropImageTagsChanged(newParentBackdropImageTags); +} + +qint32 BaseItemDto::localTrailerCount() const { return m_localTrailerCount; } +void BaseItemDto::setLocalTrailerCount(qint32 newLocalTrailerCount) { + m_localTrailerCount = newLocalTrailerCount; + emit localTrailerCountChanged(newLocalTrailerCount); +} + +UserItemDataDto * BaseItemDto::userData() const { return m_userData; } +void BaseItemDto::setUserData(UserItemDataDto * newUserData) { + m_userData = newUserData; + emit userDataChanged(newUserData); +} + +qint32 BaseItemDto::recursiveItemCount() const { return m_recursiveItemCount; } +void BaseItemDto::setRecursiveItemCount(qint32 newRecursiveItemCount) { + m_recursiveItemCount = newRecursiveItemCount; + emit recursiveItemCountChanged(newRecursiveItemCount); +} + +qint32 BaseItemDto::childCount() const { return m_childCount; } +void BaseItemDto::setChildCount(qint32 newChildCount) { + m_childCount = newChildCount; + emit childCountChanged(newChildCount); +} + +QString BaseItemDto::seriesName() const { return m_seriesName; } +void BaseItemDto::setSeriesName(QString newSeriesName) { + m_seriesName = newSeriesName; + emit seriesNameChanged(newSeriesName); +} + +QString BaseItemDto::seriesId() const { return m_seriesId; } +void BaseItemDto::setSeriesId(QString newSeriesId) { + m_seriesId = newSeriesId; + emit seriesIdChanged(newSeriesId); +} + +QString BaseItemDto::seasonId() const { return m_seasonId; } +void BaseItemDto::setSeasonId(QString newSeasonId) { + m_seasonId = newSeasonId; + emit seasonIdChanged(newSeasonId); +} + +qint32 BaseItemDto::specialFeatureCount() const { return m_specialFeatureCount; } +void BaseItemDto::setSpecialFeatureCount(qint32 newSpecialFeatureCount) { + m_specialFeatureCount = newSpecialFeatureCount; + emit specialFeatureCountChanged(newSpecialFeatureCount); +} + +QString BaseItemDto::displayPreferencesId() const { return m_displayPreferencesId; } +void BaseItemDto::setDisplayPreferencesId(QString newDisplayPreferencesId) { + m_displayPreferencesId = newDisplayPreferencesId; + emit displayPreferencesIdChanged(newDisplayPreferencesId); +} + +QString BaseItemDto::status() const { return m_status; } +void BaseItemDto::setStatus(QString newStatus) { + m_status = newStatus; + emit statusChanged(newStatus); +} + +QString BaseItemDto::airTime() const { return m_airTime; } +void BaseItemDto::setAirTime(QString newAirTime) { + m_airTime = newAirTime; + emit airTimeChanged(newAirTime); +} + +QList BaseItemDto::airDays() const { return m_airDays; } +void BaseItemDto::setAirDays(QList newAirDays) { + m_airDays = newAirDays; + emit airDaysChanged(newAirDays); +} + +QStringList BaseItemDto::tags() const { return m_tags; } +void BaseItemDto::setTags(QStringList newTags) { + m_tags = newTags; + emit tagsChanged(newTags); +} + +double BaseItemDto::primaryImageAspectRatio() const { return m_primaryImageAspectRatio; } +void BaseItemDto::setPrimaryImageAspectRatio(double newPrimaryImageAspectRatio) { + m_primaryImageAspectRatio = newPrimaryImageAspectRatio; + emit primaryImageAspectRatioChanged(newPrimaryImageAspectRatio); +} + +QStringList BaseItemDto::artists() const { return m_artists; } +void BaseItemDto::setArtists(QStringList newArtists) { + m_artists = newArtists; + emit artistsChanged(newArtists); +} + +QList BaseItemDto::artistItems() const { return m_artistItems; } +void BaseItemDto::setArtistItems(QList newArtistItems) { + m_artistItems = newArtistItems; + emit artistItemsChanged(newArtistItems); +} + +QString BaseItemDto::album() const { return m_album; } +void BaseItemDto::setAlbum(QString newAlbum) { + m_album = newAlbum; + emit albumChanged(newAlbum); +} + +QString BaseItemDto::collectionType() const { return m_collectionType; } +void BaseItemDto::setCollectionType(QString newCollectionType) { + m_collectionType = newCollectionType; + emit collectionTypeChanged(newCollectionType); +} + +QString BaseItemDto::displayOrder() const { return m_displayOrder; } +void BaseItemDto::setDisplayOrder(QString newDisplayOrder) { + m_displayOrder = newDisplayOrder; + emit displayOrderChanged(newDisplayOrder); +} + +QString BaseItemDto::albumId() const { return m_albumId; } +void BaseItemDto::setAlbumId(QString newAlbumId) { + m_albumId = newAlbumId; + emit albumIdChanged(newAlbumId); +} + +QString BaseItemDto::albumPrimaryImageTag() const { return m_albumPrimaryImageTag; } +void BaseItemDto::setAlbumPrimaryImageTag(QString newAlbumPrimaryImageTag) { + m_albumPrimaryImageTag = newAlbumPrimaryImageTag; + emit albumPrimaryImageTagChanged(newAlbumPrimaryImageTag); +} + +QString BaseItemDto::seriesPrimaryImageTag() const { return m_seriesPrimaryImageTag; } +void BaseItemDto::setSeriesPrimaryImageTag(QString newSeriesPrimaryImageTag) { + m_seriesPrimaryImageTag = newSeriesPrimaryImageTag; + emit seriesPrimaryImageTagChanged(newSeriesPrimaryImageTag); +} + +QString BaseItemDto::albumArtist() const { return m_albumArtist; } +void BaseItemDto::setAlbumArtist(QString newAlbumArtist) { + m_albumArtist = newAlbumArtist; + emit albumArtistChanged(newAlbumArtist); +} + +QList BaseItemDto::albumArtists() const { return m_albumArtists; } +void BaseItemDto::setAlbumArtists(QList newAlbumArtists) { + m_albumArtists = newAlbumArtists; + emit albumArtistsChanged(newAlbumArtists); +} + +QString BaseItemDto::seasonName() const { return m_seasonName; } +void BaseItemDto::setSeasonName(QString newSeasonName) { + m_seasonName = newSeasonName; + emit seasonNameChanged(newSeasonName); +} + +QList BaseItemDto::mediaStreams() const { return m_mediaStreams; } +void BaseItemDto::setMediaStreams(QList newMediaStreams) { + m_mediaStreams = newMediaStreams; + emit mediaStreamsChanged(newMediaStreams); +} + +VideoType BaseItemDto::videoType() const { return m_videoType; } +void BaseItemDto::setVideoType(VideoType newVideoType) { + m_videoType = newVideoType; + emit videoTypeChanged(newVideoType); +} + +qint32 BaseItemDto::partCount() const { return m_partCount; } +void BaseItemDto::setPartCount(qint32 newPartCount) { + m_partCount = newPartCount; + emit partCountChanged(newPartCount); +} + +qint32 BaseItemDto::mediaSourceCount() const { return m_mediaSourceCount; } +void BaseItemDto::setMediaSourceCount(qint32 newMediaSourceCount) { + m_mediaSourceCount = newMediaSourceCount; + emit mediaSourceCountChanged(newMediaSourceCount); +} + +QJsonObject BaseItemDto::imageTags() const { return m_imageTags; } +void BaseItemDto::setImageTags(QJsonObject newImageTags) { + m_imageTags = newImageTags; + emit imageTagsChanged(newImageTags); +} + +QStringList BaseItemDto::backdropImageTags() const { return m_backdropImageTags; } +void BaseItemDto::setBackdropImageTags(QStringList newBackdropImageTags) { + m_backdropImageTags = newBackdropImageTags; + emit backdropImageTagsChanged(newBackdropImageTags); +} + +QStringList BaseItemDto::screenshotImageTags() const { return m_screenshotImageTags; } +void BaseItemDto::setScreenshotImageTags(QStringList newScreenshotImageTags) { + m_screenshotImageTags = newScreenshotImageTags; + emit screenshotImageTagsChanged(newScreenshotImageTags); +} + +QString BaseItemDto::parentLogoImageTag() const { return m_parentLogoImageTag; } +void BaseItemDto::setParentLogoImageTag(QString newParentLogoImageTag) { + m_parentLogoImageTag = newParentLogoImageTag; + emit parentLogoImageTagChanged(newParentLogoImageTag); +} + +QString BaseItemDto::parentArtItemId() const { return m_parentArtItemId; } +void BaseItemDto::setParentArtItemId(QString newParentArtItemId) { + m_parentArtItemId = newParentArtItemId; + emit parentArtItemIdChanged(newParentArtItemId); +} + +QString BaseItemDto::parentArtImageTag() const { return m_parentArtImageTag; } +void BaseItemDto::setParentArtImageTag(QString newParentArtImageTag) { + m_parentArtImageTag = newParentArtImageTag; + emit parentArtImageTagChanged(newParentArtImageTag); +} + +QString BaseItemDto::seriesThumbImageTag() const { return m_seriesThumbImageTag; } +void BaseItemDto::setSeriesThumbImageTag(QString newSeriesThumbImageTag) { + m_seriesThumbImageTag = newSeriesThumbImageTag; + emit seriesThumbImageTagChanged(newSeriesThumbImageTag); +} + +QJsonObject BaseItemDto::imageBlurHashes() const { return m_imageBlurHashes; } +void BaseItemDto::setImageBlurHashes(QJsonObject newImageBlurHashes) { + m_imageBlurHashes = newImageBlurHashes; + emit imageBlurHashesChanged(newImageBlurHashes); +} + +QString BaseItemDto::seriesStudio() const { return m_seriesStudio; } +void BaseItemDto::setSeriesStudio(QString newSeriesStudio) { + m_seriesStudio = newSeriesStudio; + emit seriesStudioChanged(newSeriesStudio); +} + +QString BaseItemDto::parentThumbItemId() const { return m_parentThumbItemId; } +void BaseItemDto::setParentThumbItemId(QString newParentThumbItemId) { + m_parentThumbItemId = newParentThumbItemId; + emit parentThumbItemIdChanged(newParentThumbItemId); +} + +QString BaseItemDto::parentThumbImageTag() const { return m_parentThumbImageTag; } +void BaseItemDto::setParentThumbImageTag(QString newParentThumbImageTag) { + m_parentThumbImageTag = newParentThumbImageTag; + emit parentThumbImageTagChanged(newParentThumbImageTag); +} + +QString BaseItemDto::parentPrimaryImageItemId() const { return m_parentPrimaryImageItemId; } +void BaseItemDto::setParentPrimaryImageItemId(QString newParentPrimaryImageItemId) { + m_parentPrimaryImageItemId = newParentPrimaryImageItemId; + emit parentPrimaryImageItemIdChanged(newParentPrimaryImageItemId); +} + +QString BaseItemDto::parentPrimaryImageTag() const { return m_parentPrimaryImageTag; } +void BaseItemDto::setParentPrimaryImageTag(QString newParentPrimaryImageTag) { + m_parentPrimaryImageTag = newParentPrimaryImageTag; + emit parentPrimaryImageTagChanged(newParentPrimaryImageTag); +} + +QList BaseItemDto::chapters() const { return m_chapters; } +void BaseItemDto::setChapters(QList newChapters) { + m_chapters = newChapters; + emit chaptersChanged(newChapters); +} + +LocationType BaseItemDto::locationType() const { return m_locationType; } +void BaseItemDto::setLocationType(LocationType newLocationType) { + m_locationType = newLocationType; + emit locationTypeChanged(newLocationType); +} + +IsoType BaseItemDto::isoType() const { return m_isoType; } +void BaseItemDto::setIsoType(IsoType newIsoType) { + m_isoType = newIsoType; + emit isoTypeChanged(newIsoType); +} + +QString BaseItemDto::mediaType() const { return m_mediaType; } +void BaseItemDto::setMediaType(QString newMediaType) { + m_mediaType = newMediaType; + emit mediaTypeChanged(newMediaType); +} + +QDateTime BaseItemDto::endDate() const { return m_endDate; } +void BaseItemDto::setEndDate(QDateTime newEndDate) { + m_endDate = newEndDate; + emit endDateChanged(newEndDate); +} + +QList BaseItemDto::lockedFields() const { return m_lockedFields; } +void BaseItemDto::setLockedFields(QList newLockedFields) { + m_lockedFields = newLockedFields; + emit lockedFieldsChanged(newLockedFields); +} + +qint32 BaseItemDto::trailerCount() const { return m_trailerCount; } +void BaseItemDto::setTrailerCount(qint32 newTrailerCount) { + m_trailerCount = newTrailerCount; + emit trailerCountChanged(newTrailerCount); +} + +qint32 BaseItemDto::movieCount() const { return m_movieCount; } +void BaseItemDto::setMovieCount(qint32 newMovieCount) { + m_movieCount = newMovieCount; + emit movieCountChanged(newMovieCount); +} + +qint32 BaseItemDto::seriesCount() const { return m_seriesCount; } +void BaseItemDto::setSeriesCount(qint32 newSeriesCount) { + m_seriesCount = newSeriesCount; + emit seriesCountChanged(newSeriesCount); +} + +qint32 BaseItemDto::programCount() const { return m_programCount; } +void BaseItemDto::setProgramCount(qint32 newProgramCount) { + m_programCount = newProgramCount; + emit programCountChanged(newProgramCount); +} + +qint32 BaseItemDto::episodeCount() const { return m_episodeCount; } +void BaseItemDto::setEpisodeCount(qint32 newEpisodeCount) { + m_episodeCount = newEpisodeCount; + emit episodeCountChanged(newEpisodeCount); +} + +qint32 BaseItemDto::songCount() const { return m_songCount; } +void BaseItemDto::setSongCount(qint32 newSongCount) { + m_songCount = newSongCount; + emit songCountChanged(newSongCount); +} + +qint32 BaseItemDto::albumCount() const { return m_albumCount; } +void BaseItemDto::setAlbumCount(qint32 newAlbumCount) { + m_albumCount = newAlbumCount; + emit albumCountChanged(newAlbumCount); +} + +qint32 BaseItemDto::artistCount() const { return m_artistCount; } +void BaseItemDto::setArtistCount(qint32 newArtistCount) { + m_artistCount = newArtistCount; + emit artistCountChanged(newArtistCount); +} + +qint32 BaseItemDto::musicVideoCount() const { return m_musicVideoCount; } +void BaseItemDto::setMusicVideoCount(qint32 newMusicVideoCount) { + m_musicVideoCount = newMusicVideoCount; + emit musicVideoCountChanged(newMusicVideoCount); +} + +bool BaseItemDto::lockData() const { return m_lockData; } +void BaseItemDto::setLockData(bool newLockData) { + m_lockData = newLockData; + emit lockDataChanged(newLockData); +} + +qint32 BaseItemDto::width() const { return m_width; } +void BaseItemDto::setWidth(qint32 newWidth) { + m_width = newWidth; + emit widthChanged(newWidth); +} + +qint32 BaseItemDto::height() const { return m_height; } +void BaseItemDto::setHeight(qint32 newHeight) { + m_height = newHeight; + emit heightChanged(newHeight); +} + +QString BaseItemDto::cameraMake() const { return m_cameraMake; } +void BaseItemDto::setCameraMake(QString newCameraMake) { + m_cameraMake = newCameraMake; + emit cameraMakeChanged(newCameraMake); +} + +QString BaseItemDto::cameraModel() const { return m_cameraModel; } +void BaseItemDto::setCameraModel(QString newCameraModel) { + m_cameraModel = newCameraModel; + emit cameraModelChanged(newCameraModel); +} + +QString BaseItemDto::software() const { return m_software; } +void BaseItemDto::setSoftware(QString newSoftware) { + m_software = newSoftware; + emit softwareChanged(newSoftware); +} + +double BaseItemDto::exposureTime() const { return m_exposureTime; } +void BaseItemDto::setExposureTime(double newExposureTime) { + m_exposureTime = newExposureTime; + emit exposureTimeChanged(newExposureTime); +} + +double BaseItemDto::focalLength() const { return m_focalLength; } +void BaseItemDto::setFocalLength(double newFocalLength) { + m_focalLength = newFocalLength; + emit focalLengthChanged(newFocalLength); +} + +ImageOrientation BaseItemDto::imageOrientation() const { return m_imageOrientation; } +void BaseItemDto::setImageOrientation(ImageOrientation newImageOrientation) { + m_imageOrientation = newImageOrientation; + emit imageOrientationChanged(newImageOrientation); +} + +double BaseItemDto::aperture() const { return m_aperture; } +void BaseItemDto::setAperture(double newAperture) { + m_aperture = newAperture; + emit apertureChanged(newAperture); +} + +double BaseItemDto::shutterSpeed() const { return m_shutterSpeed; } +void BaseItemDto::setShutterSpeed(double newShutterSpeed) { + m_shutterSpeed = newShutterSpeed; + emit shutterSpeedChanged(newShutterSpeed); +} + +double BaseItemDto::latitude() const { return m_latitude; } +void BaseItemDto::setLatitude(double newLatitude) { + m_latitude = newLatitude; + emit latitudeChanged(newLatitude); +} + +double BaseItemDto::longitude() const { return m_longitude; } +void BaseItemDto::setLongitude(double newLongitude) { + m_longitude = newLongitude; + emit longitudeChanged(newLongitude); +} + +double BaseItemDto::altitude() const { return m_altitude; } +void BaseItemDto::setAltitude(double newAltitude) { + m_altitude = newAltitude; + emit altitudeChanged(newAltitude); +} + +qint32 BaseItemDto::isoSpeedRating() const { return m_isoSpeedRating; } +void BaseItemDto::setIsoSpeedRating(qint32 newIsoSpeedRating) { + m_isoSpeedRating = newIsoSpeedRating; + emit isoSpeedRatingChanged(newIsoSpeedRating); +} + +QString BaseItemDto::seriesTimerId() const { return m_seriesTimerId; } +void BaseItemDto::setSeriesTimerId(QString newSeriesTimerId) { + m_seriesTimerId = newSeriesTimerId; + emit seriesTimerIdChanged(newSeriesTimerId); +} + +QString BaseItemDto::programId() const { return m_programId; } +void BaseItemDto::setProgramId(QString newProgramId) { + m_programId = newProgramId; + emit programIdChanged(newProgramId); +} + +QString BaseItemDto::channelPrimaryImageTag() const { return m_channelPrimaryImageTag; } +void BaseItemDto::setChannelPrimaryImageTag(QString newChannelPrimaryImageTag) { + m_channelPrimaryImageTag = newChannelPrimaryImageTag; + emit channelPrimaryImageTagChanged(newChannelPrimaryImageTag); +} + +QDateTime BaseItemDto::startDate() const { return m_startDate; } +void BaseItemDto::setStartDate(QDateTime newStartDate) { + m_startDate = newStartDate; + emit startDateChanged(newStartDate); +} + +double BaseItemDto::completionPercentage() const { return m_completionPercentage; } +void BaseItemDto::setCompletionPercentage(double newCompletionPercentage) { + m_completionPercentage = newCompletionPercentage; + emit completionPercentageChanged(newCompletionPercentage); +} + +bool BaseItemDto::isRepeat() const { return m_isRepeat; } +void BaseItemDto::setIsRepeat(bool newIsRepeat) { + m_isRepeat = newIsRepeat; + emit isRepeatChanged(newIsRepeat); +} + +QString BaseItemDto::episodeTitle() const { return m_episodeTitle; } +void BaseItemDto::setEpisodeTitle(QString newEpisodeTitle) { + m_episodeTitle = newEpisodeTitle; + emit episodeTitleChanged(newEpisodeTitle); +} + +ChannelType BaseItemDto::channelType() const { return m_channelType; } +void BaseItemDto::setChannelType(ChannelType newChannelType) { + m_channelType = newChannelType; + emit channelTypeChanged(newChannelType); +} + +ProgramAudio BaseItemDto::audio() const { return m_audio; } +void BaseItemDto::setAudio(ProgramAudio newAudio) { + m_audio = newAudio; + emit audioChanged(newAudio); +} + +bool BaseItemDto::isMovie() const { return m_isMovie; } +void BaseItemDto::setIsMovie(bool newIsMovie) { + m_isMovie = newIsMovie; + emit isMovieChanged(newIsMovie); +} + +bool BaseItemDto::isSports() const { return m_isSports; } +void BaseItemDto::setIsSports(bool newIsSports) { + m_isSports = newIsSports; + emit isSportsChanged(newIsSports); +} + +bool BaseItemDto::isSeries() const { return m_isSeries; } +void BaseItemDto::setIsSeries(bool newIsSeries) { + m_isSeries = newIsSeries; + emit isSeriesChanged(newIsSeries); +} + +bool BaseItemDto::isLive() const { return m_isLive; } +void BaseItemDto::setIsLive(bool newIsLive) { + m_isLive = newIsLive; + emit isLiveChanged(newIsLive); +} + +bool BaseItemDto::isNews() const { return m_isNews; } +void BaseItemDto::setIsNews(bool newIsNews) { + m_isNews = newIsNews; + emit isNewsChanged(newIsNews); +} + +bool BaseItemDto::isKids() const { return m_isKids; } +void BaseItemDto::setIsKids(bool newIsKids) { + m_isKids = newIsKids; + emit isKidsChanged(newIsKids); +} + +bool BaseItemDto::isPremiere() const { return m_isPremiere; } +void BaseItemDto::setIsPremiere(bool newIsPremiere) { + m_isPremiere = newIsPremiere; + emit isPremiereChanged(newIsPremiere); +} + +QString BaseItemDto::timerId() const { return m_timerId; } +void BaseItemDto::setTimerId(QString newTimerId) { + m_timerId = newTimerId; + emit timerIdChanged(newTimerId); +} + +BaseItemDto * BaseItemDto::currentProgram() const { return m_currentProgram; } +void BaseItemDto::setCurrentProgram(BaseItemDto * newCurrentProgram) { + m_currentProgram = newCurrentProgram; + emit currentProgramChanged(newCurrentProgram); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/baseitemdtoqueryresult.cpp b/core/src/DTO/baseitemdtoqueryresult.cpp new file mode 100644 index 0000000..bc79fc8 --- /dev/null +++ b/core/src/DTO/baseitemdtoqueryresult.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +BaseItemDtoQueryResult::BaseItemDtoQueryResult(QObject *parent) : QObject(parent) {} + +BaseItemDtoQueryResult *BaseItemDtoQueryResult::fromJSON(QJsonObject source, QObject *parent) { + BaseItemDtoQueryResult *instance = new BaseItemDtoQueryResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void BaseItemDtoQueryResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject BaseItemDtoQueryResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList BaseItemDtoQueryResult::items() const { return m_items; } +void BaseItemDtoQueryResult::setItems(QList newItems) { + m_items = newItems; + emit itemsChanged(newItems); +} + +qint32 BaseItemDtoQueryResult::totalRecordCount() const { return m_totalRecordCount; } +void BaseItemDtoQueryResult::setTotalRecordCount(qint32 newTotalRecordCount) { + m_totalRecordCount = newTotalRecordCount; + emit totalRecordCountChanged(newTotalRecordCount); +} + +qint32 BaseItemDtoQueryResult::startIndex() const { return m_startIndex; } +void BaseItemDtoQueryResult::setStartIndex(qint32 newStartIndex) { + m_startIndex = newStartIndex; + emit startIndexChanged(newStartIndex); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/baseitemperson.cpp b/core/src/DTO/baseitemperson.cpp new file mode 100644 index 0000000..0b56a76 --- /dev/null +++ b/core/src/DTO/baseitemperson.cpp @@ -0,0 +1,89 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +BaseItemPerson::BaseItemPerson(QObject *parent) : QObject(parent) {} + +BaseItemPerson *BaseItemPerson::fromJSON(QJsonObject source, QObject *parent) { + BaseItemPerson *instance = new BaseItemPerson(parent); + instance->updateFromJSON(source); + return instance; +} + +void BaseItemPerson::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject BaseItemPerson::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString BaseItemPerson::name() const { return m_name; } +void BaseItemPerson::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString BaseItemPerson::jellyfinId() const { return m_jellyfinId; } +void BaseItemPerson::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString BaseItemPerson::role() const { return m_role; } +void BaseItemPerson::setRole(QString newRole) { + m_role = newRole; + emit roleChanged(newRole); +} + +QString BaseItemPerson::type() const { return m_type; } +void BaseItemPerson::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString BaseItemPerson::primaryImageTag() const { return m_primaryImageTag; } +void BaseItemPerson::setPrimaryImageTag(QString newPrimaryImageTag) { + m_primaryImageTag = newPrimaryImageTag; + emit primaryImageTagChanged(newPrimaryImageTag); +} + +QJsonObject BaseItemPerson::imageBlurHashes() const { return m_imageBlurHashes; } +void BaseItemPerson::setImageBlurHashes(QJsonObject newImageBlurHashes) { + m_imageBlurHashes = newImageBlurHashes; + emit imageBlurHashesChanged(newImageBlurHashes); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/basepluginconfiguration.cpp b/core/src/DTO/basepluginconfiguration.cpp new file mode 100644 index 0000000..e69de29 diff --git a/core/src/DTO/bookinfo.cpp b/core/src/DTO/bookinfo.cpp new file mode 100644 index 0000000..f1f95a2 --- /dev/null +++ b/core/src/DTO/bookinfo.cpp @@ -0,0 +1,119 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +BookInfo::BookInfo(QObject *parent) : QObject(parent) {} + +BookInfo *BookInfo::fromJSON(QJsonObject source, QObject *parent) { + BookInfo *instance = new BookInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void BookInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject BookInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString BookInfo::name() const { return m_name; } +void BookInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString BookInfo::path() const { return m_path; } +void BookInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString BookInfo::metadataLanguage() const { return m_metadataLanguage; } +void BookInfo::setMetadataLanguage(QString newMetadataLanguage) { + m_metadataLanguage = newMetadataLanguage; + emit metadataLanguageChanged(newMetadataLanguage); +} + +QString BookInfo::metadataCountryCode() const { return m_metadataCountryCode; } +void BookInfo::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QJsonObject BookInfo::providerIds() const { return m_providerIds; } +void BookInfo::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 BookInfo::year() const { return m_year; } +void BookInfo::setYear(qint32 newYear) { + m_year = newYear; + emit yearChanged(newYear); +} + +qint32 BookInfo::indexNumber() const { return m_indexNumber; } +void BookInfo::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 BookInfo::parentIndexNumber() const { return m_parentIndexNumber; } +void BookInfo::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime BookInfo::premiereDate() const { return m_premiereDate; } +void BookInfo::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +bool BookInfo::isAutomated() const { return m_isAutomated; } +void BookInfo::setIsAutomated(bool newIsAutomated) { + m_isAutomated = newIsAutomated; + emit isAutomatedChanged(newIsAutomated); +} + +QString BookInfo::seriesName() const { return m_seriesName; } +void BookInfo::setSeriesName(QString newSeriesName) { + m_seriesName = newSeriesName; + emit seriesNameChanged(newSeriesName); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/bookinforemotesearchquery.cpp b/core/src/DTO/bookinforemotesearchquery.cpp new file mode 100644 index 0000000..e0fb40c --- /dev/null +++ b/core/src/DTO/bookinforemotesearchquery.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +BookInfoRemoteSearchQuery::BookInfoRemoteSearchQuery(QObject *parent) : QObject(parent) {} + +BookInfoRemoteSearchQuery *BookInfoRemoteSearchQuery::fromJSON(QJsonObject source, QObject *parent) { + BookInfoRemoteSearchQuery *instance = new BookInfoRemoteSearchQuery(parent); + instance->updateFromJSON(source); + return instance; +} + +void BookInfoRemoteSearchQuery::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject BookInfoRemoteSearchQuery::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +BookInfo * BookInfoRemoteSearchQuery::searchInfo() const { return m_searchInfo; } +void BookInfoRemoteSearchQuery::setSearchInfo(BookInfo * newSearchInfo) { + m_searchInfo = newSearchInfo; + emit searchInfoChanged(newSearchInfo); +} + +QString BookInfoRemoteSearchQuery::itemId() const { return m_itemId; } +void BookInfoRemoteSearchQuery::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString BookInfoRemoteSearchQuery::searchProviderName() const { return m_searchProviderName; } +void BookInfoRemoteSearchQuery::setSearchProviderName(QString newSearchProviderName) { + m_searchProviderName = newSearchProviderName; + emit searchProviderNameChanged(newSearchProviderName); +} + +bool BookInfoRemoteSearchQuery::includeDisabledProviders() const { return m_includeDisabledProviders; } +void BookInfoRemoteSearchQuery::setIncludeDisabledProviders(bool newIncludeDisabledProviders) { + m_includeDisabledProviders = newIncludeDisabledProviders; + emit includeDisabledProvidersChanged(newIncludeDisabledProviders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/boxsetinfo.cpp b/core/src/DTO/boxsetinfo.cpp new file mode 100644 index 0000000..cbd9f77 --- /dev/null +++ b/core/src/DTO/boxsetinfo.cpp @@ -0,0 +1,113 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +BoxSetInfo::BoxSetInfo(QObject *parent) : QObject(parent) {} + +BoxSetInfo *BoxSetInfo::fromJSON(QJsonObject source, QObject *parent) { + BoxSetInfo *instance = new BoxSetInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void BoxSetInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject BoxSetInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString BoxSetInfo::name() const { return m_name; } +void BoxSetInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString BoxSetInfo::path() const { return m_path; } +void BoxSetInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString BoxSetInfo::metadataLanguage() const { return m_metadataLanguage; } +void BoxSetInfo::setMetadataLanguage(QString newMetadataLanguage) { + m_metadataLanguage = newMetadataLanguage; + emit metadataLanguageChanged(newMetadataLanguage); +} + +QString BoxSetInfo::metadataCountryCode() const { return m_metadataCountryCode; } +void BoxSetInfo::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QJsonObject BoxSetInfo::providerIds() const { return m_providerIds; } +void BoxSetInfo::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 BoxSetInfo::year() const { return m_year; } +void BoxSetInfo::setYear(qint32 newYear) { + m_year = newYear; + emit yearChanged(newYear); +} + +qint32 BoxSetInfo::indexNumber() const { return m_indexNumber; } +void BoxSetInfo::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 BoxSetInfo::parentIndexNumber() const { return m_parentIndexNumber; } +void BoxSetInfo::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime BoxSetInfo::premiereDate() const { return m_premiereDate; } +void BoxSetInfo::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +bool BoxSetInfo::isAutomated() const { return m_isAutomated; } +void BoxSetInfo::setIsAutomated(bool newIsAutomated) { + m_isAutomated = newIsAutomated; + emit isAutomatedChanged(newIsAutomated); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/boxsetinforemotesearchquery.cpp b/core/src/DTO/boxsetinforemotesearchquery.cpp new file mode 100644 index 0000000..0225701 --- /dev/null +++ b/core/src/DTO/boxsetinforemotesearchquery.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +BoxSetInfoRemoteSearchQuery::BoxSetInfoRemoteSearchQuery(QObject *parent) : QObject(parent) {} + +BoxSetInfoRemoteSearchQuery *BoxSetInfoRemoteSearchQuery::fromJSON(QJsonObject source, QObject *parent) { + BoxSetInfoRemoteSearchQuery *instance = new BoxSetInfoRemoteSearchQuery(parent); + instance->updateFromJSON(source); + return instance; +} + +void BoxSetInfoRemoteSearchQuery::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject BoxSetInfoRemoteSearchQuery::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +BoxSetInfo * BoxSetInfoRemoteSearchQuery::searchInfo() const { return m_searchInfo; } +void BoxSetInfoRemoteSearchQuery::setSearchInfo(BoxSetInfo * newSearchInfo) { + m_searchInfo = newSearchInfo; + emit searchInfoChanged(newSearchInfo); +} + +QString BoxSetInfoRemoteSearchQuery::itemId() const { return m_itemId; } +void BoxSetInfoRemoteSearchQuery::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString BoxSetInfoRemoteSearchQuery::searchProviderName() const { return m_searchProviderName; } +void BoxSetInfoRemoteSearchQuery::setSearchProviderName(QString newSearchProviderName) { + m_searchProviderName = newSearchProviderName; + emit searchProviderNameChanged(newSearchProviderName); +} + +bool BoxSetInfoRemoteSearchQuery::includeDisabledProviders() const { return m_includeDisabledProviders; } +void BoxSetInfoRemoteSearchQuery::setIncludeDisabledProviders(bool newIncludeDisabledProviders) { + m_includeDisabledProviders = newIncludeDisabledProviders; + emit includeDisabledProvidersChanged(newIncludeDisabledProviders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/brandingoptions.cpp b/core/src/DTO/brandingoptions.cpp new file mode 100644 index 0000000..9f2226e --- /dev/null +++ b/core/src/DTO/brandingoptions.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +BrandingOptions::BrandingOptions(QObject *parent) : QObject(parent) {} + +BrandingOptions *BrandingOptions::fromJSON(QJsonObject source, QObject *parent) { + BrandingOptions *instance = new BrandingOptions(parent); + instance->updateFromJSON(source); + return instance; +} + +void BrandingOptions::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject BrandingOptions::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString BrandingOptions::loginDisclaimer() const { return m_loginDisclaimer; } +void BrandingOptions::setLoginDisclaimer(QString newLoginDisclaimer) { + m_loginDisclaimer = newLoginDisclaimer; + emit loginDisclaimerChanged(newLoginDisclaimer); +} + +QString BrandingOptions::customCss() const { return m_customCss; } +void BrandingOptions::setCustomCss(QString newCustomCss) { + m_customCss = newCustomCss; + emit customCssChanged(newCustomCss); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/bufferrequestdto.cpp b/core/src/DTO/bufferrequestdto.cpp new file mode 100644 index 0000000..2186ba0 --- /dev/null +++ b/core/src/DTO/bufferrequestdto.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +BufferRequestDto::BufferRequestDto(QObject *parent) : QObject(parent) {} + +BufferRequestDto *BufferRequestDto::fromJSON(QJsonObject source, QObject *parent) { + BufferRequestDto *instance = new BufferRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void BufferRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject BufferRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QDateTime BufferRequestDto::when() const { return m_when; } +void BufferRequestDto::setWhen(QDateTime newWhen) { + m_when = newWhen; + emit whenChanged(newWhen); +} + +qint64 BufferRequestDto::positionTicks() const { return m_positionTicks; } +void BufferRequestDto::setPositionTicks(qint64 newPositionTicks) { + m_positionTicks = newPositionTicks; + emit positionTicksChanged(newPositionTicks); +} + +bool BufferRequestDto::isPlaying() const { return m_isPlaying; } +void BufferRequestDto::setIsPlaying(bool newIsPlaying) { + m_isPlaying = newIsPlaying; + emit isPlayingChanged(newIsPlaying); +} + +QString BufferRequestDto::playlistItemId() const { return m_playlistItemId; } +void BufferRequestDto::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/channelfeatures.cpp b/core/src/DTO/channelfeatures.cpp new file mode 100644 index 0000000..6209015 --- /dev/null +++ b/core/src/DTO/channelfeatures.cpp @@ -0,0 +1,129 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +ChannelFeatures::ChannelFeatures(QObject *parent) : QObject(parent) {} + +ChannelFeatures *ChannelFeatures::fromJSON(QJsonObject source, QObject *parent) { + ChannelFeatures *instance = new ChannelFeatures(parent); + instance->updateFromJSON(source); + return instance; +} + +void ChannelFeatures::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ChannelFeatures::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ChannelFeatures::name() const { return m_name; } +void ChannelFeatures::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString ChannelFeatures::jellyfinId() const { return m_jellyfinId; } +void ChannelFeatures::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +bool ChannelFeatures::canSearch() const { return m_canSearch; } +void ChannelFeatures::setCanSearch(bool newCanSearch) { + m_canSearch = newCanSearch; + emit canSearchChanged(newCanSearch); +} + +QList ChannelFeatures::mediaTypes() const { return m_mediaTypes; } +void ChannelFeatures::setMediaTypes(QList newMediaTypes) { + m_mediaTypes = newMediaTypes; + emit mediaTypesChanged(newMediaTypes); +} + +QList ChannelFeatures::contentTypes() const { return m_contentTypes; } +void ChannelFeatures::setContentTypes(QList newContentTypes) { + m_contentTypes = newContentTypes; + emit contentTypesChanged(newContentTypes); +} + +qint32 ChannelFeatures::maxPageSize() const { return m_maxPageSize; } +void ChannelFeatures::setMaxPageSize(qint32 newMaxPageSize) { + m_maxPageSize = newMaxPageSize; + emit maxPageSizeChanged(newMaxPageSize); +} + +qint32 ChannelFeatures::autoRefreshLevels() const { return m_autoRefreshLevels; } +void ChannelFeatures::setAutoRefreshLevels(qint32 newAutoRefreshLevels) { + m_autoRefreshLevels = newAutoRefreshLevels; + emit autoRefreshLevelsChanged(newAutoRefreshLevels); +} + +QList ChannelFeatures::defaultSortFields() const { return m_defaultSortFields; } +void ChannelFeatures::setDefaultSortFields(QList newDefaultSortFields) { + m_defaultSortFields = newDefaultSortFields; + emit defaultSortFieldsChanged(newDefaultSortFields); +} + +bool ChannelFeatures::supportsSortOrderToggle() const { return m_supportsSortOrderToggle; } +void ChannelFeatures::setSupportsSortOrderToggle(bool newSupportsSortOrderToggle) { + m_supportsSortOrderToggle = newSupportsSortOrderToggle; + emit supportsSortOrderToggleChanged(newSupportsSortOrderToggle); +} + +bool ChannelFeatures::supportsLatestMedia() const { return m_supportsLatestMedia; } +void ChannelFeatures::setSupportsLatestMedia(bool newSupportsLatestMedia) { + m_supportsLatestMedia = newSupportsLatestMedia; + emit supportsLatestMediaChanged(newSupportsLatestMedia); +} + +bool ChannelFeatures::canFilter() const { return m_canFilter; } +void ChannelFeatures::setCanFilter(bool newCanFilter) { + m_canFilter = newCanFilter; + emit canFilterChanged(newCanFilter); +} + +bool ChannelFeatures::supportsContentDownloading() const { return m_supportsContentDownloading; } +void ChannelFeatures::setSupportsContentDownloading(bool newSupportsContentDownloading) { + m_supportsContentDownloading = newSupportsContentDownloading; + emit supportsContentDownloadingChanged(newSupportsContentDownloading); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/channelitemsortfield.cpp b/core/src/DTO/channelitemsortfield.cpp new file mode 100644 index 0000000..04485e6 --- /dev/null +++ b/core/src/DTO/channelitemsortfield.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ChannelItemSortFieldClass::ChannelItemSortFieldClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/channelmappingoptionsdto.cpp b/core/src/DTO/channelmappingoptionsdto.cpp new file mode 100644 index 0000000..6ce6f39 --- /dev/null +++ b/core/src/DTO/channelmappingoptionsdto.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ChannelMappingOptionsDto::ChannelMappingOptionsDto(QObject *parent) : QObject(parent) {} + +ChannelMappingOptionsDto *ChannelMappingOptionsDto::fromJSON(QJsonObject source, QObject *parent) { + ChannelMappingOptionsDto *instance = new ChannelMappingOptionsDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void ChannelMappingOptionsDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ChannelMappingOptionsDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList ChannelMappingOptionsDto::tunerChannels() const { return m_tunerChannels; } +void ChannelMappingOptionsDto::setTunerChannels(QList newTunerChannels) { + m_tunerChannels = newTunerChannels; + emit tunerChannelsChanged(newTunerChannels); +} + +QList ChannelMappingOptionsDto::providerChannels() const { return m_providerChannels; } +void ChannelMappingOptionsDto::setProviderChannels(QList newProviderChannels) { + m_providerChannels = newProviderChannels; + emit providerChannelsChanged(newProviderChannels); +} + +QList ChannelMappingOptionsDto::mappings() const { return m_mappings; } +void ChannelMappingOptionsDto::setMappings(QList newMappings) { + m_mappings = newMappings; + emit mappingsChanged(newMappings); +} + +QString ChannelMappingOptionsDto::providerName() const { return m_providerName; } +void ChannelMappingOptionsDto::setProviderName(QString newProviderName) { + m_providerName = newProviderName; + emit providerNameChanged(newProviderName); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/channelmediacontenttype.cpp b/core/src/DTO/channelmediacontenttype.cpp new file mode 100644 index 0000000..509fda4 --- /dev/null +++ b/core/src/DTO/channelmediacontenttype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ChannelMediaContentTypeClass::ChannelMediaContentTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/channelmediatype.cpp b/core/src/DTO/channelmediatype.cpp new file mode 100644 index 0000000..f312205 --- /dev/null +++ b/core/src/DTO/channelmediatype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ChannelMediaTypeClass::ChannelMediaTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/channeltype.cpp b/core/src/DTO/channeltype.cpp new file mode 100644 index 0000000..2ae979c --- /dev/null +++ b/core/src/DTO/channeltype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ChannelTypeClass::ChannelTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/chapterinfo.cpp b/core/src/DTO/chapterinfo.cpp new file mode 100644 index 0000000..c2f0821 --- /dev/null +++ b/core/src/DTO/chapterinfo.cpp @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ChapterInfo::ChapterInfo(QObject *parent) : QObject(parent) {} + +ChapterInfo *ChapterInfo::fromJSON(QJsonObject source, QObject *parent) { + ChapterInfo *instance = new ChapterInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void ChapterInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ChapterInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint64 ChapterInfo::startPositionTicks() const { return m_startPositionTicks; } +void ChapterInfo::setStartPositionTicks(qint64 newStartPositionTicks) { + m_startPositionTicks = newStartPositionTicks; + emit startPositionTicksChanged(newStartPositionTicks); +} + +QString ChapterInfo::name() const { return m_name; } +void ChapterInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString ChapterInfo::imagePath() const { return m_imagePath; } +void ChapterInfo::setImagePath(QString newImagePath) { + m_imagePath = newImagePath; + emit imagePathChanged(newImagePath); +} + +QDateTime ChapterInfo::imageDateModified() const { return m_imageDateModified; } +void ChapterInfo::setImageDateModified(QDateTime newImageDateModified) { + m_imageDateModified = newImageDateModified; + emit imageDateModifiedChanged(newImageDateModified); +} + +QString ChapterInfo::imageTag() const { return m_imageTag; } +void ChapterInfo::setImageTag(QString newImageTag) { + m_imageTag = newImageTag; + emit imageTagChanged(newImageTag); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/clientcapabilities.cpp b/core/src/DTO/clientcapabilities.cpp new file mode 100644 index 0000000..0e8128a --- /dev/null +++ b/core/src/DTO/clientcapabilities.cpp @@ -0,0 +1,115 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ClientCapabilities::ClientCapabilities(QObject *parent) : QObject(parent) {} + +ClientCapabilities *ClientCapabilities::fromJSON(QJsonObject source, QObject *parent) { + ClientCapabilities *instance = new ClientCapabilities(parent); + instance->updateFromJSON(source); + return instance; +} + +void ClientCapabilities::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ClientCapabilities::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QStringList ClientCapabilities::playableMediaTypes() const { return m_playableMediaTypes; } +void ClientCapabilities::setPlayableMediaTypes(QStringList newPlayableMediaTypes) { + m_playableMediaTypes = newPlayableMediaTypes; + emit playableMediaTypesChanged(newPlayableMediaTypes); +} + +QList ClientCapabilities::supportedCommands() const { return m_supportedCommands; } +void ClientCapabilities::setSupportedCommands(QList newSupportedCommands) { + m_supportedCommands = newSupportedCommands; + emit supportedCommandsChanged(newSupportedCommands); +} + +bool ClientCapabilities::supportsMediaControl() const { return m_supportsMediaControl; } +void ClientCapabilities::setSupportsMediaControl(bool newSupportsMediaControl) { + m_supportsMediaControl = newSupportsMediaControl; + emit supportsMediaControlChanged(newSupportsMediaControl); +} + +bool ClientCapabilities::supportsContentUploading() const { return m_supportsContentUploading; } +void ClientCapabilities::setSupportsContentUploading(bool newSupportsContentUploading) { + m_supportsContentUploading = newSupportsContentUploading; + emit supportsContentUploadingChanged(newSupportsContentUploading); +} + +QString ClientCapabilities::messageCallbackUrl() const { return m_messageCallbackUrl; } +void ClientCapabilities::setMessageCallbackUrl(QString newMessageCallbackUrl) { + m_messageCallbackUrl = newMessageCallbackUrl; + emit messageCallbackUrlChanged(newMessageCallbackUrl); +} + +bool ClientCapabilities::supportsPersistentIdentifier() const { return m_supportsPersistentIdentifier; } +void ClientCapabilities::setSupportsPersistentIdentifier(bool newSupportsPersistentIdentifier) { + m_supportsPersistentIdentifier = newSupportsPersistentIdentifier; + emit supportsPersistentIdentifierChanged(newSupportsPersistentIdentifier); +} + +bool ClientCapabilities::supportsSync() const { return m_supportsSync; } +void ClientCapabilities::setSupportsSync(bool newSupportsSync) { + m_supportsSync = newSupportsSync; + emit supportsSyncChanged(newSupportsSync); +} + +DeviceProfile * ClientCapabilities::deviceProfile() const { return m_deviceProfile; } +void ClientCapabilities::setDeviceProfile(DeviceProfile * newDeviceProfile) { + m_deviceProfile = newDeviceProfile; + emit deviceProfileChanged(newDeviceProfile); +} + +QString ClientCapabilities::appStoreUrl() const { return m_appStoreUrl; } +void ClientCapabilities::setAppStoreUrl(QString newAppStoreUrl) { + m_appStoreUrl = newAppStoreUrl; + emit appStoreUrlChanged(newAppStoreUrl); +} + +QString ClientCapabilities::iconUrl() const { return m_iconUrl; } +void ClientCapabilities::setIconUrl(QString newIconUrl) { + m_iconUrl = newIconUrl; + emit iconUrlChanged(newIconUrl); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/clientcapabilitiesdto.cpp b/core/src/DTO/clientcapabilitiesdto.cpp new file mode 100644 index 0000000..51b038a --- /dev/null +++ b/core/src/DTO/clientcapabilitiesdto.cpp @@ -0,0 +1,115 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ClientCapabilitiesDto::ClientCapabilitiesDto(QObject *parent) : QObject(parent) {} + +ClientCapabilitiesDto *ClientCapabilitiesDto::fromJSON(QJsonObject source, QObject *parent) { + ClientCapabilitiesDto *instance = new ClientCapabilitiesDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void ClientCapabilitiesDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ClientCapabilitiesDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QStringList ClientCapabilitiesDto::playableMediaTypes() const { return m_playableMediaTypes; } +void ClientCapabilitiesDto::setPlayableMediaTypes(QStringList newPlayableMediaTypes) { + m_playableMediaTypes = newPlayableMediaTypes; + emit playableMediaTypesChanged(newPlayableMediaTypes); +} + +QList ClientCapabilitiesDto::supportedCommands() const { return m_supportedCommands; } +void ClientCapabilitiesDto::setSupportedCommands(QList newSupportedCommands) { + m_supportedCommands = newSupportedCommands; + emit supportedCommandsChanged(newSupportedCommands); +} + +bool ClientCapabilitiesDto::supportsMediaControl() const { return m_supportsMediaControl; } +void ClientCapabilitiesDto::setSupportsMediaControl(bool newSupportsMediaControl) { + m_supportsMediaControl = newSupportsMediaControl; + emit supportsMediaControlChanged(newSupportsMediaControl); +} + +bool ClientCapabilitiesDto::supportsContentUploading() const { return m_supportsContentUploading; } +void ClientCapabilitiesDto::setSupportsContentUploading(bool newSupportsContentUploading) { + m_supportsContentUploading = newSupportsContentUploading; + emit supportsContentUploadingChanged(newSupportsContentUploading); +} + +QString ClientCapabilitiesDto::messageCallbackUrl() const { return m_messageCallbackUrl; } +void ClientCapabilitiesDto::setMessageCallbackUrl(QString newMessageCallbackUrl) { + m_messageCallbackUrl = newMessageCallbackUrl; + emit messageCallbackUrlChanged(newMessageCallbackUrl); +} + +bool ClientCapabilitiesDto::supportsPersistentIdentifier() const { return m_supportsPersistentIdentifier; } +void ClientCapabilitiesDto::setSupportsPersistentIdentifier(bool newSupportsPersistentIdentifier) { + m_supportsPersistentIdentifier = newSupportsPersistentIdentifier; + emit supportsPersistentIdentifierChanged(newSupportsPersistentIdentifier); +} + +bool ClientCapabilitiesDto::supportsSync() const { return m_supportsSync; } +void ClientCapabilitiesDto::setSupportsSync(bool newSupportsSync) { + m_supportsSync = newSupportsSync; + emit supportsSyncChanged(newSupportsSync); +} + +DeviceProfile * ClientCapabilitiesDto::deviceProfile() const { return m_deviceProfile; } +void ClientCapabilitiesDto::setDeviceProfile(DeviceProfile * newDeviceProfile) { + m_deviceProfile = newDeviceProfile; + emit deviceProfileChanged(newDeviceProfile); +} + +QString ClientCapabilitiesDto::appStoreUrl() const { return m_appStoreUrl; } +void ClientCapabilitiesDto::setAppStoreUrl(QString newAppStoreUrl) { + m_appStoreUrl = newAppStoreUrl; + emit appStoreUrlChanged(newAppStoreUrl); +} + +QString ClientCapabilitiesDto::iconUrl() const { return m_iconUrl; } +void ClientCapabilitiesDto::setIconUrl(QString newIconUrl) { + m_iconUrl = newIconUrl; + emit iconUrlChanged(newIconUrl); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/codecprofile.cpp b/core/src/DTO/codecprofile.cpp new file mode 100644 index 0000000..8eb1b52 --- /dev/null +++ b/core/src/DTO/codecprofile.cpp @@ -0,0 +1,85 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +CodecProfile::CodecProfile(QObject *parent) : QObject(parent) {} + +CodecProfile *CodecProfile::fromJSON(QJsonObject source, QObject *parent) { + CodecProfile *instance = new CodecProfile(parent); + instance->updateFromJSON(source); + return instance; +} + +void CodecProfile::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject CodecProfile::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +CodecType CodecProfile::type() const { return m_type; } +void CodecProfile::setType(CodecType newType) { + m_type = newType; + emit typeChanged(newType); +} + +QList CodecProfile::conditions() const { return m_conditions; } +void CodecProfile::setConditions(QList newConditions) { + m_conditions = newConditions; + emit conditionsChanged(newConditions); +} + +QList CodecProfile::applyConditions() const { return m_applyConditions; } +void CodecProfile::setApplyConditions(QList newApplyConditions) { + m_applyConditions = newApplyConditions; + emit applyConditionsChanged(newApplyConditions); +} + +QString CodecProfile::codec() const { return m_codec; } +void CodecProfile::setCodec(QString newCodec) { + m_codec = newCodec; + emit codecChanged(newCodec); +} + +QString CodecProfile::container() const { return m_container; } +void CodecProfile::setContainer(QString newContainer) { + m_container = newContainer; + emit containerChanged(newContainer); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/codectype.cpp b/core/src/DTO/codectype.cpp new file mode 100644 index 0000000..7c20326 --- /dev/null +++ b/core/src/DTO/codectype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +CodecTypeClass::CodecTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/collectioncreationresult.cpp b/core/src/DTO/collectioncreationresult.cpp new file mode 100644 index 0000000..fef9a15 --- /dev/null +++ b/core/src/DTO/collectioncreationresult.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +CollectionCreationResult::CollectionCreationResult(QObject *parent) : QObject(parent) {} + +CollectionCreationResult *CollectionCreationResult::fromJSON(QJsonObject source, QObject *parent) { + CollectionCreationResult *instance = new CollectionCreationResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void CollectionCreationResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject CollectionCreationResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString CollectionCreationResult::jellyfinId() const { return m_jellyfinId; } +void CollectionCreationResult::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/configurationpageinfo.cpp b/core/src/DTO/configurationpageinfo.cpp new file mode 100644 index 0000000..d55fedb --- /dev/null +++ b/core/src/DTO/configurationpageinfo.cpp @@ -0,0 +1,97 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ConfigurationPageInfo::ConfigurationPageInfo(QObject *parent) : QObject(parent) {} + +ConfigurationPageInfo *ConfigurationPageInfo::fromJSON(QJsonObject source, QObject *parent) { + ConfigurationPageInfo *instance = new ConfigurationPageInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void ConfigurationPageInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ConfigurationPageInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ConfigurationPageInfo::name() const { return m_name; } +void ConfigurationPageInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +bool ConfigurationPageInfo::enableInMainMenu() const { return m_enableInMainMenu; } +void ConfigurationPageInfo::setEnableInMainMenu(bool newEnableInMainMenu) { + m_enableInMainMenu = newEnableInMainMenu; + emit enableInMainMenuChanged(newEnableInMainMenu); +} + +QString ConfigurationPageInfo::menuSection() const { return m_menuSection; } +void ConfigurationPageInfo::setMenuSection(QString newMenuSection) { + m_menuSection = newMenuSection; + emit menuSectionChanged(newMenuSection); +} + +QString ConfigurationPageInfo::menuIcon() const { return m_menuIcon; } +void ConfigurationPageInfo::setMenuIcon(QString newMenuIcon) { + m_menuIcon = newMenuIcon; + emit menuIconChanged(newMenuIcon); +} + +QString ConfigurationPageInfo::displayName() const { return m_displayName; } +void ConfigurationPageInfo::setDisplayName(QString newDisplayName) { + m_displayName = newDisplayName; + emit displayNameChanged(newDisplayName); +} + +ConfigurationPageType ConfigurationPageInfo::configurationPageType() const { return m_configurationPageType; } +void ConfigurationPageInfo::setConfigurationPageType(ConfigurationPageType newConfigurationPageType) { + m_configurationPageType = newConfigurationPageType; + emit configurationPageTypeChanged(newConfigurationPageType); +} + +QString ConfigurationPageInfo::pluginId() const { return m_pluginId; } +void ConfigurationPageInfo::setPluginId(QString newPluginId) { + m_pluginId = newPluginId; + emit pluginIdChanged(newPluginId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/configurationpagetype.cpp b/core/src/DTO/configurationpagetype.cpp new file mode 100644 index 0000000..e109cb9 --- /dev/null +++ b/core/src/DTO/configurationpagetype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ConfigurationPageTypeClass::ConfigurationPageTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/containerprofile.cpp b/core/src/DTO/containerprofile.cpp new file mode 100644 index 0000000..21c28f6 --- /dev/null +++ b/core/src/DTO/containerprofile.cpp @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ContainerProfile::ContainerProfile(QObject *parent) : QObject(parent) {} + +ContainerProfile *ContainerProfile::fromJSON(QJsonObject source, QObject *parent) { + ContainerProfile *instance = new ContainerProfile(parent); + instance->updateFromJSON(source); + return instance; +} + +void ContainerProfile::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ContainerProfile::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +DlnaProfileType ContainerProfile::type() const { return m_type; } +void ContainerProfile::setType(DlnaProfileType newType) { + m_type = newType; + emit typeChanged(newType); +} + +QList ContainerProfile::conditions() const { return m_conditions; } +void ContainerProfile::setConditions(QList newConditions) { + m_conditions = newConditions; + emit conditionsChanged(newConditions); +} + +QString ContainerProfile::container() const { return m_container; } +void ContainerProfile::setContainer(QString newContainer) { + m_container = newContainer; + emit containerChanged(newContainer); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/controlresponse.cpp b/core/src/DTO/controlresponse.cpp new file mode 100644 index 0000000..2084c4d --- /dev/null +++ b/core/src/DTO/controlresponse.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ControlResponse::ControlResponse(QObject *parent) : QObject(parent) {} + +ControlResponse *ControlResponse::fromJSON(QJsonObject source, QObject *parent) { + ControlResponse *instance = new ControlResponse(parent); + instance->updateFromJSON(source); + return instance; +} + +void ControlResponse::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ControlResponse::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QJsonObject ControlResponse::headers() const { return m_headers; } +void ControlResponse::setHeaders(QJsonObject newHeaders) { + m_headers = newHeaders; + emit headersChanged(newHeaders); +} + +QString ControlResponse::xml() const { return m_xml; } +void ControlResponse::setXml(QString newXml) { + m_xml = newXml; + emit xmlChanged(newXml); +} + +bool ControlResponse::isSuccessful() const { return m_isSuccessful; } +void ControlResponse::setIsSuccessful(bool newIsSuccessful) { + m_isSuccessful = newIsSuccessful; + emit isSuccessfulChanged(newIsSuccessful); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/countryinfo.cpp b/core/src/DTO/countryinfo.cpp new file mode 100644 index 0000000..822fbe8 --- /dev/null +++ b/core/src/DTO/countryinfo.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +CountryInfo::CountryInfo(QObject *parent) : QObject(parent) {} + +CountryInfo *CountryInfo::fromJSON(QJsonObject source, QObject *parent) { + CountryInfo *instance = new CountryInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void CountryInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject CountryInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString CountryInfo::name() const { return m_name; } +void CountryInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString CountryInfo::displayName() const { return m_displayName; } +void CountryInfo::setDisplayName(QString newDisplayName) { + m_displayName = newDisplayName; + emit displayNameChanged(newDisplayName); +} + +QString CountryInfo::twoLetterISORegionName() const { return m_twoLetterISORegionName; } +void CountryInfo::setTwoLetterISORegionName(QString newTwoLetterISORegionName) { + m_twoLetterISORegionName = newTwoLetterISORegionName; + emit twoLetterISORegionNameChanged(newTwoLetterISORegionName); +} + +QString CountryInfo::threeLetterISORegionName() const { return m_threeLetterISORegionName; } +void CountryInfo::setThreeLetterISORegionName(QString newThreeLetterISORegionName) { + m_threeLetterISORegionName = newThreeLetterISORegionName; + emit threeLetterISORegionNameChanged(newThreeLetterISORegionName); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/createplaylistdto.cpp b/core/src/DTO/createplaylistdto.cpp new file mode 100644 index 0000000..2b57770 --- /dev/null +++ b/core/src/DTO/createplaylistdto.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +CreatePlaylistDto::CreatePlaylistDto(QObject *parent) : QObject(parent) {} + +CreatePlaylistDto *CreatePlaylistDto::fromJSON(QJsonObject source, QObject *parent) { + CreatePlaylistDto *instance = new CreatePlaylistDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void CreatePlaylistDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject CreatePlaylistDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString CreatePlaylistDto::name() const { return m_name; } +void CreatePlaylistDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QStringList CreatePlaylistDto::ids() const { return m_ids; } +void CreatePlaylistDto::setIds(QStringList newIds) { + m_ids = newIds; + emit idsChanged(newIds); +} + +QString CreatePlaylistDto::userId() const { return m_userId; } +void CreatePlaylistDto::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +QString CreatePlaylistDto::mediaType() const { return m_mediaType; } +void CreatePlaylistDto::setMediaType(QString newMediaType) { + m_mediaType = newMediaType; + emit mediaTypeChanged(newMediaType); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/createuserbyname.cpp b/core/src/DTO/createuserbyname.cpp new file mode 100644 index 0000000..b0b08f4 --- /dev/null +++ b/core/src/DTO/createuserbyname.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +CreateUserByName::CreateUserByName(QObject *parent) : QObject(parent) {} + +CreateUserByName *CreateUserByName::fromJSON(QJsonObject source, QObject *parent) { + CreateUserByName *instance = new CreateUserByName(parent); + instance->updateFromJSON(source); + return instance; +} + +void CreateUserByName::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject CreateUserByName::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString CreateUserByName::name() const { return m_name; } +void CreateUserByName::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString CreateUserByName::password() const { return m_password; } +void CreateUserByName::setPassword(QString newPassword) { + m_password = newPassword; + emit passwordChanged(newPassword); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/culturedto.cpp b/core/src/DTO/culturedto.cpp new file mode 100644 index 0000000..ea35630 --- /dev/null +++ b/core/src/DTO/culturedto.cpp @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +CultureDto::CultureDto(QObject *parent) : QObject(parent) {} + +CultureDto *CultureDto::fromJSON(QJsonObject source, QObject *parent) { + CultureDto *instance = new CultureDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void CultureDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject CultureDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString CultureDto::name() const { return m_name; } +void CultureDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString CultureDto::displayName() const { return m_displayName; } +void CultureDto::setDisplayName(QString newDisplayName) { + m_displayName = newDisplayName; + emit displayNameChanged(newDisplayName); +} + +QString CultureDto::twoLetterISOLanguageName() const { return m_twoLetterISOLanguageName; } +void CultureDto::setTwoLetterISOLanguageName(QString newTwoLetterISOLanguageName) { + m_twoLetterISOLanguageName = newTwoLetterISOLanguageName; + emit twoLetterISOLanguageNameChanged(newTwoLetterISOLanguageName); +} + +QString CultureDto::threeLetterISOLanguageName() const { return m_threeLetterISOLanguageName; } +void CultureDto::setThreeLetterISOLanguageName(QString newThreeLetterISOLanguageName) { + m_threeLetterISOLanguageName = newThreeLetterISOLanguageName; + emit threeLetterISOLanguageNameChanged(newThreeLetterISOLanguageName); +} + +QStringList CultureDto::threeLetterISOLanguageNames() const { return m_threeLetterISOLanguageNames; } +void CultureDto::setThreeLetterISOLanguageNames(QStringList newThreeLetterISOLanguageNames) { + m_threeLetterISOLanguageNames = newThreeLetterISOLanguageNames; + emit threeLetterISOLanguageNamesChanged(newThreeLetterISOLanguageNames); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/dayofweek.cpp b/core/src/DTO/dayofweek.cpp new file mode 100644 index 0000000..2494b96 --- /dev/null +++ b/core/src/DTO/dayofweek.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DayOfWeekClass::DayOfWeekClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/daypattern.cpp b/core/src/DTO/daypattern.cpp new file mode 100644 index 0000000..433253d --- /dev/null +++ b/core/src/DTO/daypattern.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DayPatternClass::DayPatternClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/defaultdirectorybrowserinfodto.cpp b/core/src/DTO/defaultdirectorybrowserinfodto.cpp new file mode 100644 index 0000000..f160af1 --- /dev/null +++ b/core/src/DTO/defaultdirectorybrowserinfodto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DefaultDirectoryBrowserInfoDto::DefaultDirectoryBrowserInfoDto(QObject *parent) : QObject(parent) {} + +DefaultDirectoryBrowserInfoDto *DefaultDirectoryBrowserInfoDto::fromJSON(QJsonObject source, QObject *parent) { + DefaultDirectoryBrowserInfoDto *instance = new DefaultDirectoryBrowserInfoDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void DefaultDirectoryBrowserInfoDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject DefaultDirectoryBrowserInfoDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString DefaultDirectoryBrowserInfoDto::path() const { return m_path; } +void DefaultDirectoryBrowserInfoDto::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/deviceidentification.cpp b/core/src/DTO/deviceidentification.cpp new file mode 100644 index 0000000..2447a40 --- /dev/null +++ b/core/src/DTO/deviceidentification.cpp @@ -0,0 +1,107 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DeviceIdentification::DeviceIdentification(QObject *parent) : QObject(parent) {} + +DeviceIdentification *DeviceIdentification::fromJSON(QJsonObject source, QObject *parent) { + DeviceIdentification *instance = new DeviceIdentification(parent); + instance->updateFromJSON(source); + return instance; +} + +void DeviceIdentification::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject DeviceIdentification::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString DeviceIdentification::friendlyName() const { return m_friendlyName; } +void DeviceIdentification::setFriendlyName(QString newFriendlyName) { + m_friendlyName = newFriendlyName; + emit friendlyNameChanged(newFriendlyName); +} + +QString DeviceIdentification::modelNumber() const { return m_modelNumber; } +void DeviceIdentification::setModelNumber(QString newModelNumber) { + m_modelNumber = newModelNumber; + emit modelNumberChanged(newModelNumber); +} + +QString DeviceIdentification::serialNumber() const { return m_serialNumber; } +void DeviceIdentification::setSerialNumber(QString newSerialNumber) { + m_serialNumber = newSerialNumber; + emit serialNumberChanged(newSerialNumber); +} + +QString DeviceIdentification::modelName() const { return m_modelName; } +void DeviceIdentification::setModelName(QString newModelName) { + m_modelName = newModelName; + emit modelNameChanged(newModelName); +} + +QString DeviceIdentification::modelDescription() const { return m_modelDescription; } +void DeviceIdentification::setModelDescription(QString newModelDescription) { + m_modelDescription = newModelDescription; + emit modelDescriptionChanged(newModelDescription); +} + +QString DeviceIdentification::modelUrl() const { return m_modelUrl; } +void DeviceIdentification::setModelUrl(QString newModelUrl) { + m_modelUrl = newModelUrl; + emit modelUrlChanged(newModelUrl); +} + +QString DeviceIdentification::manufacturer() const { return m_manufacturer; } +void DeviceIdentification::setManufacturer(QString newManufacturer) { + m_manufacturer = newManufacturer; + emit manufacturerChanged(newManufacturer); +} + +QString DeviceIdentification::manufacturerUrl() const { return m_manufacturerUrl; } +void DeviceIdentification::setManufacturerUrl(QString newManufacturerUrl) { + m_manufacturerUrl = newManufacturerUrl; + emit manufacturerUrlChanged(newManufacturerUrl); +} + +QList DeviceIdentification::headers() const { return m_headers; } +void DeviceIdentification::setHeaders(QList newHeaders) { + m_headers = newHeaders; + emit headersChanged(newHeaders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/deviceinfo.cpp b/core/src/DTO/deviceinfo.cpp new file mode 100644 index 0000000..22b28f1 --- /dev/null +++ b/core/src/DTO/deviceinfo.cpp @@ -0,0 +1,107 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DeviceInfo::DeviceInfo(QObject *parent) : QObject(parent) {} + +DeviceInfo *DeviceInfo::fromJSON(QJsonObject source, QObject *parent) { + DeviceInfo *instance = new DeviceInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void DeviceInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject DeviceInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString DeviceInfo::name() const { return m_name; } +void DeviceInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString DeviceInfo::jellyfinId() const { return m_jellyfinId; } +void DeviceInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString DeviceInfo::lastUserName() const { return m_lastUserName; } +void DeviceInfo::setLastUserName(QString newLastUserName) { + m_lastUserName = newLastUserName; + emit lastUserNameChanged(newLastUserName); +} + +QString DeviceInfo::appName() const { return m_appName; } +void DeviceInfo::setAppName(QString newAppName) { + m_appName = newAppName; + emit appNameChanged(newAppName); +} + +QString DeviceInfo::appVersion() const { return m_appVersion; } +void DeviceInfo::setAppVersion(QString newAppVersion) { + m_appVersion = newAppVersion; + emit appVersionChanged(newAppVersion); +} + +QString DeviceInfo::lastUserId() const { return m_lastUserId; } +void DeviceInfo::setLastUserId(QString newLastUserId) { + m_lastUserId = newLastUserId; + emit lastUserIdChanged(newLastUserId); +} + +QDateTime DeviceInfo::dateLastActivity() const { return m_dateLastActivity; } +void DeviceInfo::setDateLastActivity(QDateTime newDateLastActivity) { + m_dateLastActivity = newDateLastActivity; + emit dateLastActivityChanged(newDateLastActivity); +} + +ClientCapabilities * DeviceInfo::capabilities() const { return m_capabilities; } +void DeviceInfo::setCapabilities(ClientCapabilities * newCapabilities) { + m_capabilities = newCapabilities; + emit capabilitiesChanged(newCapabilities); +} + +QString DeviceInfo::iconUrl() const { return m_iconUrl; } +void DeviceInfo::setIconUrl(QString newIconUrl) { + m_iconUrl = newIconUrl; + emit iconUrlChanged(newIconUrl); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/deviceinfoqueryresult.cpp b/core/src/DTO/deviceinfoqueryresult.cpp new file mode 100644 index 0000000..4acd4c1 --- /dev/null +++ b/core/src/DTO/deviceinfoqueryresult.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DeviceInfoQueryResult::DeviceInfoQueryResult(QObject *parent) : QObject(parent) {} + +DeviceInfoQueryResult *DeviceInfoQueryResult::fromJSON(QJsonObject source, QObject *parent) { + DeviceInfoQueryResult *instance = new DeviceInfoQueryResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void DeviceInfoQueryResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject DeviceInfoQueryResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList DeviceInfoQueryResult::items() const { return m_items; } +void DeviceInfoQueryResult::setItems(QList newItems) { + m_items = newItems; + emit itemsChanged(newItems); +} + +qint32 DeviceInfoQueryResult::totalRecordCount() const { return m_totalRecordCount; } +void DeviceInfoQueryResult::setTotalRecordCount(qint32 newTotalRecordCount) { + m_totalRecordCount = newTotalRecordCount; + emit totalRecordCountChanged(newTotalRecordCount); +} + +qint32 DeviceInfoQueryResult::startIndex() const { return m_startIndex; } +void DeviceInfoQueryResult::setStartIndex(qint32 newStartIndex) { + m_startIndex = newStartIndex; + emit startIndexChanged(newStartIndex); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/deviceoptions.cpp b/core/src/DTO/deviceoptions.cpp new file mode 100644 index 0000000..7446dba --- /dev/null +++ b/core/src/DTO/deviceoptions.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DeviceOptions::DeviceOptions(QObject *parent) : QObject(parent) {} + +DeviceOptions *DeviceOptions::fromJSON(QJsonObject source, QObject *parent) { + DeviceOptions *instance = new DeviceOptions(parent); + instance->updateFromJSON(source); + return instance; +} + +void DeviceOptions::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject DeviceOptions::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString DeviceOptions::customName() const { return m_customName; } +void DeviceOptions::setCustomName(QString newCustomName) { + m_customName = newCustomName; + emit customNameChanged(newCustomName); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/deviceprofile.cpp b/core/src/DTO/deviceprofile.cpp new file mode 100644 index 0000000..2552514 --- /dev/null +++ b/core/src/DTO/deviceprofile.cpp @@ -0,0 +1,287 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DeviceProfile::DeviceProfile(QObject *parent) : QObject(parent) {} + +DeviceProfile *DeviceProfile::fromJSON(QJsonObject source, QObject *parent) { + DeviceProfile *instance = new DeviceProfile(parent); + instance->updateFromJSON(source); + return instance; +} + +void DeviceProfile::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject DeviceProfile::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString DeviceProfile::name() const { return m_name; } +void DeviceProfile::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString DeviceProfile::jellyfinId() const { return m_jellyfinId; } +void DeviceProfile::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +DeviceIdentification * DeviceProfile::identification() const { return m_identification; } +void DeviceProfile::setIdentification(DeviceIdentification * newIdentification) { + m_identification = newIdentification; + emit identificationChanged(newIdentification); +} + +QString DeviceProfile::friendlyName() const { return m_friendlyName; } +void DeviceProfile::setFriendlyName(QString newFriendlyName) { + m_friendlyName = newFriendlyName; + emit friendlyNameChanged(newFriendlyName); +} + +QString DeviceProfile::manufacturer() const { return m_manufacturer; } +void DeviceProfile::setManufacturer(QString newManufacturer) { + m_manufacturer = newManufacturer; + emit manufacturerChanged(newManufacturer); +} + +QString DeviceProfile::manufacturerUrl() const { return m_manufacturerUrl; } +void DeviceProfile::setManufacturerUrl(QString newManufacturerUrl) { + m_manufacturerUrl = newManufacturerUrl; + emit manufacturerUrlChanged(newManufacturerUrl); +} + +QString DeviceProfile::modelName() const { return m_modelName; } +void DeviceProfile::setModelName(QString newModelName) { + m_modelName = newModelName; + emit modelNameChanged(newModelName); +} + +QString DeviceProfile::modelDescription() const { return m_modelDescription; } +void DeviceProfile::setModelDescription(QString newModelDescription) { + m_modelDescription = newModelDescription; + emit modelDescriptionChanged(newModelDescription); +} + +QString DeviceProfile::modelNumber() const { return m_modelNumber; } +void DeviceProfile::setModelNumber(QString newModelNumber) { + m_modelNumber = newModelNumber; + emit modelNumberChanged(newModelNumber); +} + +QString DeviceProfile::modelUrl() const { return m_modelUrl; } +void DeviceProfile::setModelUrl(QString newModelUrl) { + m_modelUrl = newModelUrl; + emit modelUrlChanged(newModelUrl); +} + +QString DeviceProfile::serialNumber() const { return m_serialNumber; } +void DeviceProfile::setSerialNumber(QString newSerialNumber) { + m_serialNumber = newSerialNumber; + emit serialNumberChanged(newSerialNumber); +} + +bool DeviceProfile::enableAlbumArtInDidl() const { return m_enableAlbumArtInDidl; } +void DeviceProfile::setEnableAlbumArtInDidl(bool newEnableAlbumArtInDidl) { + m_enableAlbumArtInDidl = newEnableAlbumArtInDidl; + emit enableAlbumArtInDidlChanged(newEnableAlbumArtInDidl); +} + +bool DeviceProfile::enableSingleAlbumArtLimit() const { return m_enableSingleAlbumArtLimit; } +void DeviceProfile::setEnableSingleAlbumArtLimit(bool newEnableSingleAlbumArtLimit) { + m_enableSingleAlbumArtLimit = newEnableSingleAlbumArtLimit; + emit enableSingleAlbumArtLimitChanged(newEnableSingleAlbumArtLimit); +} + +bool DeviceProfile::enableSingleSubtitleLimit() const { return m_enableSingleSubtitleLimit; } +void DeviceProfile::setEnableSingleSubtitleLimit(bool newEnableSingleSubtitleLimit) { + m_enableSingleSubtitleLimit = newEnableSingleSubtitleLimit; + emit enableSingleSubtitleLimitChanged(newEnableSingleSubtitleLimit); +} + +QString DeviceProfile::supportedMediaTypes() const { return m_supportedMediaTypes; } +void DeviceProfile::setSupportedMediaTypes(QString newSupportedMediaTypes) { + m_supportedMediaTypes = newSupportedMediaTypes; + emit supportedMediaTypesChanged(newSupportedMediaTypes); +} + +QString DeviceProfile::userId() const { return m_userId; } +void DeviceProfile::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +QString DeviceProfile::albumArtPn() const { return m_albumArtPn; } +void DeviceProfile::setAlbumArtPn(QString newAlbumArtPn) { + m_albumArtPn = newAlbumArtPn; + emit albumArtPnChanged(newAlbumArtPn); +} + +qint32 DeviceProfile::maxAlbumArtWidth() const { return m_maxAlbumArtWidth; } +void DeviceProfile::setMaxAlbumArtWidth(qint32 newMaxAlbumArtWidth) { + m_maxAlbumArtWidth = newMaxAlbumArtWidth; + emit maxAlbumArtWidthChanged(newMaxAlbumArtWidth); +} + +qint32 DeviceProfile::maxAlbumArtHeight() const { return m_maxAlbumArtHeight; } +void DeviceProfile::setMaxAlbumArtHeight(qint32 newMaxAlbumArtHeight) { + m_maxAlbumArtHeight = newMaxAlbumArtHeight; + emit maxAlbumArtHeightChanged(newMaxAlbumArtHeight); +} + +qint32 DeviceProfile::maxIconWidth() const { return m_maxIconWidth; } +void DeviceProfile::setMaxIconWidth(qint32 newMaxIconWidth) { + m_maxIconWidth = newMaxIconWidth; + emit maxIconWidthChanged(newMaxIconWidth); +} + +qint32 DeviceProfile::maxIconHeight() const { return m_maxIconHeight; } +void DeviceProfile::setMaxIconHeight(qint32 newMaxIconHeight) { + m_maxIconHeight = newMaxIconHeight; + emit maxIconHeightChanged(newMaxIconHeight); +} + +qint32 DeviceProfile::maxStreamingBitrate() const { return m_maxStreamingBitrate; } +void DeviceProfile::setMaxStreamingBitrate(qint32 newMaxStreamingBitrate) { + m_maxStreamingBitrate = newMaxStreamingBitrate; + emit maxStreamingBitrateChanged(newMaxStreamingBitrate); +} + +qint32 DeviceProfile::maxStaticBitrate() const { return m_maxStaticBitrate; } +void DeviceProfile::setMaxStaticBitrate(qint32 newMaxStaticBitrate) { + m_maxStaticBitrate = newMaxStaticBitrate; + emit maxStaticBitrateChanged(newMaxStaticBitrate); +} + +qint32 DeviceProfile::musicStreamingTranscodingBitrate() const { return m_musicStreamingTranscodingBitrate; } +void DeviceProfile::setMusicStreamingTranscodingBitrate(qint32 newMusicStreamingTranscodingBitrate) { + m_musicStreamingTranscodingBitrate = newMusicStreamingTranscodingBitrate; + emit musicStreamingTranscodingBitrateChanged(newMusicStreamingTranscodingBitrate); +} + +qint32 DeviceProfile::maxStaticMusicBitrate() const { return m_maxStaticMusicBitrate; } +void DeviceProfile::setMaxStaticMusicBitrate(qint32 newMaxStaticMusicBitrate) { + m_maxStaticMusicBitrate = newMaxStaticMusicBitrate; + emit maxStaticMusicBitrateChanged(newMaxStaticMusicBitrate); +} + +QString DeviceProfile::sonyAggregationFlags() const { return m_sonyAggregationFlags; } +void DeviceProfile::setSonyAggregationFlags(QString newSonyAggregationFlags) { + m_sonyAggregationFlags = newSonyAggregationFlags; + emit sonyAggregationFlagsChanged(newSonyAggregationFlags); +} + +QString DeviceProfile::protocolInfo() const { return m_protocolInfo; } +void DeviceProfile::setProtocolInfo(QString newProtocolInfo) { + m_protocolInfo = newProtocolInfo; + emit protocolInfoChanged(newProtocolInfo); +} + +qint32 DeviceProfile::timelineOffsetSeconds() const { return m_timelineOffsetSeconds; } +void DeviceProfile::setTimelineOffsetSeconds(qint32 newTimelineOffsetSeconds) { + m_timelineOffsetSeconds = newTimelineOffsetSeconds; + emit timelineOffsetSecondsChanged(newTimelineOffsetSeconds); +} + +bool DeviceProfile::requiresPlainVideoItems() const { return m_requiresPlainVideoItems; } +void DeviceProfile::setRequiresPlainVideoItems(bool newRequiresPlainVideoItems) { + m_requiresPlainVideoItems = newRequiresPlainVideoItems; + emit requiresPlainVideoItemsChanged(newRequiresPlainVideoItems); +} + +bool DeviceProfile::requiresPlainFolders() const { return m_requiresPlainFolders; } +void DeviceProfile::setRequiresPlainFolders(bool newRequiresPlainFolders) { + m_requiresPlainFolders = newRequiresPlainFolders; + emit requiresPlainFoldersChanged(newRequiresPlainFolders); +} + +bool DeviceProfile::enableMSMediaReceiverRegistrar() const { return m_enableMSMediaReceiverRegistrar; } +void DeviceProfile::setEnableMSMediaReceiverRegistrar(bool newEnableMSMediaReceiverRegistrar) { + m_enableMSMediaReceiverRegistrar = newEnableMSMediaReceiverRegistrar; + emit enableMSMediaReceiverRegistrarChanged(newEnableMSMediaReceiverRegistrar); +} + +bool DeviceProfile::ignoreTranscodeByteRangeRequests() const { return m_ignoreTranscodeByteRangeRequests; } +void DeviceProfile::setIgnoreTranscodeByteRangeRequests(bool newIgnoreTranscodeByteRangeRequests) { + m_ignoreTranscodeByteRangeRequests = newIgnoreTranscodeByteRangeRequests; + emit ignoreTranscodeByteRangeRequestsChanged(newIgnoreTranscodeByteRangeRequests); +} + +QList DeviceProfile::xmlRootAttributes() const { return m_xmlRootAttributes; } +void DeviceProfile::setXmlRootAttributes(QList newXmlRootAttributes) { + m_xmlRootAttributes = newXmlRootAttributes; + emit xmlRootAttributesChanged(newXmlRootAttributes); +} + +QList DeviceProfile::directPlayProfiles() const { return m_directPlayProfiles; } +void DeviceProfile::setDirectPlayProfiles(QList newDirectPlayProfiles) { + m_directPlayProfiles = newDirectPlayProfiles; + emit directPlayProfilesChanged(newDirectPlayProfiles); +} + +QList DeviceProfile::transcodingProfiles() const { return m_transcodingProfiles; } +void DeviceProfile::setTranscodingProfiles(QList newTranscodingProfiles) { + m_transcodingProfiles = newTranscodingProfiles; + emit transcodingProfilesChanged(newTranscodingProfiles); +} + +QList DeviceProfile::containerProfiles() const { return m_containerProfiles; } +void DeviceProfile::setContainerProfiles(QList newContainerProfiles) { + m_containerProfiles = newContainerProfiles; + emit containerProfilesChanged(newContainerProfiles); +} + +QList DeviceProfile::codecProfiles() const { return m_codecProfiles; } +void DeviceProfile::setCodecProfiles(QList newCodecProfiles) { + m_codecProfiles = newCodecProfiles; + emit codecProfilesChanged(newCodecProfiles); +} + +QList DeviceProfile::responseProfiles() const { return m_responseProfiles; } +void DeviceProfile::setResponseProfiles(QList newResponseProfiles) { + m_responseProfiles = newResponseProfiles; + emit responseProfilesChanged(newResponseProfiles); +} + +QList DeviceProfile::subtitleProfiles() const { return m_subtitleProfiles; } +void DeviceProfile::setSubtitleProfiles(QList newSubtitleProfiles) { + m_subtitleProfiles = newSubtitleProfiles; + emit subtitleProfilesChanged(newSubtitleProfiles); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/deviceprofileinfo.cpp b/core/src/DTO/deviceprofileinfo.cpp new file mode 100644 index 0000000..6ff07ce --- /dev/null +++ b/core/src/DTO/deviceprofileinfo.cpp @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +DeviceProfileInfo::DeviceProfileInfo(QObject *parent) : QObject(parent) {} + +DeviceProfileInfo *DeviceProfileInfo::fromJSON(QJsonObject source, QObject *parent) { + DeviceProfileInfo *instance = new DeviceProfileInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void DeviceProfileInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject DeviceProfileInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString DeviceProfileInfo::jellyfinId() const { return m_jellyfinId; } +void DeviceProfileInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString DeviceProfileInfo::name() const { return m_name; } +void DeviceProfileInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +DeviceProfileType DeviceProfileInfo::type() const { return m_type; } +void DeviceProfileInfo::setType(DeviceProfileType newType) { + m_type = newType; + emit typeChanged(newType); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/deviceprofiletype.cpp b/core/src/DTO/deviceprofiletype.cpp new file mode 100644 index 0000000..cc1dc27 --- /dev/null +++ b/core/src/DTO/deviceprofiletype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DeviceProfileTypeClass::DeviceProfileTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/directplayprofile.cpp b/core/src/DTO/directplayprofile.cpp new file mode 100644 index 0000000..f6645e8 --- /dev/null +++ b/core/src/DTO/directplayprofile.cpp @@ -0,0 +1,79 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +DirectPlayProfile::DirectPlayProfile(QObject *parent) : QObject(parent) {} + +DirectPlayProfile *DirectPlayProfile::fromJSON(QJsonObject source, QObject *parent) { + DirectPlayProfile *instance = new DirectPlayProfile(parent); + instance->updateFromJSON(source); + return instance; +} + +void DirectPlayProfile::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject DirectPlayProfile::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString DirectPlayProfile::container() const { return m_container; } +void DirectPlayProfile::setContainer(QString newContainer) { + m_container = newContainer; + emit containerChanged(newContainer); +} + +QString DirectPlayProfile::audioCodec() const { return m_audioCodec; } +void DirectPlayProfile::setAudioCodec(QString newAudioCodec) { + m_audioCodec = newAudioCodec; + emit audioCodecChanged(newAudioCodec); +} + +QString DirectPlayProfile::videoCodec() const { return m_videoCodec; } +void DirectPlayProfile::setVideoCodec(QString newVideoCodec) { + m_videoCodec = newVideoCodec; + emit videoCodecChanged(newVideoCodec); +} + +DlnaProfileType DirectPlayProfile::type() const { return m_type; } +void DirectPlayProfile::setType(DlnaProfileType newType) { + m_type = newType; + emit typeChanged(newType); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/displaypreferencesdto.cpp b/core/src/DTO/displaypreferencesdto.cpp new file mode 100644 index 0000000..39eadcb --- /dev/null +++ b/core/src/DTO/displaypreferencesdto.cpp @@ -0,0 +1,140 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +DisplayPreferencesDto::DisplayPreferencesDto(QObject *parent) : QObject(parent) {} + +DisplayPreferencesDto *DisplayPreferencesDto::fromJSON(QJsonObject source, QObject *parent) { + DisplayPreferencesDto *instance = new DisplayPreferencesDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void DisplayPreferencesDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject DisplayPreferencesDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString DisplayPreferencesDto::jellyfinId() const { return m_jellyfinId; } +void DisplayPreferencesDto::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString DisplayPreferencesDto::viewType() const { return m_viewType; } +void DisplayPreferencesDto::setViewType(QString newViewType) { + m_viewType = newViewType; + emit viewTypeChanged(newViewType); +} + +QString DisplayPreferencesDto::sortBy() const { return m_sortBy; } +void DisplayPreferencesDto::setSortBy(QString newSortBy) { + m_sortBy = newSortBy; + emit sortByChanged(newSortBy); +} + +QString DisplayPreferencesDto::indexBy() const { return m_indexBy; } +void DisplayPreferencesDto::setIndexBy(QString newIndexBy) { + m_indexBy = newIndexBy; + emit indexByChanged(newIndexBy); +} + +bool DisplayPreferencesDto::rememberIndexing() const { return m_rememberIndexing; } +void DisplayPreferencesDto::setRememberIndexing(bool newRememberIndexing) { + m_rememberIndexing = newRememberIndexing; + emit rememberIndexingChanged(newRememberIndexing); +} + +qint32 DisplayPreferencesDto::primaryImageHeight() const { return m_primaryImageHeight; } +void DisplayPreferencesDto::setPrimaryImageHeight(qint32 newPrimaryImageHeight) { + m_primaryImageHeight = newPrimaryImageHeight; + emit primaryImageHeightChanged(newPrimaryImageHeight); +} + +qint32 DisplayPreferencesDto::primaryImageWidth() const { return m_primaryImageWidth; } +void DisplayPreferencesDto::setPrimaryImageWidth(qint32 newPrimaryImageWidth) { + m_primaryImageWidth = newPrimaryImageWidth; + emit primaryImageWidthChanged(newPrimaryImageWidth); +} + +QJsonObject DisplayPreferencesDto::customPrefs() const { return m_customPrefs; } +void DisplayPreferencesDto::setCustomPrefs(QJsonObject newCustomPrefs) { + m_customPrefs = newCustomPrefs; + emit customPrefsChanged(newCustomPrefs); +} + +ScrollDirection DisplayPreferencesDto::scrollDirection() const { return m_scrollDirection; } +void DisplayPreferencesDto::setScrollDirection(ScrollDirection newScrollDirection) { + m_scrollDirection = newScrollDirection; + emit scrollDirectionChanged(newScrollDirection); +} + +bool DisplayPreferencesDto::showBackdrop() const { return m_showBackdrop; } +void DisplayPreferencesDto::setShowBackdrop(bool newShowBackdrop) { + m_showBackdrop = newShowBackdrop; + emit showBackdropChanged(newShowBackdrop); +} + +bool DisplayPreferencesDto::rememberSorting() const { return m_rememberSorting; } +void DisplayPreferencesDto::setRememberSorting(bool newRememberSorting) { + m_rememberSorting = newRememberSorting; + emit rememberSortingChanged(newRememberSorting); +} + +SortOrder DisplayPreferencesDto::sortOrder() const { return m_sortOrder; } +void DisplayPreferencesDto::setSortOrder(SortOrder newSortOrder) { + m_sortOrder = newSortOrder; + emit sortOrderChanged(newSortOrder); +} + +bool DisplayPreferencesDto::showSidebar() const { return m_showSidebar; } +void DisplayPreferencesDto::setShowSidebar(bool newShowSidebar) { + m_showSidebar = newShowSidebar; + emit showSidebarChanged(newShowSidebar); +} + +QString DisplayPreferencesDto::client() const { return m_client; } +void DisplayPreferencesDto::setClient(QString newClient) { + m_client = newClient; + emit clientChanged(newClient); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/dlnaprofiletype.cpp b/core/src/DTO/dlnaprofiletype.cpp new file mode 100644 index 0000000..215f873 --- /dev/null +++ b/core/src/DTO/dlnaprofiletype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DlnaProfileTypeClass::DlnaProfileTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/dynamicdayofweek.cpp b/core/src/DTO/dynamicdayofweek.cpp new file mode 100644 index 0000000..b5c2269 --- /dev/null +++ b/core/src/DTO/dynamicdayofweek.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +DynamicDayOfWeekClass::DynamicDayOfWeekClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/encodingcontext.cpp b/core/src/DTO/encodingcontext.cpp new file mode 100644 index 0000000..dd7c57a --- /dev/null +++ b/core/src/DTO/encodingcontext.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +EncodingContextClass::EncodingContextClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/endpointinfo.cpp b/core/src/DTO/endpointinfo.cpp new file mode 100644 index 0000000..2bf6f7d --- /dev/null +++ b/core/src/DTO/endpointinfo.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +EndPointInfo::EndPointInfo(QObject *parent) : QObject(parent) {} + +EndPointInfo *EndPointInfo::fromJSON(QJsonObject source, QObject *parent) { + EndPointInfo *instance = new EndPointInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void EndPointInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject EndPointInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +bool EndPointInfo::isLocal() const { return m_isLocal; } +void EndPointInfo::setIsLocal(bool newIsLocal) { + m_isLocal = newIsLocal; + emit isLocalChanged(newIsLocal); +} + +bool EndPointInfo::isInNetwork() const { return m_isInNetwork; } +void EndPointInfo::setIsInNetwork(bool newIsInNetwork) { + m_isInNetwork = newIsInNetwork; + emit isInNetworkChanged(newIsInNetwork); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/externalidinfo.cpp b/core/src/DTO/externalidinfo.cpp new file mode 100644 index 0000000..87e203b --- /dev/null +++ b/core/src/DTO/externalidinfo.cpp @@ -0,0 +1,79 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ExternalIdInfo::ExternalIdInfo(QObject *parent) : QObject(parent) {} + +ExternalIdInfo *ExternalIdInfo::fromJSON(QJsonObject source, QObject *parent) { + ExternalIdInfo *instance = new ExternalIdInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void ExternalIdInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ExternalIdInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ExternalIdInfo::name() const { return m_name; } +void ExternalIdInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString ExternalIdInfo::key() const { return m_key; } +void ExternalIdInfo::setKey(QString newKey) { + m_key = newKey; + emit keyChanged(newKey); +} + +ExternalIdMediaType ExternalIdInfo::type() const { return m_type; } +void ExternalIdInfo::setType(ExternalIdMediaType newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString ExternalIdInfo::urlFormatString() const { return m_urlFormatString; } +void ExternalIdInfo::setUrlFormatString(QString newUrlFormatString) { + m_urlFormatString = newUrlFormatString; + emit urlFormatStringChanged(newUrlFormatString); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/externalidmediatype.cpp b/core/src/DTO/externalidmediatype.cpp new file mode 100644 index 0000000..c9a31a3 --- /dev/null +++ b/core/src/DTO/externalidmediatype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ExternalIdMediaTypeClass::ExternalIdMediaTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/externalurl.cpp b/core/src/DTO/externalurl.cpp new file mode 100644 index 0000000..5d12cd7 --- /dev/null +++ b/core/src/DTO/externalurl.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ExternalUrl::ExternalUrl(QObject *parent) : QObject(parent) {} + +ExternalUrl *ExternalUrl::fromJSON(QJsonObject source, QObject *parent) { + ExternalUrl *instance = new ExternalUrl(parent); + instance->updateFromJSON(source); + return instance; +} + +void ExternalUrl::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ExternalUrl::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ExternalUrl::name() const { return m_name; } +void ExternalUrl::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString ExternalUrl::url() const { return m_url; } +void ExternalUrl::setUrl(QString newUrl) { + m_url = newUrl; + emit urlChanged(newUrl); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/ffmpeglocation.cpp b/core/src/DTO/ffmpeglocation.cpp new file mode 100644 index 0000000..3080c7c --- /dev/null +++ b/core/src/DTO/ffmpeglocation.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +FFmpegLocationClass::FFmpegLocationClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/filesystementryinfo.cpp b/core/src/DTO/filesystementryinfo.cpp new file mode 100644 index 0000000..ef2e3b6 --- /dev/null +++ b/core/src/DTO/filesystementryinfo.cpp @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +FileSystemEntryInfo::FileSystemEntryInfo(QObject *parent) : QObject(parent) {} + +FileSystemEntryInfo *FileSystemEntryInfo::fromJSON(QJsonObject source, QObject *parent) { + FileSystemEntryInfo *instance = new FileSystemEntryInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void FileSystemEntryInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject FileSystemEntryInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString FileSystemEntryInfo::name() const { return m_name; } +void FileSystemEntryInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString FileSystemEntryInfo::path() const { return m_path; } +void FileSystemEntryInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +FileSystemEntryType FileSystemEntryInfo::type() const { return m_type; } +void FileSystemEntryInfo::setType(FileSystemEntryType newType) { + m_type = newType; + emit typeChanged(newType); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/filesystementrytype.cpp b/core/src/DTO/filesystementrytype.cpp new file mode 100644 index 0000000..9b73687 --- /dev/null +++ b/core/src/DTO/filesystementrytype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +FileSystemEntryTypeClass::FileSystemEntryTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/fontfile.cpp b/core/src/DTO/fontfile.cpp new file mode 100644 index 0000000..a5a7d8b --- /dev/null +++ b/core/src/DTO/fontfile.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +FontFile::FontFile(QObject *parent) : QObject(parent) {} + +FontFile *FontFile::fromJSON(QJsonObject source, QObject *parent) { + FontFile *instance = new FontFile(parent); + instance->updateFromJSON(source); + return instance; +} + +void FontFile::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject FontFile::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString FontFile::name() const { return m_name; } +void FontFile::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +qint64 FontFile::size() const { return m_size; } +void FontFile::setSize(qint64 newSize) { + m_size = newSize; + emit sizeChanged(newSize); +} + +QDateTime FontFile::dateCreated() const { return m_dateCreated; } +void FontFile::setDateCreated(QDateTime newDateCreated) { + m_dateCreated = newDateCreated; + emit dateCreatedChanged(newDateCreated); +} + +QDateTime FontFile::dateModified() const { return m_dateModified; } +void FontFile::setDateModified(QDateTime newDateModified) { + m_dateModified = newDateModified; + emit dateModifiedChanged(newDateModified); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/forgotpasswordaction.cpp b/core/src/DTO/forgotpasswordaction.cpp new file mode 100644 index 0000000..25d2fc2 --- /dev/null +++ b/core/src/DTO/forgotpasswordaction.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ForgotPasswordActionClass::ForgotPasswordActionClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/forgotpassworddto.cpp b/core/src/DTO/forgotpassworddto.cpp new file mode 100644 index 0000000..1bada60 --- /dev/null +++ b/core/src/DTO/forgotpassworddto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ForgotPasswordDto::ForgotPasswordDto(QObject *parent) : QObject(parent) {} + +ForgotPasswordDto *ForgotPasswordDto::fromJSON(QJsonObject source, QObject *parent) { + ForgotPasswordDto *instance = new ForgotPasswordDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void ForgotPasswordDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ForgotPasswordDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ForgotPasswordDto::enteredUsername() const { return m_enteredUsername; } +void ForgotPasswordDto::setEnteredUsername(QString newEnteredUsername) { + m_enteredUsername = newEnteredUsername; + emit enteredUsernameChanged(newEnteredUsername); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/forgotpasswordresult.cpp b/core/src/DTO/forgotpasswordresult.cpp new file mode 100644 index 0000000..b18a27d --- /dev/null +++ b/core/src/DTO/forgotpasswordresult.cpp @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ForgotPasswordResult::ForgotPasswordResult(QObject *parent) : QObject(parent) {} + +ForgotPasswordResult *ForgotPasswordResult::fromJSON(QJsonObject source, QObject *parent) { + ForgotPasswordResult *instance = new ForgotPasswordResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void ForgotPasswordResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ForgotPasswordResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +ForgotPasswordAction ForgotPasswordResult::action() const { return m_action; } +void ForgotPasswordResult::setAction(ForgotPasswordAction newAction) { + m_action = newAction; + emit actionChanged(newAction); +} + +QString ForgotPasswordResult::pinFile() const { return m_pinFile; } +void ForgotPasswordResult::setPinFile(QString newPinFile) { + m_pinFile = newPinFile; + emit pinFileChanged(newPinFile); +} + +QDateTime ForgotPasswordResult::pinExpirationDate() const { return m_pinExpirationDate; } +void ForgotPasswordResult::setPinExpirationDate(QDateTime newPinExpirationDate) { + m_pinExpirationDate = newPinExpirationDate; + emit pinExpirationDateChanged(newPinExpirationDate); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/generalcommand.cpp b/core/src/DTO/generalcommand.cpp new file mode 100644 index 0000000..bf541fd --- /dev/null +++ b/core/src/DTO/generalcommand.cpp @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +GeneralCommand::GeneralCommand(QObject *parent) : QObject(parent) {} + +GeneralCommand *GeneralCommand::fromJSON(QJsonObject source, QObject *parent) { + GeneralCommand *instance = new GeneralCommand(parent); + instance->updateFromJSON(source); + return instance; +} + +void GeneralCommand::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject GeneralCommand::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +GeneralCommandType GeneralCommand::name() const { return m_name; } +void GeneralCommand::setName(GeneralCommandType newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString GeneralCommand::controllingUserId() const { return m_controllingUserId; } +void GeneralCommand::setControllingUserId(QString newControllingUserId) { + m_controllingUserId = newControllingUserId; + emit controllingUserIdChanged(newControllingUserId); +} + +QJsonObject GeneralCommand::arguments() const { return m_arguments; } +void GeneralCommand::setArguments(QJsonObject newArguments) { + m_arguments = newArguments; + emit argumentsChanged(newArguments); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/generalcommandtype.cpp b/core/src/DTO/generalcommandtype.cpp new file mode 100644 index 0000000..de71c7e --- /dev/null +++ b/core/src/DTO/generalcommandtype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +GeneralCommandTypeClass::GeneralCommandTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/getprogramsdto.cpp b/core/src/DTO/getprogramsdto.cpp new file mode 100644 index 0000000..62876ea --- /dev/null +++ b/core/src/DTO/getprogramsdto.cpp @@ -0,0 +1,218 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +GetProgramsDto::GetProgramsDto(QObject *parent) : QObject(parent) {} + +GetProgramsDto *GetProgramsDto::fromJSON(QJsonObject source, QObject *parent) { + GetProgramsDto *instance = new GetProgramsDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void GetProgramsDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject GetProgramsDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QStringList GetProgramsDto::channelIds() const { return m_channelIds; } +void GetProgramsDto::setChannelIds(QStringList newChannelIds) { + m_channelIds = newChannelIds; + emit channelIdsChanged(newChannelIds); +} + +QString GetProgramsDto::userId() const { return m_userId; } +void GetProgramsDto::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +QDateTime GetProgramsDto::minStartDate() const { return m_minStartDate; } +void GetProgramsDto::setMinStartDate(QDateTime newMinStartDate) { + m_minStartDate = newMinStartDate; + emit minStartDateChanged(newMinStartDate); +} + +bool GetProgramsDto::hasAired() const { return m_hasAired; } +void GetProgramsDto::setHasAired(bool newHasAired) { + m_hasAired = newHasAired; + emit hasAiredChanged(newHasAired); +} + +bool GetProgramsDto::isAiring() const { return m_isAiring; } +void GetProgramsDto::setIsAiring(bool newIsAiring) { + m_isAiring = newIsAiring; + emit isAiringChanged(newIsAiring); +} + +QDateTime GetProgramsDto::maxStartDate() const { return m_maxStartDate; } +void GetProgramsDto::setMaxStartDate(QDateTime newMaxStartDate) { + m_maxStartDate = newMaxStartDate; + emit maxStartDateChanged(newMaxStartDate); +} + +QDateTime GetProgramsDto::minEndDate() const { return m_minEndDate; } +void GetProgramsDto::setMinEndDate(QDateTime newMinEndDate) { + m_minEndDate = newMinEndDate; + emit minEndDateChanged(newMinEndDate); +} + +QDateTime GetProgramsDto::maxEndDate() const { return m_maxEndDate; } +void GetProgramsDto::setMaxEndDate(QDateTime newMaxEndDate) { + m_maxEndDate = newMaxEndDate; + emit maxEndDateChanged(newMaxEndDate); +} + +bool GetProgramsDto::isMovie() const { return m_isMovie; } +void GetProgramsDto::setIsMovie(bool newIsMovie) { + m_isMovie = newIsMovie; + emit isMovieChanged(newIsMovie); +} + +bool GetProgramsDto::isSeries() const { return m_isSeries; } +void GetProgramsDto::setIsSeries(bool newIsSeries) { + m_isSeries = newIsSeries; + emit isSeriesChanged(newIsSeries); +} + +bool GetProgramsDto::isNews() const { return m_isNews; } +void GetProgramsDto::setIsNews(bool newIsNews) { + m_isNews = newIsNews; + emit isNewsChanged(newIsNews); +} + +bool GetProgramsDto::isKids() const { return m_isKids; } +void GetProgramsDto::setIsKids(bool newIsKids) { + m_isKids = newIsKids; + emit isKidsChanged(newIsKids); +} + +bool GetProgramsDto::isSports() const { return m_isSports; } +void GetProgramsDto::setIsSports(bool newIsSports) { + m_isSports = newIsSports; + emit isSportsChanged(newIsSports); +} + +qint32 GetProgramsDto::startIndex() const { return m_startIndex; } +void GetProgramsDto::setStartIndex(qint32 newStartIndex) { + m_startIndex = newStartIndex; + emit startIndexChanged(newStartIndex); +} + +qint32 GetProgramsDto::limit() const { return m_limit; } +void GetProgramsDto::setLimit(qint32 newLimit) { + m_limit = newLimit; + emit limitChanged(newLimit); +} + +QString GetProgramsDto::sortBy() const { return m_sortBy; } +void GetProgramsDto::setSortBy(QString newSortBy) { + m_sortBy = newSortBy; + emit sortByChanged(newSortBy); +} + +QString GetProgramsDto::sortOrder() const { return m_sortOrder; } +void GetProgramsDto::setSortOrder(QString newSortOrder) { + m_sortOrder = newSortOrder; + emit sortOrderChanged(newSortOrder); +} + +QStringList GetProgramsDto::genres() const { return m_genres; } +void GetProgramsDto::setGenres(QStringList newGenres) { + m_genres = newGenres; + emit genresChanged(newGenres); +} + +QStringList GetProgramsDto::genreIds() const { return m_genreIds; } +void GetProgramsDto::setGenreIds(QStringList newGenreIds) { + m_genreIds = newGenreIds; + emit genreIdsChanged(newGenreIds); +} + +bool GetProgramsDto::enableImages() const { return m_enableImages; } +void GetProgramsDto::setEnableImages(bool newEnableImages) { + m_enableImages = newEnableImages; + emit enableImagesChanged(newEnableImages); +} + +bool GetProgramsDto::enableTotalRecordCount() const { return m_enableTotalRecordCount; } +void GetProgramsDto::setEnableTotalRecordCount(bool newEnableTotalRecordCount) { + m_enableTotalRecordCount = newEnableTotalRecordCount; + emit enableTotalRecordCountChanged(newEnableTotalRecordCount); +} + +qint32 GetProgramsDto::imageTypeLimit() const { return m_imageTypeLimit; } +void GetProgramsDto::setImageTypeLimit(qint32 newImageTypeLimit) { + m_imageTypeLimit = newImageTypeLimit; + emit imageTypeLimitChanged(newImageTypeLimit); +} + +QList GetProgramsDto::enableImageTypes() const { return m_enableImageTypes; } +void GetProgramsDto::setEnableImageTypes(QList newEnableImageTypes) { + m_enableImageTypes = newEnableImageTypes; + emit enableImageTypesChanged(newEnableImageTypes); +} + +bool GetProgramsDto::enableUserData() const { return m_enableUserData; } +void GetProgramsDto::setEnableUserData(bool newEnableUserData) { + m_enableUserData = newEnableUserData; + emit enableUserDataChanged(newEnableUserData); +} + +QString GetProgramsDto::seriesTimerId() const { return m_seriesTimerId; } +void GetProgramsDto::setSeriesTimerId(QString newSeriesTimerId) { + m_seriesTimerId = newSeriesTimerId; + emit seriesTimerIdChanged(newSeriesTimerId); +} + +QString GetProgramsDto::librarySeriesId() const { return m_librarySeriesId; } +void GetProgramsDto::setLibrarySeriesId(QString newLibrarySeriesId) { + m_librarySeriesId = newLibrarySeriesId; + emit librarySeriesIdChanged(newLibrarySeriesId); +} + +QList GetProgramsDto::fields() const { return m_fields; } +void GetProgramsDto::setFields(QList newFields) { + m_fields = newFields; + emit fieldsChanged(newFields); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/groupinfodto.cpp b/core/src/DTO/groupinfodto.cpp new file mode 100644 index 0000000..d91b4ac --- /dev/null +++ b/core/src/DTO/groupinfodto.cpp @@ -0,0 +1,85 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +GroupInfoDto::GroupInfoDto(QObject *parent) : QObject(parent) {} + +GroupInfoDto *GroupInfoDto::fromJSON(QJsonObject source, QObject *parent) { + GroupInfoDto *instance = new GroupInfoDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void GroupInfoDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject GroupInfoDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString GroupInfoDto::groupId() const { return m_groupId; } +void GroupInfoDto::setGroupId(QString newGroupId) { + m_groupId = newGroupId; + emit groupIdChanged(newGroupId); +} + +QString GroupInfoDto::groupName() const { return m_groupName; } +void GroupInfoDto::setGroupName(QString newGroupName) { + m_groupName = newGroupName; + emit groupNameChanged(newGroupName); +} + +GroupStateType GroupInfoDto::state() const { return m_state; } +void GroupInfoDto::setState(GroupStateType newState) { + m_state = newState; + emit stateChanged(newState); +} + +QStringList GroupInfoDto::participants() const { return m_participants; } +void GroupInfoDto::setParticipants(QStringList newParticipants) { + m_participants = newParticipants; + emit participantsChanged(newParticipants); +} + +QDateTime GroupInfoDto::lastUpdatedAt() const { return m_lastUpdatedAt; } +void GroupInfoDto::setLastUpdatedAt(QDateTime newLastUpdatedAt) { + m_lastUpdatedAt = newLastUpdatedAt; + emit lastUpdatedAtChanged(newLastUpdatedAt); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/groupqueuemode.cpp b/core/src/DTO/groupqueuemode.cpp new file mode 100644 index 0000000..762c61f --- /dev/null +++ b/core/src/DTO/groupqueuemode.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +GroupQueueModeClass::GroupQueueModeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/grouprepeatmode.cpp b/core/src/DTO/grouprepeatmode.cpp new file mode 100644 index 0000000..567b354 --- /dev/null +++ b/core/src/DTO/grouprepeatmode.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +GroupRepeatModeClass::GroupRepeatModeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/groupshufflemode.cpp b/core/src/DTO/groupshufflemode.cpp new file mode 100644 index 0000000..8f9133e --- /dev/null +++ b/core/src/DTO/groupshufflemode.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +GroupShuffleModeClass::GroupShuffleModeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/groupstatetype.cpp b/core/src/DTO/groupstatetype.cpp new file mode 100644 index 0000000..498df4a --- /dev/null +++ b/core/src/DTO/groupstatetype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +GroupStateTypeClass::GroupStateTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/groupupdatetype.cpp b/core/src/DTO/groupupdatetype.cpp new file mode 100644 index 0000000..eb4ad49 --- /dev/null +++ b/core/src/DTO/groupupdatetype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +GroupUpdateTypeClass::GroupUpdateTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/guideinfo.cpp b/core/src/DTO/guideinfo.cpp new file mode 100644 index 0000000..ef82af7 --- /dev/null +++ b/core/src/DTO/guideinfo.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +GuideInfo::GuideInfo(QObject *parent) : QObject(parent) {} + +GuideInfo *GuideInfo::fromJSON(QJsonObject source, QObject *parent) { + GuideInfo *instance = new GuideInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void GuideInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject GuideInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QDateTime GuideInfo::startDate() const { return m_startDate; } +void GuideInfo::setStartDate(QDateTime newStartDate) { + m_startDate = newStartDate; + emit startDateChanged(newStartDate); +} + +QDateTime GuideInfo::endDate() const { return m_endDate; } +void GuideInfo::setEndDate(QDateTime newEndDate) { + m_endDate = newEndDate; + emit endDateChanged(newEndDate); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/headermatchtype.cpp b/core/src/DTO/headermatchtype.cpp new file mode 100644 index 0000000..f212437 --- /dev/null +++ b/core/src/DTO/headermatchtype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +HeaderMatchTypeClass::HeaderMatchTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/httpheaderinfo.cpp b/core/src/DTO/httpheaderinfo.cpp new file mode 100644 index 0000000..6c3bc18 --- /dev/null +++ b/core/src/DTO/httpheaderinfo.cpp @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +HttpHeaderInfo::HttpHeaderInfo(QObject *parent) : QObject(parent) {} + +HttpHeaderInfo *HttpHeaderInfo::fromJSON(QJsonObject source, QObject *parent) { + HttpHeaderInfo *instance = new HttpHeaderInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void HttpHeaderInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject HttpHeaderInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString HttpHeaderInfo::name() const { return m_name; } +void HttpHeaderInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString HttpHeaderInfo::value() const { return m_value; } +void HttpHeaderInfo::setValue(QString newValue) { + m_value = newValue; + emit valueChanged(newValue); +} + +HeaderMatchType HttpHeaderInfo::match() const { return m_match; } +void HttpHeaderInfo::setMatch(HeaderMatchType newMatch) { + m_match = newMatch; + emit matchChanged(newMatch); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/ignorewaitrequestdto.cpp b/core/src/DTO/ignorewaitrequestdto.cpp new file mode 100644 index 0000000..3643aab --- /dev/null +++ b/core/src/DTO/ignorewaitrequestdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +IgnoreWaitRequestDto::IgnoreWaitRequestDto(QObject *parent) : QObject(parent) {} + +IgnoreWaitRequestDto *IgnoreWaitRequestDto::fromJSON(QJsonObject source, QObject *parent) { + IgnoreWaitRequestDto *instance = new IgnoreWaitRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void IgnoreWaitRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject IgnoreWaitRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +bool IgnoreWaitRequestDto::ignoreWait() const { return m_ignoreWait; } +void IgnoreWaitRequestDto::setIgnoreWait(bool newIgnoreWait) { + m_ignoreWait = newIgnoreWait; + emit ignoreWaitChanged(newIgnoreWait); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/imagebynameinfo.cpp b/core/src/DTO/imagebynameinfo.cpp new file mode 100644 index 0000000..b8a2861 --- /dev/null +++ b/core/src/DTO/imagebynameinfo.cpp @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ImageByNameInfo::ImageByNameInfo(QObject *parent) : QObject(parent) {} + +ImageByNameInfo *ImageByNameInfo::fromJSON(QJsonObject source, QObject *parent) { + ImageByNameInfo *instance = new ImageByNameInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void ImageByNameInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ImageByNameInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ImageByNameInfo::name() const { return m_name; } +void ImageByNameInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString ImageByNameInfo::theme() const { return m_theme; } +void ImageByNameInfo::setTheme(QString newTheme) { + m_theme = newTheme; + emit themeChanged(newTheme); +} + +QString ImageByNameInfo::context() const { return m_context; } +void ImageByNameInfo::setContext(QString newContext) { + m_context = newContext; + emit contextChanged(newContext); +} + +qint64 ImageByNameInfo::fileLength() const { return m_fileLength; } +void ImageByNameInfo::setFileLength(qint64 newFileLength) { + m_fileLength = newFileLength; + emit fileLengthChanged(newFileLength); +} + +QString ImageByNameInfo::format() const { return m_format; } +void ImageByNameInfo::setFormat(QString newFormat) { + m_format = newFormat; + emit formatChanged(newFormat); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/imageformat.cpp b/core/src/DTO/imageformat.cpp new file mode 100644 index 0000000..32cd7f5 --- /dev/null +++ b/core/src/DTO/imageformat.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ImageFormatClass::ImageFormatClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/imageinfo.cpp b/core/src/DTO/imageinfo.cpp new file mode 100644 index 0000000..32b6410 --- /dev/null +++ b/core/src/DTO/imageinfo.cpp @@ -0,0 +1,103 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ImageInfo::ImageInfo(QObject *parent) : QObject(parent) {} + +ImageInfo *ImageInfo::fromJSON(QJsonObject source, QObject *parent) { + ImageInfo *instance = new ImageInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void ImageInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ImageInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +ImageType ImageInfo::imageType() const { return m_imageType; } +void ImageInfo::setImageType(ImageType newImageType) { + m_imageType = newImageType; + emit imageTypeChanged(newImageType); +} + +qint32 ImageInfo::imageIndex() const { return m_imageIndex; } +void ImageInfo::setImageIndex(qint32 newImageIndex) { + m_imageIndex = newImageIndex; + emit imageIndexChanged(newImageIndex); +} + +QString ImageInfo::imageTag() const { return m_imageTag; } +void ImageInfo::setImageTag(QString newImageTag) { + m_imageTag = newImageTag; + emit imageTagChanged(newImageTag); +} + +QString ImageInfo::path() const { return m_path; } +void ImageInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString ImageInfo::blurHash() const { return m_blurHash; } +void ImageInfo::setBlurHash(QString newBlurHash) { + m_blurHash = newBlurHash; + emit blurHashChanged(newBlurHash); +} + +qint32 ImageInfo::height() const { return m_height; } +void ImageInfo::setHeight(qint32 newHeight) { + m_height = newHeight; + emit heightChanged(newHeight); +} + +qint32 ImageInfo::width() const { return m_width; } +void ImageInfo::setWidth(qint32 newWidth) { + m_width = newWidth; + emit widthChanged(newWidth); +} + +qint64 ImageInfo::size() const { return m_size; } +void ImageInfo::setSize(qint64 newSize) { + m_size = newSize; + emit sizeChanged(newSize); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/imageoption.cpp b/core/src/DTO/imageoption.cpp new file mode 100644 index 0000000..0dcbc76 --- /dev/null +++ b/core/src/DTO/imageoption.cpp @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ImageOption::ImageOption(QObject *parent) : QObject(parent) {} + +ImageOption *ImageOption::fromJSON(QJsonObject source, QObject *parent) { + ImageOption *instance = new ImageOption(parent); + instance->updateFromJSON(source); + return instance; +} + +void ImageOption::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ImageOption::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +ImageType ImageOption::type() const { return m_type; } +void ImageOption::setType(ImageType newType) { + m_type = newType; + emit typeChanged(newType); +} + +qint32 ImageOption::limit() const { return m_limit; } +void ImageOption::setLimit(qint32 newLimit) { + m_limit = newLimit; + emit limitChanged(newLimit); +} + +qint32 ImageOption::minWidth() const { return m_minWidth; } +void ImageOption::setMinWidth(qint32 newMinWidth) { + m_minWidth = newMinWidth; + emit minWidthChanged(newMinWidth); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/imageorientation.cpp b/core/src/DTO/imageorientation.cpp new file mode 100644 index 0000000..85b6781 --- /dev/null +++ b/core/src/DTO/imageorientation.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ImageOrientationClass::ImageOrientationClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/imageproviderinfo.cpp b/core/src/DTO/imageproviderinfo.cpp new file mode 100644 index 0000000..1e816b9 --- /dev/null +++ b/core/src/DTO/imageproviderinfo.cpp @@ -0,0 +1,67 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ImageProviderInfo::ImageProviderInfo(QObject *parent) : QObject(parent) {} + +ImageProviderInfo *ImageProviderInfo::fromJSON(QJsonObject source, QObject *parent) { + ImageProviderInfo *instance = new ImageProviderInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void ImageProviderInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ImageProviderInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ImageProviderInfo::name() const { return m_name; } +void ImageProviderInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QList ImageProviderInfo::supportedImages() const { return m_supportedImages; } +void ImageProviderInfo::setSupportedImages(QList newSupportedImages) { + m_supportedImages = newSupportedImages; + emit supportedImagesChanged(newSupportedImages); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/imagesavingconvention.cpp b/core/src/DTO/imagesavingconvention.cpp new file mode 100644 index 0000000..9686d98 --- /dev/null +++ b/core/src/DTO/imagesavingconvention.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ImageSavingConventionClass::ImageSavingConventionClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/imagetype.cpp b/core/src/DTO/imagetype.cpp new file mode 100644 index 0000000..8624806 --- /dev/null +++ b/core/src/DTO/imagetype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ImageTypeClass::ImageTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/installationinfo.cpp b/core/src/DTO/installationinfo.cpp new file mode 100644 index 0000000..dba4e36 --- /dev/null +++ b/core/src/DTO/installationinfo.cpp @@ -0,0 +1,89 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +InstallationInfo::InstallationInfo(QObject *parent) : QObject(parent) {} + +InstallationInfo *InstallationInfo::fromJSON(QJsonObject source, QObject *parent) { + InstallationInfo *instance = new InstallationInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void InstallationInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject InstallationInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString InstallationInfo::guid() const { return m_guid; } +void InstallationInfo::setGuid(QString newGuid) { + m_guid = newGuid; + emit guidChanged(newGuid); +} + +QString InstallationInfo::name() const { return m_name; } +void InstallationInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +Version * InstallationInfo::version() const { return m_version; } +void InstallationInfo::setVersion(Version * newVersion) { + m_version = newVersion; + emit versionChanged(newVersion); +} + +QString InstallationInfo::changelog() const { return m_changelog; } +void InstallationInfo::setChangelog(QString newChangelog) { + m_changelog = newChangelog; + emit changelogChanged(newChangelog); +} + +QString InstallationInfo::sourceUrl() const { return m_sourceUrl; } +void InstallationInfo::setSourceUrl(QString newSourceUrl) { + m_sourceUrl = newSourceUrl; + emit sourceUrlChanged(newSourceUrl); +} + +QString InstallationInfo::checksum() const { return m_checksum; } +void InstallationInfo::setChecksum(QString newChecksum) { + m_checksum = newChecksum; + emit checksumChanged(newChecksum); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/iplugin.cpp b/core/src/DTO/iplugin.cpp new file mode 100644 index 0000000..97f3ff9 --- /dev/null +++ b/core/src/DTO/iplugin.cpp @@ -0,0 +1,95 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +IPlugin::IPlugin(QObject *parent) : QObject(parent) {} + +IPlugin *IPlugin::fromJSON(QJsonObject source, QObject *parent) { + IPlugin *instance = new IPlugin(parent); + instance->updateFromJSON(source); + return instance; +} + +void IPlugin::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject IPlugin::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString IPlugin::name() const { return m_name; } +void IPlugin::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString IPlugin::description() const { return m_description; } +void IPlugin::setDescription(QString newDescription) { + m_description = newDescription; + emit descriptionChanged(newDescription); +} + +QString IPlugin::jellyfinId() const { return m_jellyfinId; } +void IPlugin::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +Version * IPlugin::version() const { return m_version; } +void IPlugin::setVersion(Version * newVersion) { + m_version = newVersion; + emit versionChanged(newVersion); +} + +QString IPlugin::assemblyFilePath() const { return m_assemblyFilePath; } +void IPlugin::setAssemblyFilePath(QString newAssemblyFilePath) { + m_assemblyFilePath = newAssemblyFilePath; + emit assemblyFilePathChanged(newAssemblyFilePath); +} + +bool IPlugin::canUninstall() const { return m_canUninstall; } +void IPlugin::setCanUninstall(bool newCanUninstall) { + m_canUninstall = newCanUninstall; + emit canUninstallChanged(newCanUninstall); +} + +QString IPlugin::dataFolderPath() const { return m_dataFolderPath; } +void IPlugin::setDataFolderPath(QString newDataFolderPath) { + m_dataFolderPath = newDataFolderPath; + emit dataFolderPathChanged(newDataFolderPath); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/isotype.cpp b/core/src/DTO/isotype.cpp new file mode 100644 index 0000000..52e8cfb --- /dev/null +++ b/core/src/DTO/isotype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +IsoTypeClass::IsoTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/item.cpp b/core/src/DTO/item.cpp new file mode 100644 index 0000000..e69de29 diff --git a/core/src/DTO/itemcounts.cpp b/core/src/DTO/itemcounts.cpp new file mode 100644 index 0000000..1d78391 --- /dev/null +++ b/core/src/DTO/itemcounts.cpp @@ -0,0 +1,125 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ItemCounts::ItemCounts(QObject *parent) : QObject(parent) {} + +ItemCounts *ItemCounts::fromJSON(QJsonObject source, QObject *parent) { + ItemCounts *instance = new ItemCounts(parent); + instance->updateFromJSON(source); + return instance; +} + +void ItemCounts::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ItemCounts::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint32 ItemCounts::movieCount() const { return m_movieCount; } +void ItemCounts::setMovieCount(qint32 newMovieCount) { + m_movieCount = newMovieCount; + emit movieCountChanged(newMovieCount); +} + +qint32 ItemCounts::seriesCount() const { return m_seriesCount; } +void ItemCounts::setSeriesCount(qint32 newSeriesCount) { + m_seriesCount = newSeriesCount; + emit seriesCountChanged(newSeriesCount); +} + +qint32 ItemCounts::episodeCount() const { return m_episodeCount; } +void ItemCounts::setEpisodeCount(qint32 newEpisodeCount) { + m_episodeCount = newEpisodeCount; + emit episodeCountChanged(newEpisodeCount); +} + +qint32 ItemCounts::artistCount() const { return m_artistCount; } +void ItemCounts::setArtistCount(qint32 newArtistCount) { + m_artistCount = newArtistCount; + emit artistCountChanged(newArtistCount); +} + +qint32 ItemCounts::programCount() const { return m_programCount; } +void ItemCounts::setProgramCount(qint32 newProgramCount) { + m_programCount = newProgramCount; + emit programCountChanged(newProgramCount); +} + +qint32 ItemCounts::trailerCount() const { return m_trailerCount; } +void ItemCounts::setTrailerCount(qint32 newTrailerCount) { + m_trailerCount = newTrailerCount; + emit trailerCountChanged(newTrailerCount); +} + +qint32 ItemCounts::songCount() const { return m_songCount; } +void ItemCounts::setSongCount(qint32 newSongCount) { + m_songCount = newSongCount; + emit songCountChanged(newSongCount); +} + +qint32 ItemCounts::albumCount() const { return m_albumCount; } +void ItemCounts::setAlbumCount(qint32 newAlbumCount) { + m_albumCount = newAlbumCount; + emit albumCountChanged(newAlbumCount); +} + +qint32 ItemCounts::musicVideoCount() const { return m_musicVideoCount; } +void ItemCounts::setMusicVideoCount(qint32 newMusicVideoCount) { + m_musicVideoCount = newMusicVideoCount; + emit musicVideoCountChanged(newMusicVideoCount); +} + +qint32 ItemCounts::boxSetCount() const { return m_boxSetCount; } +void ItemCounts::setBoxSetCount(qint32 newBoxSetCount) { + m_boxSetCount = newBoxSetCount; + emit boxSetCountChanged(newBoxSetCount); +} + +qint32 ItemCounts::bookCount() const { return m_bookCount; } +void ItemCounts::setBookCount(qint32 newBookCount) { + m_bookCount = newBookCount; + emit bookCountChanged(newBookCount); +} + +qint32 ItemCounts::itemCount() const { return m_itemCount; } +void ItemCounts::setItemCount(qint32 newItemCount) { + m_itemCount = newItemCount; + emit itemCountChanged(newItemCount); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/itemfields.cpp b/core/src/DTO/itemfields.cpp new file mode 100644 index 0000000..3b7ca8c --- /dev/null +++ b/core/src/DTO/itemfields.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ItemFieldsClass::ItemFieldsClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/itemfilter.cpp b/core/src/DTO/itemfilter.cpp new file mode 100644 index 0000000..aac4d37 --- /dev/null +++ b/core/src/DTO/itemfilter.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ItemFilterClass::ItemFilterClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/joingrouprequestdto.cpp b/core/src/DTO/joingrouprequestdto.cpp new file mode 100644 index 0000000..07000a2 --- /dev/null +++ b/core/src/DTO/joingrouprequestdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +JoinGroupRequestDto::JoinGroupRequestDto(QObject *parent) : QObject(parent) {} + +JoinGroupRequestDto *JoinGroupRequestDto::fromJSON(QJsonObject source, QObject *parent) { + JoinGroupRequestDto *instance = new JoinGroupRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void JoinGroupRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject JoinGroupRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString JoinGroupRequestDto::groupId() const { return m_groupId; } +void JoinGroupRequestDto::setGroupId(QString newGroupId) { + m_groupId = newGroupId; + emit groupIdChanged(newGroupId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/keepuntil.cpp b/core/src/DTO/keepuntil.cpp new file mode 100644 index 0000000..40b5d43 --- /dev/null +++ b/core/src/DTO/keepuntil.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +KeepUntilClass::KeepUntilClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/libraryoptioninfodto.cpp b/core/src/DTO/libraryoptioninfodto.cpp new file mode 100644 index 0000000..039cf1e --- /dev/null +++ b/core/src/DTO/libraryoptioninfodto.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LibraryOptionInfoDto::LibraryOptionInfoDto(QObject *parent) : QObject(parent) {} + +LibraryOptionInfoDto *LibraryOptionInfoDto::fromJSON(QJsonObject source, QObject *parent) { + LibraryOptionInfoDto *instance = new LibraryOptionInfoDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void LibraryOptionInfoDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject LibraryOptionInfoDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString LibraryOptionInfoDto::name() const { return m_name; } +void LibraryOptionInfoDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +bool LibraryOptionInfoDto::defaultEnabled() const { return m_defaultEnabled; } +void LibraryOptionInfoDto::setDefaultEnabled(bool newDefaultEnabled) { + m_defaultEnabled = newDefaultEnabled; + emit defaultEnabledChanged(newDefaultEnabled); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/libraryoptions.cpp b/core/src/DTO/libraryoptions.cpp new file mode 100644 index 0000000..d290b17 --- /dev/null +++ b/core/src/DTO/libraryoptions.cpp @@ -0,0 +1,203 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LibraryOptions::LibraryOptions(QObject *parent) : QObject(parent) {} + +LibraryOptions *LibraryOptions::fromJSON(QJsonObject source, QObject *parent) { + LibraryOptions *instance = new LibraryOptions(parent); + instance->updateFromJSON(source); + return instance; +} + +void LibraryOptions::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject LibraryOptions::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +bool LibraryOptions::enablePhotos() const { return m_enablePhotos; } +void LibraryOptions::setEnablePhotos(bool newEnablePhotos) { + m_enablePhotos = newEnablePhotos; + emit enablePhotosChanged(newEnablePhotos); +} + +bool LibraryOptions::enableRealtimeMonitor() const { return m_enableRealtimeMonitor; } +void LibraryOptions::setEnableRealtimeMonitor(bool newEnableRealtimeMonitor) { + m_enableRealtimeMonitor = newEnableRealtimeMonitor; + emit enableRealtimeMonitorChanged(newEnableRealtimeMonitor); +} + +bool LibraryOptions::enableChapterImageExtraction() const { return m_enableChapterImageExtraction; } +void LibraryOptions::setEnableChapterImageExtraction(bool newEnableChapterImageExtraction) { + m_enableChapterImageExtraction = newEnableChapterImageExtraction; + emit enableChapterImageExtractionChanged(newEnableChapterImageExtraction); +} + +bool LibraryOptions::extractChapterImagesDuringLibraryScan() const { return m_extractChapterImagesDuringLibraryScan; } +void LibraryOptions::setExtractChapterImagesDuringLibraryScan(bool newExtractChapterImagesDuringLibraryScan) { + m_extractChapterImagesDuringLibraryScan = newExtractChapterImagesDuringLibraryScan; + emit extractChapterImagesDuringLibraryScanChanged(newExtractChapterImagesDuringLibraryScan); +} + +QList LibraryOptions::pathInfos() const { return m_pathInfos; } +void LibraryOptions::setPathInfos(QList newPathInfos) { + m_pathInfos = newPathInfos; + emit pathInfosChanged(newPathInfos); +} + +bool LibraryOptions::saveLocalMetadata() const { return m_saveLocalMetadata; } +void LibraryOptions::setSaveLocalMetadata(bool newSaveLocalMetadata) { + m_saveLocalMetadata = newSaveLocalMetadata; + emit saveLocalMetadataChanged(newSaveLocalMetadata); +} + +bool LibraryOptions::enableInternetProviders() const { return m_enableInternetProviders; } +void LibraryOptions::setEnableInternetProviders(bool newEnableInternetProviders) { + m_enableInternetProviders = newEnableInternetProviders; + emit enableInternetProvidersChanged(newEnableInternetProviders); +} + +bool LibraryOptions::enableAutomaticSeriesGrouping() const { return m_enableAutomaticSeriesGrouping; } +void LibraryOptions::setEnableAutomaticSeriesGrouping(bool newEnableAutomaticSeriesGrouping) { + m_enableAutomaticSeriesGrouping = newEnableAutomaticSeriesGrouping; + emit enableAutomaticSeriesGroupingChanged(newEnableAutomaticSeriesGrouping); +} + +bool LibraryOptions::enableEmbeddedTitles() const { return m_enableEmbeddedTitles; } +void LibraryOptions::setEnableEmbeddedTitles(bool newEnableEmbeddedTitles) { + m_enableEmbeddedTitles = newEnableEmbeddedTitles; + emit enableEmbeddedTitlesChanged(newEnableEmbeddedTitles); +} + +bool LibraryOptions::enableEmbeddedEpisodeInfos() const { return m_enableEmbeddedEpisodeInfos; } +void LibraryOptions::setEnableEmbeddedEpisodeInfos(bool newEnableEmbeddedEpisodeInfos) { + m_enableEmbeddedEpisodeInfos = newEnableEmbeddedEpisodeInfos; + emit enableEmbeddedEpisodeInfosChanged(newEnableEmbeddedEpisodeInfos); +} + +qint32 LibraryOptions::automaticRefreshIntervalDays() const { return m_automaticRefreshIntervalDays; } +void LibraryOptions::setAutomaticRefreshIntervalDays(qint32 newAutomaticRefreshIntervalDays) { + m_automaticRefreshIntervalDays = newAutomaticRefreshIntervalDays; + emit automaticRefreshIntervalDaysChanged(newAutomaticRefreshIntervalDays); +} + +QString LibraryOptions::preferredMetadataLanguage() const { return m_preferredMetadataLanguage; } +void LibraryOptions::setPreferredMetadataLanguage(QString newPreferredMetadataLanguage) { + m_preferredMetadataLanguage = newPreferredMetadataLanguage; + emit preferredMetadataLanguageChanged(newPreferredMetadataLanguage); +} + +QString LibraryOptions::metadataCountryCode() const { return m_metadataCountryCode; } +void LibraryOptions::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QString LibraryOptions::seasonZeroDisplayName() const { return m_seasonZeroDisplayName; } +void LibraryOptions::setSeasonZeroDisplayName(QString newSeasonZeroDisplayName) { + m_seasonZeroDisplayName = newSeasonZeroDisplayName; + emit seasonZeroDisplayNameChanged(newSeasonZeroDisplayName); +} + +QStringList LibraryOptions::metadataSavers() const { return m_metadataSavers; } +void LibraryOptions::setMetadataSavers(QStringList newMetadataSavers) { + m_metadataSavers = newMetadataSavers; + emit metadataSaversChanged(newMetadataSavers); +} + +QStringList LibraryOptions::disabledLocalMetadataReaders() const { return m_disabledLocalMetadataReaders; } +void LibraryOptions::setDisabledLocalMetadataReaders(QStringList newDisabledLocalMetadataReaders) { + m_disabledLocalMetadataReaders = newDisabledLocalMetadataReaders; + emit disabledLocalMetadataReadersChanged(newDisabledLocalMetadataReaders); +} + +QStringList LibraryOptions::localMetadataReaderOrder() const { return m_localMetadataReaderOrder; } +void LibraryOptions::setLocalMetadataReaderOrder(QStringList newLocalMetadataReaderOrder) { + m_localMetadataReaderOrder = newLocalMetadataReaderOrder; + emit localMetadataReaderOrderChanged(newLocalMetadataReaderOrder); +} + +QStringList LibraryOptions::disabledSubtitleFetchers() const { return m_disabledSubtitleFetchers; } +void LibraryOptions::setDisabledSubtitleFetchers(QStringList newDisabledSubtitleFetchers) { + m_disabledSubtitleFetchers = newDisabledSubtitleFetchers; + emit disabledSubtitleFetchersChanged(newDisabledSubtitleFetchers); +} + +QStringList LibraryOptions::subtitleFetcherOrder() const { return m_subtitleFetcherOrder; } +void LibraryOptions::setSubtitleFetcherOrder(QStringList newSubtitleFetcherOrder) { + m_subtitleFetcherOrder = newSubtitleFetcherOrder; + emit subtitleFetcherOrderChanged(newSubtitleFetcherOrder); +} + +bool LibraryOptions::skipSubtitlesIfEmbeddedSubtitlesPresent() const { return m_skipSubtitlesIfEmbeddedSubtitlesPresent; } +void LibraryOptions::setSkipSubtitlesIfEmbeddedSubtitlesPresent(bool newSkipSubtitlesIfEmbeddedSubtitlesPresent) { + m_skipSubtitlesIfEmbeddedSubtitlesPresent = newSkipSubtitlesIfEmbeddedSubtitlesPresent; + emit skipSubtitlesIfEmbeddedSubtitlesPresentChanged(newSkipSubtitlesIfEmbeddedSubtitlesPresent); +} + +bool LibraryOptions::skipSubtitlesIfAudioTrackMatches() const { return m_skipSubtitlesIfAudioTrackMatches; } +void LibraryOptions::setSkipSubtitlesIfAudioTrackMatches(bool newSkipSubtitlesIfAudioTrackMatches) { + m_skipSubtitlesIfAudioTrackMatches = newSkipSubtitlesIfAudioTrackMatches; + emit skipSubtitlesIfAudioTrackMatchesChanged(newSkipSubtitlesIfAudioTrackMatches); +} + +QStringList LibraryOptions::subtitleDownloadLanguages() const { return m_subtitleDownloadLanguages; } +void LibraryOptions::setSubtitleDownloadLanguages(QStringList newSubtitleDownloadLanguages) { + m_subtitleDownloadLanguages = newSubtitleDownloadLanguages; + emit subtitleDownloadLanguagesChanged(newSubtitleDownloadLanguages); +} + +bool LibraryOptions::requirePerfectSubtitleMatch() const { return m_requirePerfectSubtitleMatch; } +void LibraryOptions::setRequirePerfectSubtitleMatch(bool newRequirePerfectSubtitleMatch) { + m_requirePerfectSubtitleMatch = newRequirePerfectSubtitleMatch; + emit requirePerfectSubtitleMatchChanged(newRequirePerfectSubtitleMatch); +} + +bool LibraryOptions::saveSubtitlesWithMedia() const { return m_saveSubtitlesWithMedia; } +void LibraryOptions::setSaveSubtitlesWithMedia(bool newSaveSubtitlesWithMedia) { + m_saveSubtitlesWithMedia = newSaveSubtitlesWithMedia; + emit saveSubtitlesWithMediaChanged(newSaveSubtitlesWithMedia); +} + +QList LibraryOptions::typeOptions() const { return m_typeOptions; } +void LibraryOptions::setTypeOptions(QList newTypeOptions) { + m_typeOptions = newTypeOptions; + emit typeOptionsChanged(newTypeOptions); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/libraryoptionsresultdto.cpp b/core/src/DTO/libraryoptionsresultdto.cpp new file mode 100644 index 0000000..13fc132 --- /dev/null +++ b/core/src/DTO/libraryoptionsresultdto.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LibraryOptionsResultDto::LibraryOptionsResultDto(QObject *parent) : QObject(parent) {} + +LibraryOptionsResultDto *LibraryOptionsResultDto::fromJSON(QJsonObject source, QObject *parent) { + LibraryOptionsResultDto *instance = new LibraryOptionsResultDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void LibraryOptionsResultDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject LibraryOptionsResultDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList LibraryOptionsResultDto::metadataSavers() const { return m_metadataSavers; } +void LibraryOptionsResultDto::setMetadataSavers(QList newMetadataSavers) { + m_metadataSavers = newMetadataSavers; + emit metadataSaversChanged(newMetadataSavers); +} + +QList LibraryOptionsResultDto::metadataReaders() const { return m_metadataReaders; } +void LibraryOptionsResultDto::setMetadataReaders(QList newMetadataReaders) { + m_metadataReaders = newMetadataReaders; + emit metadataReadersChanged(newMetadataReaders); +} + +QList LibraryOptionsResultDto::subtitleFetchers() const { return m_subtitleFetchers; } +void LibraryOptionsResultDto::setSubtitleFetchers(QList newSubtitleFetchers) { + m_subtitleFetchers = newSubtitleFetchers; + emit subtitleFetchersChanged(newSubtitleFetchers); +} + +QList LibraryOptionsResultDto::typeOptions() const { return m_typeOptions; } +void LibraryOptionsResultDto::setTypeOptions(QList newTypeOptions) { + m_typeOptions = newTypeOptions; + emit typeOptionsChanged(newTypeOptions); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/librarytypeoptionsdto.cpp b/core/src/DTO/librarytypeoptionsdto.cpp new file mode 100644 index 0000000..fac173c --- /dev/null +++ b/core/src/DTO/librarytypeoptionsdto.cpp @@ -0,0 +1,85 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +LibraryTypeOptionsDto::LibraryTypeOptionsDto(QObject *parent) : QObject(parent) {} + +LibraryTypeOptionsDto *LibraryTypeOptionsDto::fromJSON(QJsonObject source, QObject *parent) { + LibraryTypeOptionsDto *instance = new LibraryTypeOptionsDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void LibraryTypeOptionsDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject LibraryTypeOptionsDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString LibraryTypeOptionsDto::type() const { return m_type; } +void LibraryTypeOptionsDto::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QList LibraryTypeOptionsDto::metadataFetchers() const { return m_metadataFetchers; } +void LibraryTypeOptionsDto::setMetadataFetchers(QList newMetadataFetchers) { + m_metadataFetchers = newMetadataFetchers; + emit metadataFetchersChanged(newMetadataFetchers); +} + +QList LibraryTypeOptionsDto::imageFetchers() const { return m_imageFetchers; } +void LibraryTypeOptionsDto::setImageFetchers(QList newImageFetchers) { + m_imageFetchers = newImageFetchers; + emit imageFetchersChanged(newImageFetchers); +} + +QList LibraryTypeOptionsDto::supportedImageTypes() const { return m_supportedImageTypes; } +void LibraryTypeOptionsDto::setSupportedImageTypes(QList newSupportedImageTypes) { + m_supportedImageTypes = newSupportedImageTypes; + emit supportedImageTypesChanged(newSupportedImageTypes); +} + +QList LibraryTypeOptionsDto::defaultImageOptions() const { return m_defaultImageOptions; } +void LibraryTypeOptionsDto::setDefaultImageOptions(QList newDefaultImageOptions) { + m_defaultImageOptions = newDefaultImageOptions; + emit defaultImageOptionsChanged(newDefaultImageOptions); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/libraryupdateinfo.cpp b/core/src/DTO/libraryupdateinfo.cpp new file mode 100644 index 0000000..dfc58de --- /dev/null +++ b/core/src/DTO/libraryupdateinfo.cpp @@ -0,0 +1,95 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LibraryUpdateInfo::LibraryUpdateInfo(QObject *parent) : QObject(parent) {} + +LibraryUpdateInfo *LibraryUpdateInfo::fromJSON(QJsonObject source, QObject *parent) { + LibraryUpdateInfo *instance = new LibraryUpdateInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void LibraryUpdateInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject LibraryUpdateInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QStringList LibraryUpdateInfo::foldersAddedTo() const { return m_foldersAddedTo; } +void LibraryUpdateInfo::setFoldersAddedTo(QStringList newFoldersAddedTo) { + m_foldersAddedTo = newFoldersAddedTo; + emit foldersAddedToChanged(newFoldersAddedTo); +} + +QStringList LibraryUpdateInfo::foldersRemovedFrom() const { return m_foldersRemovedFrom; } +void LibraryUpdateInfo::setFoldersRemovedFrom(QStringList newFoldersRemovedFrom) { + m_foldersRemovedFrom = newFoldersRemovedFrom; + emit foldersRemovedFromChanged(newFoldersRemovedFrom); +} + +QStringList LibraryUpdateInfo::itemsAdded() const { return m_itemsAdded; } +void LibraryUpdateInfo::setItemsAdded(QStringList newItemsAdded) { + m_itemsAdded = newItemsAdded; + emit itemsAddedChanged(newItemsAdded); +} + +QStringList LibraryUpdateInfo::itemsRemoved() const { return m_itemsRemoved; } +void LibraryUpdateInfo::setItemsRemoved(QStringList newItemsRemoved) { + m_itemsRemoved = newItemsRemoved; + emit itemsRemovedChanged(newItemsRemoved); +} + +QStringList LibraryUpdateInfo::itemsUpdated() const { return m_itemsUpdated; } +void LibraryUpdateInfo::setItemsUpdated(QStringList newItemsUpdated) { + m_itemsUpdated = newItemsUpdated; + emit itemsUpdatedChanged(newItemsUpdated); +} + +QStringList LibraryUpdateInfo::collectionFolders() const { return m_collectionFolders; } +void LibraryUpdateInfo::setCollectionFolders(QStringList newCollectionFolders) { + m_collectionFolders = newCollectionFolders; + emit collectionFoldersChanged(newCollectionFolders); +} + +bool LibraryUpdateInfo::isEmpty() const { return m_isEmpty; } +void LibraryUpdateInfo::setIsEmpty(bool newIsEmpty) { + m_isEmpty = newIsEmpty; + emit isEmptyChanged(newIsEmpty); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/listingsproviderinfo.cpp b/core/src/DTO/listingsproviderinfo.cpp new file mode 100644 index 0000000..cbed69a --- /dev/null +++ b/core/src/DTO/listingsproviderinfo.cpp @@ -0,0 +1,161 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ListingsProviderInfo::ListingsProviderInfo(QObject *parent) : QObject(parent) {} + +ListingsProviderInfo *ListingsProviderInfo::fromJSON(QJsonObject source, QObject *parent) { + ListingsProviderInfo *instance = new ListingsProviderInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void ListingsProviderInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ListingsProviderInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ListingsProviderInfo::jellyfinId() const { return m_jellyfinId; } +void ListingsProviderInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString ListingsProviderInfo::type() const { return m_type; } +void ListingsProviderInfo::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString ListingsProviderInfo::username() const { return m_username; } +void ListingsProviderInfo::setUsername(QString newUsername) { + m_username = newUsername; + emit usernameChanged(newUsername); +} + +QString ListingsProviderInfo::password() const { return m_password; } +void ListingsProviderInfo::setPassword(QString newPassword) { + m_password = newPassword; + emit passwordChanged(newPassword); +} + +QString ListingsProviderInfo::listingsId() const { return m_listingsId; } +void ListingsProviderInfo::setListingsId(QString newListingsId) { + m_listingsId = newListingsId; + emit listingsIdChanged(newListingsId); +} + +QString ListingsProviderInfo::zipCode() const { return m_zipCode; } +void ListingsProviderInfo::setZipCode(QString newZipCode) { + m_zipCode = newZipCode; + emit zipCodeChanged(newZipCode); +} + +QString ListingsProviderInfo::country() const { return m_country; } +void ListingsProviderInfo::setCountry(QString newCountry) { + m_country = newCountry; + emit countryChanged(newCountry); +} + +QString ListingsProviderInfo::path() const { return m_path; } +void ListingsProviderInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QStringList ListingsProviderInfo::enabledTuners() const { return m_enabledTuners; } +void ListingsProviderInfo::setEnabledTuners(QStringList newEnabledTuners) { + m_enabledTuners = newEnabledTuners; + emit enabledTunersChanged(newEnabledTuners); +} + +bool ListingsProviderInfo::enableAllTuners() const { return m_enableAllTuners; } +void ListingsProviderInfo::setEnableAllTuners(bool newEnableAllTuners) { + m_enableAllTuners = newEnableAllTuners; + emit enableAllTunersChanged(newEnableAllTuners); +} + +QStringList ListingsProviderInfo::newsCategories() const { return m_newsCategories; } +void ListingsProviderInfo::setNewsCategories(QStringList newNewsCategories) { + m_newsCategories = newNewsCategories; + emit newsCategoriesChanged(newNewsCategories); +} + +QStringList ListingsProviderInfo::sportsCategories() const { return m_sportsCategories; } +void ListingsProviderInfo::setSportsCategories(QStringList newSportsCategories) { + m_sportsCategories = newSportsCategories; + emit sportsCategoriesChanged(newSportsCategories); +} + +QStringList ListingsProviderInfo::kidsCategories() const { return m_kidsCategories; } +void ListingsProviderInfo::setKidsCategories(QStringList newKidsCategories) { + m_kidsCategories = newKidsCategories; + emit kidsCategoriesChanged(newKidsCategories); +} + +QStringList ListingsProviderInfo::movieCategories() const { return m_movieCategories; } +void ListingsProviderInfo::setMovieCategories(QStringList newMovieCategories) { + m_movieCategories = newMovieCategories; + emit movieCategoriesChanged(newMovieCategories); +} + +QList ListingsProviderInfo::channelMappings() const { return m_channelMappings; } +void ListingsProviderInfo::setChannelMappings(QList newChannelMappings) { + m_channelMappings = newChannelMappings; + emit channelMappingsChanged(newChannelMappings); +} + +QString ListingsProviderInfo::moviePrefix() const { return m_moviePrefix; } +void ListingsProviderInfo::setMoviePrefix(QString newMoviePrefix) { + m_moviePrefix = newMoviePrefix; + emit moviePrefixChanged(newMoviePrefix); +} + +QString ListingsProviderInfo::preferredLanguage() const { return m_preferredLanguage; } +void ListingsProviderInfo::setPreferredLanguage(QString newPreferredLanguage) { + m_preferredLanguage = newPreferredLanguage; + emit preferredLanguageChanged(newPreferredLanguage); +} + +QString ListingsProviderInfo::userAgent() const { return m_userAgent; } +void ListingsProviderInfo::setUserAgent(QString newUserAgent) { + m_userAgent = newUserAgent; + emit userAgentChanged(newUserAgent); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/livestreamresponse.cpp b/core/src/DTO/livestreamresponse.cpp new file mode 100644 index 0000000..8ce54e5 --- /dev/null +++ b/core/src/DTO/livestreamresponse.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LiveStreamResponse::LiveStreamResponse(QObject *parent) : QObject(parent) {} + +LiveStreamResponse *LiveStreamResponse::fromJSON(QJsonObject source, QObject *parent) { + LiveStreamResponse *instance = new LiveStreamResponse(parent); + instance->updateFromJSON(source); + return instance; +} + +void LiveStreamResponse::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject LiveStreamResponse::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +MediaSourceInfo * LiveStreamResponse::mediaSource() const { return m_mediaSource; } +void LiveStreamResponse::setMediaSource(MediaSourceInfo * newMediaSource) { + m_mediaSource = newMediaSource; + emit mediaSourceChanged(newMediaSource); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/livetvinfo.cpp b/core/src/DTO/livetvinfo.cpp new file mode 100644 index 0000000..a659dab --- /dev/null +++ b/core/src/DTO/livetvinfo.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LiveTvInfo::LiveTvInfo(QObject *parent) : QObject(parent) {} + +LiveTvInfo *LiveTvInfo::fromJSON(QJsonObject source, QObject *parent) { + LiveTvInfo *instance = new LiveTvInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void LiveTvInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject LiveTvInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList LiveTvInfo::services() const { return m_services; } +void LiveTvInfo::setServices(QList newServices) { + m_services = newServices; + emit servicesChanged(newServices); +} + +bool LiveTvInfo::isEnabled() const { return m_isEnabled; } +void LiveTvInfo::setIsEnabled(bool newIsEnabled) { + m_isEnabled = newIsEnabled; + emit isEnabledChanged(newIsEnabled); +} + +QStringList LiveTvInfo::enabledUsers() const { return m_enabledUsers; } +void LiveTvInfo::setEnabledUsers(QStringList newEnabledUsers) { + m_enabledUsers = newEnabledUsers; + emit enabledUsersChanged(newEnabledUsers); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/livetvserviceinfo.cpp b/core/src/DTO/livetvserviceinfo.cpp new file mode 100644 index 0000000..5f93253 --- /dev/null +++ b/core/src/DTO/livetvserviceinfo.cpp @@ -0,0 +1,103 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +LiveTvServiceInfo::LiveTvServiceInfo(QObject *parent) : QObject(parent) {} + +LiveTvServiceInfo *LiveTvServiceInfo::fromJSON(QJsonObject source, QObject *parent) { + LiveTvServiceInfo *instance = new LiveTvServiceInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void LiveTvServiceInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject LiveTvServiceInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString LiveTvServiceInfo::name() const { return m_name; } +void LiveTvServiceInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString LiveTvServiceInfo::homePageUrl() const { return m_homePageUrl; } +void LiveTvServiceInfo::setHomePageUrl(QString newHomePageUrl) { + m_homePageUrl = newHomePageUrl; + emit homePageUrlChanged(newHomePageUrl); +} + +LiveTvServiceStatus LiveTvServiceInfo::status() const { return m_status; } +void LiveTvServiceInfo::setStatus(LiveTvServiceStatus newStatus) { + m_status = newStatus; + emit statusChanged(newStatus); +} + +QString LiveTvServiceInfo::statusMessage() const { return m_statusMessage; } +void LiveTvServiceInfo::setStatusMessage(QString newStatusMessage) { + m_statusMessage = newStatusMessage; + emit statusMessageChanged(newStatusMessage); +} + +QString LiveTvServiceInfo::version() const { return m_version; } +void LiveTvServiceInfo::setVersion(QString newVersion) { + m_version = newVersion; + emit versionChanged(newVersion); +} + +bool LiveTvServiceInfo::hasUpdateAvailable() const { return m_hasUpdateAvailable; } +void LiveTvServiceInfo::setHasUpdateAvailable(bool newHasUpdateAvailable) { + m_hasUpdateAvailable = newHasUpdateAvailable; + emit hasUpdateAvailableChanged(newHasUpdateAvailable); +} + +bool LiveTvServiceInfo::isVisible() const { return m_isVisible; } +void LiveTvServiceInfo::setIsVisible(bool newIsVisible) { + m_isVisible = newIsVisible; + emit isVisibleChanged(newIsVisible); +} + +QStringList LiveTvServiceInfo::tuners() const { return m_tuners; } +void LiveTvServiceInfo::setTuners(QStringList newTuners) { + m_tuners = newTuners; + emit tunersChanged(newTuners); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/livetvservicestatus.cpp b/core/src/DTO/livetvservicestatus.cpp new file mode 100644 index 0000000..26cac76 --- /dev/null +++ b/core/src/DTO/livetvservicestatus.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LiveTvServiceStatusClass::LiveTvServiceStatusClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/localizationoption.cpp b/core/src/DTO/localizationoption.cpp new file mode 100644 index 0000000..0b2013b --- /dev/null +++ b/core/src/DTO/localizationoption.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LocalizationOption::LocalizationOption(QObject *parent) : QObject(parent) {} + +LocalizationOption *LocalizationOption::fromJSON(QJsonObject source, QObject *parent) { + LocalizationOption *instance = new LocalizationOption(parent); + instance->updateFromJSON(source); + return instance; +} + +void LocalizationOption::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject LocalizationOption::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString LocalizationOption::name() const { return m_name; } +void LocalizationOption::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString LocalizationOption::value() const { return m_value; } +void LocalizationOption::setValue(QString newValue) { + m_value = newValue; + emit valueChanged(newValue); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/locationtype.cpp b/core/src/DTO/locationtype.cpp new file mode 100644 index 0000000..04f74fb --- /dev/null +++ b/core/src/DTO/locationtype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LocationTypeClass::LocationTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/logfile.cpp b/core/src/DTO/logfile.cpp new file mode 100644 index 0000000..5c73609 --- /dev/null +++ b/core/src/DTO/logfile.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LogFile::LogFile(QObject *parent) : QObject(parent) {} + +LogFile *LogFile::fromJSON(QJsonObject source, QObject *parent) { + LogFile *instance = new LogFile(parent); + instance->updateFromJSON(source); + return instance; +} + +void LogFile::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject LogFile::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QDateTime LogFile::dateCreated() const { return m_dateCreated; } +void LogFile::setDateCreated(QDateTime newDateCreated) { + m_dateCreated = newDateCreated; + emit dateCreatedChanged(newDateCreated); +} + +QDateTime LogFile::dateModified() const { return m_dateModified; } +void LogFile::setDateModified(QDateTime newDateModified) { + m_dateModified = newDateModified; + emit dateModifiedChanged(newDateModified); +} + +qint64 LogFile::size() const { return m_size; } +void LogFile::setSize(qint64 newSize) { + m_size = newSize; + emit sizeChanged(newSize); +} + +QString LogFile::name() const { return m_name; } +void LogFile::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/loglevel.cpp b/core/src/DTO/loglevel.cpp new file mode 100644 index 0000000..0b4e7ad --- /dev/null +++ b/core/src/DTO/loglevel.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +LogLevelClass::LogLevelClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediaattachment.cpp b/core/src/DTO/mediaattachment.cpp new file mode 100644 index 0000000..c28b802 --- /dev/null +++ b/core/src/DTO/mediaattachment.cpp @@ -0,0 +1,95 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MediaAttachment::MediaAttachment(QObject *parent) : QObject(parent) {} + +MediaAttachment *MediaAttachment::fromJSON(QJsonObject source, QObject *parent) { + MediaAttachment *instance = new MediaAttachment(parent); + instance->updateFromJSON(source); + return instance; +} + +void MediaAttachment::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MediaAttachment::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MediaAttachment::codec() const { return m_codec; } +void MediaAttachment::setCodec(QString newCodec) { + m_codec = newCodec; + emit codecChanged(newCodec); +} + +QString MediaAttachment::codecTag() const { return m_codecTag; } +void MediaAttachment::setCodecTag(QString newCodecTag) { + m_codecTag = newCodecTag; + emit codecTagChanged(newCodecTag); +} + +QString MediaAttachment::comment() const { return m_comment; } +void MediaAttachment::setComment(QString newComment) { + m_comment = newComment; + emit commentChanged(newComment); +} + +qint32 MediaAttachment::index() const { return m_index; } +void MediaAttachment::setIndex(qint32 newIndex) { + m_index = newIndex; + emit indexChanged(newIndex); +} + +QString MediaAttachment::fileName() const { return m_fileName; } +void MediaAttachment::setFileName(QString newFileName) { + m_fileName = newFileName; + emit fileNameChanged(newFileName); +} + +QString MediaAttachment::mimeType() const { return m_mimeType; } +void MediaAttachment::setMimeType(QString newMimeType) { + m_mimeType = newMimeType; + emit mimeTypeChanged(newMimeType); +} + +QString MediaAttachment::deliveryUrl() const { return m_deliveryUrl; } +void MediaAttachment::setDeliveryUrl(QString newDeliveryUrl) { + m_deliveryUrl = newDeliveryUrl; + emit deliveryUrlChanged(newDeliveryUrl); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediaencoderpathdto.cpp b/core/src/DTO/mediaencoderpathdto.cpp new file mode 100644 index 0000000..22102c3 --- /dev/null +++ b/core/src/DTO/mediaencoderpathdto.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MediaEncoderPathDto::MediaEncoderPathDto(QObject *parent) : QObject(parent) {} + +MediaEncoderPathDto *MediaEncoderPathDto::fromJSON(QJsonObject source, QObject *parent) { + MediaEncoderPathDto *instance = new MediaEncoderPathDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void MediaEncoderPathDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MediaEncoderPathDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MediaEncoderPathDto::path() const { return m_path; } +void MediaEncoderPathDto::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString MediaEncoderPathDto::pathType() const { return m_pathType; } +void MediaEncoderPathDto::setPathType(QString newPathType) { + m_pathType = newPathType; + emit pathTypeChanged(newPathType); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediapathdto.cpp b/core/src/DTO/mediapathdto.cpp new file mode 100644 index 0000000..2b73508 --- /dev/null +++ b/core/src/DTO/mediapathdto.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MediaPathDto::MediaPathDto(QObject *parent) : QObject(parent) {} + +MediaPathDto *MediaPathDto::fromJSON(QJsonObject source, QObject *parent) { + MediaPathDto *instance = new MediaPathDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void MediaPathDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MediaPathDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MediaPathDto::name() const { return m_name; } +void MediaPathDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString MediaPathDto::path() const { return m_path; } +void MediaPathDto::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +MediaPathInfo * MediaPathDto::pathInfo() const { return m_pathInfo; } +void MediaPathDto::setPathInfo(MediaPathInfo * newPathInfo) { + m_pathInfo = newPathInfo; + emit pathInfoChanged(newPathInfo); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediapathinfo.cpp b/core/src/DTO/mediapathinfo.cpp new file mode 100644 index 0000000..b3f8048 --- /dev/null +++ b/core/src/DTO/mediapathinfo.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MediaPathInfo::MediaPathInfo(QObject *parent) : QObject(parent) {} + +MediaPathInfo *MediaPathInfo::fromJSON(QJsonObject source, QObject *parent) { + MediaPathInfo *instance = new MediaPathInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void MediaPathInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MediaPathInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MediaPathInfo::path() const { return m_path; } +void MediaPathInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString MediaPathInfo::networkPath() const { return m_networkPath; } +void MediaPathInfo::setNetworkPath(QString newNetworkPath) { + m_networkPath = newNetworkPath; + emit networkPathChanged(newNetworkPath); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediaprotocol.cpp b/core/src/DTO/mediaprotocol.cpp new file mode 100644 index 0000000..c4aa9da --- /dev/null +++ b/core/src/DTO/mediaprotocol.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MediaProtocolClass::MediaProtocolClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediasourceinfo.cpp b/core/src/DTO/mediasourceinfo.cpp new file mode 100644 index 0000000..c3bc53e --- /dev/null +++ b/core/src/DTO/mediasourceinfo.cpp @@ -0,0 +1,312 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include +#include +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +MediaSourceInfo::MediaSourceInfo(QObject *parent) : QObject(parent) {} + +MediaSourceInfo *MediaSourceInfo::fromJSON(QJsonObject source, QObject *parent) { + MediaSourceInfo *instance = new MediaSourceInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void MediaSourceInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MediaSourceInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +MediaProtocol MediaSourceInfo::protocol() const { return m_protocol; } +void MediaSourceInfo::setProtocol(MediaProtocol newProtocol) { + m_protocol = newProtocol; + emit protocolChanged(newProtocol); +} + +QString MediaSourceInfo::jellyfinId() const { return m_jellyfinId; } +void MediaSourceInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString MediaSourceInfo::path() const { return m_path; } +void MediaSourceInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString MediaSourceInfo::encoderPath() const { return m_encoderPath; } +void MediaSourceInfo::setEncoderPath(QString newEncoderPath) { + m_encoderPath = newEncoderPath; + emit encoderPathChanged(newEncoderPath); +} + +MediaProtocol MediaSourceInfo::encoderProtocol() const { return m_encoderProtocol; } +void MediaSourceInfo::setEncoderProtocol(MediaProtocol newEncoderProtocol) { + m_encoderProtocol = newEncoderProtocol; + emit encoderProtocolChanged(newEncoderProtocol); +} + +MediaSourceType MediaSourceInfo::type() const { return m_type; } +void MediaSourceInfo::setType(MediaSourceType newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString MediaSourceInfo::container() const { return m_container; } +void MediaSourceInfo::setContainer(QString newContainer) { + m_container = newContainer; + emit containerChanged(newContainer); +} + +qint64 MediaSourceInfo::size() const { return m_size; } +void MediaSourceInfo::setSize(qint64 newSize) { + m_size = newSize; + emit sizeChanged(newSize); +} + +QString MediaSourceInfo::name() const { return m_name; } +void MediaSourceInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +bool MediaSourceInfo::isRemote() const { return m_isRemote; } +void MediaSourceInfo::setIsRemote(bool newIsRemote) { + m_isRemote = newIsRemote; + emit isRemoteChanged(newIsRemote); +} + +QString MediaSourceInfo::eTag() const { return m_eTag; } +void MediaSourceInfo::setETag(QString newETag) { + m_eTag = newETag; + emit eTagChanged(newETag); +} + +qint64 MediaSourceInfo::runTimeTicks() const { return m_runTimeTicks; } +void MediaSourceInfo::setRunTimeTicks(qint64 newRunTimeTicks) { + m_runTimeTicks = newRunTimeTicks; + emit runTimeTicksChanged(newRunTimeTicks); +} + +bool MediaSourceInfo::readAtNativeFramerate() const { return m_readAtNativeFramerate; } +void MediaSourceInfo::setReadAtNativeFramerate(bool newReadAtNativeFramerate) { + m_readAtNativeFramerate = newReadAtNativeFramerate; + emit readAtNativeFramerateChanged(newReadAtNativeFramerate); +} + +bool MediaSourceInfo::ignoreDts() const { return m_ignoreDts; } +void MediaSourceInfo::setIgnoreDts(bool newIgnoreDts) { + m_ignoreDts = newIgnoreDts; + emit ignoreDtsChanged(newIgnoreDts); +} + +bool MediaSourceInfo::ignoreIndex() const { return m_ignoreIndex; } +void MediaSourceInfo::setIgnoreIndex(bool newIgnoreIndex) { + m_ignoreIndex = newIgnoreIndex; + emit ignoreIndexChanged(newIgnoreIndex); +} + +bool MediaSourceInfo::genPtsInput() const { return m_genPtsInput; } +void MediaSourceInfo::setGenPtsInput(bool newGenPtsInput) { + m_genPtsInput = newGenPtsInput; + emit genPtsInputChanged(newGenPtsInput); +} + +bool MediaSourceInfo::supportsTranscoding() const { return m_supportsTranscoding; } +void MediaSourceInfo::setSupportsTranscoding(bool newSupportsTranscoding) { + m_supportsTranscoding = newSupportsTranscoding; + emit supportsTranscodingChanged(newSupportsTranscoding); +} + +bool MediaSourceInfo::supportsDirectStream() const { return m_supportsDirectStream; } +void MediaSourceInfo::setSupportsDirectStream(bool newSupportsDirectStream) { + m_supportsDirectStream = newSupportsDirectStream; + emit supportsDirectStreamChanged(newSupportsDirectStream); +} + +bool MediaSourceInfo::supportsDirectPlay() const { return m_supportsDirectPlay; } +void MediaSourceInfo::setSupportsDirectPlay(bool newSupportsDirectPlay) { + m_supportsDirectPlay = newSupportsDirectPlay; + emit supportsDirectPlayChanged(newSupportsDirectPlay); +} + +bool MediaSourceInfo::isInfiniteStream() const { return m_isInfiniteStream; } +void MediaSourceInfo::setIsInfiniteStream(bool newIsInfiniteStream) { + m_isInfiniteStream = newIsInfiniteStream; + emit isInfiniteStreamChanged(newIsInfiniteStream); +} + +bool MediaSourceInfo::requiresOpening() const { return m_requiresOpening; } +void MediaSourceInfo::setRequiresOpening(bool newRequiresOpening) { + m_requiresOpening = newRequiresOpening; + emit requiresOpeningChanged(newRequiresOpening); +} + +QString MediaSourceInfo::openToken() const { return m_openToken; } +void MediaSourceInfo::setOpenToken(QString newOpenToken) { + m_openToken = newOpenToken; + emit openTokenChanged(newOpenToken); +} + +bool MediaSourceInfo::requiresClosing() const { return m_requiresClosing; } +void MediaSourceInfo::setRequiresClosing(bool newRequiresClosing) { + m_requiresClosing = newRequiresClosing; + emit requiresClosingChanged(newRequiresClosing); +} + +QString MediaSourceInfo::liveStreamId() const { return m_liveStreamId; } +void MediaSourceInfo::setLiveStreamId(QString newLiveStreamId) { + m_liveStreamId = newLiveStreamId; + emit liveStreamIdChanged(newLiveStreamId); +} + +qint32 MediaSourceInfo::bufferMs() const { return m_bufferMs; } +void MediaSourceInfo::setBufferMs(qint32 newBufferMs) { + m_bufferMs = newBufferMs; + emit bufferMsChanged(newBufferMs); +} + +bool MediaSourceInfo::requiresLooping() const { return m_requiresLooping; } +void MediaSourceInfo::setRequiresLooping(bool newRequiresLooping) { + m_requiresLooping = newRequiresLooping; + emit requiresLoopingChanged(newRequiresLooping); +} + +bool MediaSourceInfo::supportsProbing() const { return m_supportsProbing; } +void MediaSourceInfo::setSupportsProbing(bool newSupportsProbing) { + m_supportsProbing = newSupportsProbing; + emit supportsProbingChanged(newSupportsProbing); +} + +VideoType MediaSourceInfo::videoType() const { return m_videoType; } +void MediaSourceInfo::setVideoType(VideoType newVideoType) { + m_videoType = newVideoType; + emit videoTypeChanged(newVideoType); +} + +IsoType MediaSourceInfo::isoType() const { return m_isoType; } +void MediaSourceInfo::setIsoType(IsoType newIsoType) { + m_isoType = newIsoType; + emit isoTypeChanged(newIsoType); +} + +Video3DFormat MediaSourceInfo::video3DFormat() const { return m_video3DFormat; } +void MediaSourceInfo::setVideo3DFormat(Video3DFormat newVideo3DFormat) { + m_video3DFormat = newVideo3DFormat; + emit video3DFormatChanged(newVideo3DFormat); +} + +QList MediaSourceInfo::mediaStreams() const { return m_mediaStreams; } +void MediaSourceInfo::setMediaStreams(QList newMediaStreams) { + m_mediaStreams = newMediaStreams; + emit mediaStreamsChanged(newMediaStreams); +} + +QList MediaSourceInfo::mediaAttachments() const { return m_mediaAttachments; } +void MediaSourceInfo::setMediaAttachments(QList newMediaAttachments) { + m_mediaAttachments = newMediaAttachments; + emit mediaAttachmentsChanged(newMediaAttachments); +} + +QStringList MediaSourceInfo::formats() const { return m_formats; } +void MediaSourceInfo::setFormats(QStringList newFormats) { + m_formats = newFormats; + emit formatsChanged(newFormats); +} + +qint32 MediaSourceInfo::bitrate() const { return m_bitrate; } +void MediaSourceInfo::setBitrate(qint32 newBitrate) { + m_bitrate = newBitrate; + emit bitrateChanged(newBitrate); +} + +TransportStreamTimestamp MediaSourceInfo::timestamp() const { return m_timestamp; } +void MediaSourceInfo::setTimestamp(TransportStreamTimestamp newTimestamp) { + m_timestamp = newTimestamp; + emit timestampChanged(newTimestamp); +} + +QJsonObject MediaSourceInfo::requiredHttpHeaders() const { return m_requiredHttpHeaders; } +void MediaSourceInfo::setRequiredHttpHeaders(QJsonObject newRequiredHttpHeaders) { + m_requiredHttpHeaders = newRequiredHttpHeaders; + emit requiredHttpHeadersChanged(newRequiredHttpHeaders); +} + +QString MediaSourceInfo::transcodingUrl() const { return m_transcodingUrl; } +void MediaSourceInfo::setTranscodingUrl(QString newTranscodingUrl) { + m_transcodingUrl = newTranscodingUrl; + emit transcodingUrlChanged(newTranscodingUrl); +} + +QString MediaSourceInfo::transcodingSubProtocol() const { return m_transcodingSubProtocol; } +void MediaSourceInfo::setTranscodingSubProtocol(QString newTranscodingSubProtocol) { + m_transcodingSubProtocol = newTranscodingSubProtocol; + emit transcodingSubProtocolChanged(newTranscodingSubProtocol); +} + +QString MediaSourceInfo::transcodingContainer() const { return m_transcodingContainer; } +void MediaSourceInfo::setTranscodingContainer(QString newTranscodingContainer) { + m_transcodingContainer = newTranscodingContainer; + emit transcodingContainerChanged(newTranscodingContainer); +} + +qint32 MediaSourceInfo::analyzeDurationMs() const { return m_analyzeDurationMs; } +void MediaSourceInfo::setAnalyzeDurationMs(qint32 newAnalyzeDurationMs) { + m_analyzeDurationMs = newAnalyzeDurationMs; + emit analyzeDurationMsChanged(newAnalyzeDurationMs); +} + +qint32 MediaSourceInfo::defaultAudioStreamIndex() const { return m_defaultAudioStreamIndex; } +void MediaSourceInfo::setDefaultAudioStreamIndex(qint32 newDefaultAudioStreamIndex) { + m_defaultAudioStreamIndex = newDefaultAudioStreamIndex; + emit defaultAudioStreamIndexChanged(newDefaultAudioStreamIndex); +} + +qint32 MediaSourceInfo::defaultSubtitleStreamIndex() const { return m_defaultSubtitleStreamIndex; } +void MediaSourceInfo::setDefaultSubtitleStreamIndex(qint32 newDefaultSubtitleStreamIndex) { + m_defaultSubtitleStreamIndex = newDefaultSubtitleStreamIndex; + emit defaultSubtitleStreamIndexChanged(newDefaultSubtitleStreamIndex); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediasourcetype.cpp b/core/src/DTO/mediasourcetype.cpp new file mode 100644 index 0000000..2cb1339 --- /dev/null +++ b/core/src/DTO/mediasourcetype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MediaSourceTypeClass::MediaSourceTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediastream.cpp b/core/src/DTO/mediastream.cpp new file mode 100644 index 0000000..1d0708c --- /dev/null +++ b/core/src/DTO/mediastream.cpp @@ -0,0 +1,338 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +MediaStream::MediaStream(QObject *parent) : QObject(parent) {} + +MediaStream *MediaStream::fromJSON(QJsonObject source, QObject *parent) { + MediaStream *instance = new MediaStream(parent); + instance->updateFromJSON(source); + return instance; +} + +void MediaStream::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MediaStream::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MediaStream::codec() const { return m_codec; } +void MediaStream::setCodec(QString newCodec) { + m_codec = newCodec; + emit codecChanged(newCodec); +} + +QString MediaStream::codecTag() const { return m_codecTag; } +void MediaStream::setCodecTag(QString newCodecTag) { + m_codecTag = newCodecTag; + emit codecTagChanged(newCodecTag); +} + +QString MediaStream::language() const { return m_language; } +void MediaStream::setLanguage(QString newLanguage) { + m_language = newLanguage; + emit languageChanged(newLanguage); +} + +QString MediaStream::colorRange() const { return m_colorRange; } +void MediaStream::setColorRange(QString newColorRange) { + m_colorRange = newColorRange; + emit colorRangeChanged(newColorRange); +} + +QString MediaStream::colorSpace() const { return m_colorSpace; } +void MediaStream::setColorSpace(QString newColorSpace) { + m_colorSpace = newColorSpace; + emit colorSpaceChanged(newColorSpace); +} + +QString MediaStream::colorTransfer() const { return m_colorTransfer; } +void MediaStream::setColorTransfer(QString newColorTransfer) { + m_colorTransfer = newColorTransfer; + emit colorTransferChanged(newColorTransfer); +} + +QString MediaStream::colorPrimaries() const { return m_colorPrimaries; } +void MediaStream::setColorPrimaries(QString newColorPrimaries) { + m_colorPrimaries = newColorPrimaries; + emit colorPrimariesChanged(newColorPrimaries); +} + +QString MediaStream::comment() const { return m_comment; } +void MediaStream::setComment(QString newComment) { + m_comment = newComment; + emit commentChanged(newComment); +} + +QString MediaStream::timeBase() const { return m_timeBase; } +void MediaStream::setTimeBase(QString newTimeBase) { + m_timeBase = newTimeBase; + emit timeBaseChanged(newTimeBase); +} + +QString MediaStream::codecTimeBase() const { return m_codecTimeBase; } +void MediaStream::setCodecTimeBase(QString newCodecTimeBase) { + m_codecTimeBase = newCodecTimeBase; + emit codecTimeBaseChanged(newCodecTimeBase); +} + +QString MediaStream::title() const { return m_title; } +void MediaStream::setTitle(QString newTitle) { + m_title = newTitle; + emit titleChanged(newTitle); +} + +QString MediaStream::videoRange() const { return m_videoRange; } +void MediaStream::setVideoRange(QString newVideoRange) { + m_videoRange = newVideoRange; + emit videoRangeChanged(newVideoRange); +} + +QString MediaStream::localizedUndefined() const { return m_localizedUndefined; } +void MediaStream::setLocalizedUndefined(QString newLocalizedUndefined) { + m_localizedUndefined = newLocalizedUndefined; + emit localizedUndefinedChanged(newLocalizedUndefined); +} + +QString MediaStream::localizedDefault() const { return m_localizedDefault; } +void MediaStream::setLocalizedDefault(QString newLocalizedDefault) { + m_localizedDefault = newLocalizedDefault; + emit localizedDefaultChanged(newLocalizedDefault); +} + +QString MediaStream::localizedForced() const { return m_localizedForced; } +void MediaStream::setLocalizedForced(QString newLocalizedForced) { + m_localizedForced = newLocalizedForced; + emit localizedForcedChanged(newLocalizedForced); +} + +QString MediaStream::displayTitle() const { return m_displayTitle; } +void MediaStream::setDisplayTitle(QString newDisplayTitle) { + m_displayTitle = newDisplayTitle; + emit displayTitleChanged(newDisplayTitle); +} + +QString MediaStream::nalLengthSize() const { return m_nalLengthSize; } +void MediaStream::setNalLengthSize(QString newNalLengthSize) { + m_nalLengthSize = newNalLengthSize; + emit nalLengthSizeChanged(newNalLengthSize); +} + +bool MediaStream::isInterlaced() const { return m_isInterlaced; } +void MediaStream::setIsInterlaced(bool newIsInterlaced) { + m_isInterlaced = newIsInterlaced; + emit isInterlacedChanged(newIsInterlaced); +} + +bool MediaStream::isAVC() const { return m_isAVC; } +void MediaStream::setIsAVC(bool newIsAVC) { + m_isAVC = newIsAVC; + emit isAVCChanged(newIsAVC); +} + +QString MediaStream::channelLayout() const { return m_channelLayout; } +void MediaStream::setChannelLayout(QString newChannelLayout) { + m_channelLayout = newChannelLayout; + emit channelLayoutChanged(newChannelLayout); +} + +qint32 MediaStream::bitRate() const { return m_bitRate; } +void MediaStream::setBitRate(qint32 newBitRate) { + m_bitRate = newBitRate; + emit bitRateChanged(newBitRate); +} + +qint32 MediaStream::bitDepth() const { return m_bitDepth; } +void MediaStream::setBitDepth(qint32 newBitDepth) { + m_bitDepth = newBitDepth; + emit bitDepthChanged(newBitDepth); +} + +qint32 MediaStream::refFrames() const { return m_refFrames; } +void MediaStream::setRefFrames(qint32 newRefFrames) { + m_refFrames = newRefFrames; + emit refFramesChanged(newRefFrames); +} + +qint32 MediaStream::packetLength() const { return m_packetLength; } +void MediaStream::setPacketLength(qint32 newPacketLength) { + m_packetLength = newPacketLength; + emit packetLengthChanged(newPacketLength); +} + +qint32 MediaStream::channels() const { return m_channels; } +void MediaStream::setChannels(qint32 newChannels) { + m_channels = newChannels; + emit channelsChanged(newChannels); +} + +qint32 MediaStream::sampleRate() const { return m_sampleRate; } +void MediaStream::setSampleRate(qint32 newSampleRate) { + m_sampleRate = newSampleRate; + emit sampleRateChanged(newSampleRate); +} + +bool MediaStream::isDefault() const { return m_isDefault; } +void MediaStream::setIsDefault(bool newIsDefault) { + m_isDefault = newIsDefault; + emit isDefaultChanged(newIsDefault); +} + +bool MediaStream::isForced() const { return m_isForced; } +void MediaStream::setIsForced(bool newIsForced) { + m_isForced = newIsForced; + emit isForcedChanged(newIsForced); +} + +qint32 MediaStream::height() const { return m_height; } +void MediaStream::setHeight(qint32 newHeight) { + m_height = newHeight; + emit heightChanged(newHeight); +} + +qint32 MediaStream::width() const { return m_width; } +void MediaStream::setWidth(qint32 newWidth) { + m_width = newWidth; + emit widthChanged(newWidth); +} + +float MediaStream::averageFrameRate() const { return m_averageFrameRate; } +void MediaStream::setAverageFrameRate(float newAverageFrameRate) { + m_averageFrameRate = newAverageFrameRate; + emit averageFrameRateChanged(newAverageFrameRate); +} + +float MediaStream::realFrameRate() const { return m_realFrameRate; } +void MediaStream::setRealFrameRate(float newRealFrameRate) { + m_realFrameRate = newRealFrameRate; + emit realFrameRateChanged(newRealFrameRate); +} + +QString MediaStream::profile() const { return m_profile; } +void MediaStream::setProfile(QString newProfile) { + m_profile = newProfile; + emit profileChanged(newProfile); +} + +MediaStreamType MediaStream::type() const { return m_type; } +void MediaStream::setType(MediaStreamType newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString MediaStream::aspectRatio() const { return m_aspectRatio; } +void MediaStream::setAspectRatio(QString newAspectRatio) { + m_aspectRatio = newAspectRatio; + emit aspectRatioChanged(newAspectRatio); +} + +qint32 MediaStream::index() const { return m_index; } +void MediaStream::setIndex(qint32 newIndex) { + m_index = newIndex; + emit indexChanged(newIndex); +} + +qint32 MediaStream::score() const { return m_score; } +void MediaStream::setScore(qint32 newScore) { + m_score = newScore; + emit scoreChanged(newScore); +} + +bool MediaStream::isExternal() const { return m_isExternal; } +void MediaStream::setIsExternal(bool newIsExternal) { + m_isExternal = newIsExternal; + emit isExternalChanged(newIsExternal); +} + +SubtitleDeliveryMethod MediaStream::deliveryMethod() const { return m_deliveryMethod; } +void MediaStream::setDeliveryMethod(SubtitleDeliveryMethod newDeliveryMethod) { + m_deliveryMethod = newDeliveryMethod; + emit deliveryMethodChanged(newDeliveryMethod); +} + +QString MediaStream::deliveryUrl() const { return m_deliveryUrl; } +void MediaStream::setDeliveryUrl(QString newDeliveryUrl) { + m_deliveryUrl = newDeliveryUrl; + emit deliveryUrlChanged(newDeliveryUrl); +} + +bool MediaStream::isExternalUrl() const { return m_isExternalUrl; } +void MediaStream::setIsExternalUrl(bool newIsExternalUrl) { + m_isExternalUrl = newIsExternalUrl; + emit isExternalUrlChanged(newIsExternalUrl); +} + +bool MediaStream::isTextSubtitleStream() const { return m_isTextSubtitleStream; } +void MediaStream::setIsTextSubtitleStream(bool newIsTextSubtitleStream) { + m_isTextSubtitleStream = newIsTextSubtitleStream; + emit isTextSubtitleStreamChanged(newIsTextSubtitleStream); +} + +bool MediaStream::supportsExternalStream() const { return m_supportsExternalStream; } +void MediaStream::setSupportsExternalStream(bool newSupportsExternalStream) { + m_supportsExternalStream = newSupportsExternalStream; + emit supportsExternalStreamChanged(newSupportsExternalStream); +} + +QString MediaStream::path() const { return m_path; } +void MediaStream::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString MediaStream::pixelFormat() const { return m_pixelFormat; } +void MediaStream::setPixelFormat(QString newPixelFormat) { + m_pixelFormat = newPixelFormat; + emit pixelFormatChanged(newPixelFormat); +} + +double MediaStream::level() const { return m_level; } +void MediaStream::setLevel(double newLevel) { + m_level = newLevel; + emit levelChanged(newLevel); +} + +bool MediaStream::isAnamorphic() const { return m_isAnamorphic; } +void MediaStream::setIsAnamorphic(bool newIsAnamorphic) { + m_isAnamorphic = newIsAnamorphic; + emit isAnamorphicChanged(newIsAnamorphic); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediastreamtype.cpp b/core/src/DTO/mediastreamtype.cpp new file mode 100644 index 0000000..0023f52 --- /dev/null +++ b/core/src/DTO/mediastreamtype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MediaStreamTypeClass::MediaStreamTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediaupdateinfodto.cpp b/core/src/DTO/mediaupdateinfodto.cpp new file mode 100644 index 0000000..7712661 --- /dev/null +++ b/core/src/DTO/mediaupdateinfodto.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MediaUpdateInfoDto::MediaUpdateInfoDto(QObject *parent) : QObject(parent) {} + +MediaUpdateInfoDto *MediaUpdateInfoDto::fromJSON(QJsonObject source, QObject *parent) { + MediaUpdateInfoDto *instance = new MediaUpdateInfoDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void MediaUpdateInfoDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MediaUpdateInfoDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MediaUpdateInfoDto::path() const { return m_path; } +void MediaUpdateInfoDto::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString MediaUpdateInfoDto::updateType() const { return m_updateType; } +void MediaUpdateInfoDto::setUpdateType(QString newUpdateType) { + m_updateType = newUpdateType; + emit updateTypeChanged(newUpdateType); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/mediaurl.cpp b/core/src/DTO/mediaurl.cpp new file mode 100644 index 0000000..f57606b --- /dev/null +++ b/core/src/DTO/mediaurl.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MediaUrl::MediaUrl(QObject *parent) : QObject(parent) {} + +MediaUrl *MediaUrl::fromJSON(QJsonObject source, QObject *parent) { + MediaUrl *instance = new MediaUrl(parent); + instance->updateFromJSON(source); + return instance; +} + +void MediaUrl::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MediaUrl::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MediaUrl::url() const { return m_url; } +void MediaUrl::setUrl(QString newUrl) { + m_url = newUrl; + emit urlChanged(newUrl); +} + +QString MediaUrl::name() const { return m_name; } +void MediaUrl::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/metadataeditorinfo.cpp b/core/src/DTO/metadataeditorinfo.cpp new file mode 100644 index 0000000..7d12963 --- /dev/null +++ b/core/src/DTO/metadataeditorinfo.cpp @@ -0,0 +1,89 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MetadataEditorInfo::MetadataEditorInfo(QObject *parent) : QObject(parent) {} + +MetadataEditorInfo *MetadataEditorInfo::fromJSON(QJsonObject source, QObject *parent) { + MetadataEditorInfo *instance = new MetadataEditorInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void MetadataEditorInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MetadataEditorInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList MetadataEditorInfo::parentalRatingOptions() const { return m_parentalRatingOptions; } +void MetadataEditorInfo::setParentalRatingOptions(QList newParentalRatingOptions) { + m_parentalRatingOptions = newParentalRatingOptions; + emit parentalRatingOptionsChanged(newParentalRatingOptions); +} + +QList MetadataEditorInfo::countries() const { return m_countries; } +void MetadataEditorInfo::setCountries(QList newCountries) { + m_countries = newCountries; + emit countriesChanged(newCountries); +} + +QList MetadataEditorInfo::cultures() const { return m_cultures; } +void MetadataEditorInfo::setCultures(QList newCultures) { + m_cultures = newCultures; + emit culturesChanged(newCultures); +} + +QList MetadataEditorInfo::externalIdInfos() const { return m_externalIdInfos; } +void MetadataEditorInfo::setExternalIdInfos(QList newExternalIdInfos) { + m_externalIdInfos = newExternalIdInfos; + emit externalIdInfosChanged(newExternalIdInfos); +} + +QString MetadataEditorInfo::contentType() const { return m_contentType; } +void MetadataEditorInfo::setContentType(QString newContentType) { + m_contentType = newContentType; + emit contentTypeChanged(newContentType); +} + +QList MetadataEditorInfo::contentTypeOptions() const { return m_contentTypeOptions; } +void MetadataEditorInfo::setContentTypeOptions(QList newContentTypeOptions) { + m_contentTypeOptions = newContentTypeOptions; + emit contentTypeOptionsChanged(newContentTypeOptions); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/metadatafield.cpp b/core/src/DTO/metadatafield.cpp new file mode 100644 index 0000000..da1802a --- /dev/null +++ b/core/src/DTO/metadatafield.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MetadataFieldClass::MetadataFieldClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/metadataoptions.cpp b/core/src/DTO/metadataoptions.cpp new file mode 100644 index 0000000..9555fce --- /dev/null +++ b/core/src/DTO/metadataoptions.cpp @@ -0,0 +1,95 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MetadataOptions::MetadataOptions(QObject *parent) : QObject(parent) {} + +MetadataOptions *MetadataOptions::fromJSON(QJsonObject source, QObject *parent) { + MetadataOptions *instance = new MetadataOptions(parent); + instance->updateFromJSON(source); + return instance; +} + +void MetadataOptions::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MetadataOptions::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MetadataOptions::itemType() const { return m_itemType; } +void MetadataOptions::setItemType(QString newItemType) { + m_itemType = newItemType; + emit itemTypeChanged(newItemType); +} + +QStringList MetadataOptions::disabledMetadataSavers() const { return m_disabledMetadataSavers; } +void MetadataOptions::setDisabledMetadataSavers(QStringList newDisabledMetadataSavers) { + m_disabledMetadataSavers = newDisabledMetadataSavers; + emit disabledMetadataSaversChanged(newDisabledMetadataSavers); +} + +QStringList MetadataOptions::localMetadataReaderOrder() const { return m_localMetadataReaderOrder; } +void MetadataOptions::setLocalMetadataReaderOrder(QStringList newLocalMetadataReaderOrder) { + m_localMetadataReaderOrder = newLocalMetadataReaderOrder; + emit localMetadataReaderOrderChanged(newLocalMetadataReaderOrder); +} + +QStringList MetadataOptions::disabledMetadataFetchers() const { return m_disabledMetadataFetchers; } +void MetadataOptions::setDisabledMetadataFetchers(QStringList newDisabledMetadataFetchers) { + m_disabledMetadataFetchers = newDisabledMetadataFetchers; + emit disabledMetadataFetchersChanged(newDisabledMetadataFetchers); +} + +QStringList MetadataOptions::metadataFetcherOrder() const { return m_metadataFetcherOrder; } +void MetadataOptions::setMetadataFetcherOrder(QStringList newMetadataFetcherOrder) { + m_metadataFetcherOrder = newMetadataFetcherOrder; + emit metadataFetcherOrderChanged(newMetadataFetcherOrder); +} + +QStringList MetadataOptions::disabledImageFetchers() const { return m_disabledImageFetchers; } +void MetadataOptions::setDisabledImageFetchers(QStringList newDisabledImageFetchers) { + m_disabledImageFetchers = newDisabledImageFetchers; + emit disabledImageFetchersChanged(newDisabledImageFetchers); +} + +QStringList MetadataOptions::imageFetcherOrder() const { return m_imageFetcherOrder; } +void MetadataOptions::setImageFetcherOrder(QStringList newImageFetcherOrder) { + m_imageFetcherOrder = newImageFetcherOrder; + emit imageFetcherOrderChanged(newImageFetcherOrder); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/metadatarefreshmode.cpp b/core/src/DTO/metadatarefreshmode.cpp new file mode 100644 index 0000000..7ff3398 --- /dev/null +++ b/core/src/DTO/metadatarefreshmode.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MetadataRefreshModeClass::MetadataRefreshModeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/moveplaylistitemrequestdto.cpp b/core/src/DTO/moveplaylistitemrequestdto.cpp new file mode 100644 index 0000000..22f51bc --- /dev/null +++ b/core/src/DTO/moveplaylistitemrequestdto.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MovePlaylistItemRequestDto::MovePlaylistItemRequestDto(QObject *parent) : QObject(parent) {} + +MovePlaylistItemRequestDto *MovePlaylistItemRequestDto::fromJSON(QJsonObject source, QObject *parent) { + MovePlaylistItemRequestDto *instance = new MovePlaylistItemRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void MovePlaylistItemRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MovePlaylistItemRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MovePlaylistItemRequestDto::playlistItemId() const { return m_playlistItemId; } +void MovePlaylistItemRequestDto::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + +qint32 MovePlaylistItemRequestDto::newIndex() const { return m_newIndex; } +void MovePlaylistItemRequestDto::setNewIndex(qint32 newNewIndex) { + m_newIndex = newNewIndex; + emit newIndexChanged(newNewIndex); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/movieinfo.cpp b/core/src/DTO/movieinfo.cpp new file mode 100644 index 0000000..317a9ae --- /dev/null +++ b/core/src/DTO/movieinfo.cpp @@ -0,0 +1,113 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MovieInfo::MovieInfo(QObject *parent) : QObject(parent) {} + +MovieInfo *MovieInfo::fromJSON(QJsonObject source, QObject *parent) { + MovieInfo *instance = new MovieInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void MovieInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MovieInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MovieInfo::name() const { return m_name; } +void MovieInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString MovieInfo::path() const { return m_path; } +void MovieInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString MovieInfo::metadataLanguage() const { return m_metadataLanguage; } +void MovieInfo::setMetadataLanguage(QString newMetadataLanguage) { + m_metadataLanguage = newMetadataLanguage; + emit metadataLanguageChanged(newMetadataLanguage); +} + +QString MovieInfo::metadataCountryCode() const { return m_metadataCountryCode; } +void MovieInfo::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QJsonObject MovieInfo::providerIds() const { return m_providerIds; } +void MovieInfo::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 MovieInfo::year() const { return m_year; } +void MovieInfo::setYear(qint32 newYear) { + m_year = newYear; + emit yearChanged(newYear); +} + +qint32 MovieInfo::indexNumber() const { return m_indexNumber; } +void MovieInfo::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 MovieInfo::parentIndexNumber() const { return m_parentIndexNumber; } +void MovieInfo::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime MovieInfo::premiereDate() const { return m_premiereDate; } +void MovieInfo::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +bool MovieInfo::isAutomated() const { return m_isAutomated; } +void MovieInfo::setIsAutomated(bool newIsAutomated) { + m_isAutomated = newIsAutomated; + emit isAutomatedChanged(newIsAutomated); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/movieinforemotesearchquery.cpp b/core/src/DTO/movieinforemotesearchquery.cpp new file mode 100644 index 0000000..a3071f1 --- /dev/null +++ b/core/src/DTO/movieinforemotesearchquery.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MovieInfoRemoteSearchQuery::MovieInfoRemoteSearchQuery(QObject *parent) : QObject(parent) {} + +MovieInfoRemoteSearchQuery *MovieInfoRemoteSearchQuery::fromJSON(QJsonObject source, QObject *parent) { + MovieInfoRemoteSearchQuery *instance = new MovieInfoRemoteSearchQuery(parent); + instance->updateFromJSON(source); + return instance; +} + +void MovieInfoRemoteSearchQuery::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MovieInfoRemoteSearchQuery::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +MovieInfo * MovieInfoRemoteSearchQuery::searchInfo() const { return m_searchInfo; } +void MovieInfoRemoteSearchQuery::setSearchInfo(MovieInfo * newSearchInfo) { + m_searchInfo = newSearchInfo; + emit searchInfoChanged(newSearchInfo); +} + +QString MovieInfoRemoteSearchQuery::itemId() const { return m_itemId; } +void MovieInfoRemoteSearchQuery::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString MovieInfoRemoteSearchQuery::searchProviderName() const { return m_searchProviderName; } +void MovieInfoRemoteSearchQuery::setSearchProviderName(QString newSearchProviderName) { + m_searchProviderName = newSearchProviderName; + emit searchProviderNameChanged(newSearchProviderName); +} + +bool MovieInfoRemoteSearchQuery::includeDisabledProviders() const { return m_includeDisabledProviders; } +void MovieInfoRemoteSearchQuery::setIncludeDisabledProviders(bool newIncludeDisabledProviders) { + m_includeDisabledProviders = newIncludeDisabledProviders; + emit includeDisabledProvidersChanged(newIncludeDisabledProviders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/musicvideoinfo.cpp b/core/src/DTO/musicvideoinfo.cpp new file mode 100644 index 0000000..4609a64 --- /dev/null +++ b/core/src/DTO/musicvideoinfo.cpp @@ -0,0 +1,119 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MusicVideoInfo::MusicVideoInfo(QObject *parent) : QObject(parent) {} + +MusicVideoInfo *MusicVideoInfo::fromJSON(QJsonObject source, QObject *parent) { + MusicVideoInfo *instance = new MusicVideoInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void MusicVideoInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MusicVideoInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString MusicVideoInfo::name() const { return m_name; } +void MusicVideoInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString MusicVideoInfo::path() const { return m_path; } +void MusicVideoInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString MusicVideoInfo::metadataLanguage() const { return m_metadataLanguage; } +void MusicVideoInfo::setMetadataLanguage(QString newMetadataLanguage) { + m_metadataLanguage = newMetadataLanguage; + emit metadataLanguageChanged(newMetadataLanguage); +} + +QString MusicVideoInfo::metadataCountryCode() const { return m_metadataCountryCode; } +void MusicVideoInfo::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QJsonObject MusicVideoInfo::providerIds() const { return m_providerIds; } +void MusicVideoInfo::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 MusicVideoInfo::year() const { return m_year; } +void MusicVideoInfo::setYear(qint32 newYear) { + m_year = newYear; + emit yearChanged(newYear); +} + +qint32 MusicVideoInfo::indexNumber() const { return m_indexNumber; } +void MusicVideoInfo::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 MusicVideoInfo::parentIndexNumber() const { return m_parentIndexNumber; } +void MusicVideoInfo::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime MusicVideoInfo::premiereDate() const { return m_premiereDate; } +void MusicVideoInfo::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +bool MusicVideoInfo::isAutomated() const { return m_isAutomated; } +void MusicVideoInfo::setIsAutomated(bool newIsAutomated) { + m_isAutomated = newIsAutomated; + emit isAutomatedChanged(newIsAutomated); +} + +QStringList MusicVideoInfo::artists() const { return m_artists; } +void MusicVideoInfo::setArtists(QStringList newArtists) { + m_artists = newArtists; + emit artistsChanged(newArtists); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/musicvideoinforemotesearchquery.cpp b/core/src/DTO/musicvideoinforemotesearchquery.cpp new file mode 100644 index 0000000..ddd2bf4 --- /dev/null +++ b/core/src/DTO/musicvideoinforemotesearchquery.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +MusicVideoInfoRemoteSearchQuery::MusicVideoInfoRemoteSearchQuery(QObject *parent) : QObject(parent) {} + +MusicVideoInfoRemoteSearchQuery *MusicVideoInfoRemoteSearchQuery::fromJSON(QJsonObject source, QObject *parent) { + MusicVideoInfoRemoteSearchQuery *instance = new MusicVideoInfoRemoteSearchQuery(parent); + instance->updateFromJSON(source); + return instance; +} + +void MusicVideoInfoRemoteSearchQuery::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject MusicVideoInfoRemoteSearchQuery::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +MusicVideoInfo * MusicVideoInfoRemoteSearchQuery::searchInfo() const { return m_searchInfo; } +void MusicVideoInfoRemoteSearchQuery::setSearchInfo(MusicVideoInfo * newSearchInfo) { + m_searchInfo = newSearchInfo; + emit searchInfoChanged(newSearchInfo); +} + +QString MusicVideoInfoRemoteSearchQuery::itemId() const { return m_itemId; } +void MusicVideoInfoRemoteSearchQuery::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString MusicVideoInfoRemoteSearchQuery::searchProviderName() const { return m_searchProviderName; } +void MusicVideoInfoRemoteSearchQuery::setSearchProviderName(QString newSearchProviderName) { + m_searchProviderName = newSearchProviderName; + emit searchProviderNameChanged(newSearchProviderName); +} + +bool MusicVideoInfoRemoteSearchQuery::includeDisabledProviders() const { return m_includeDisabledProviders; } +void MusicVideoInfoRemoteSearchQuery::setIncludeDisabledProviders(bool newIncludeDisabledProviders) { + m_includeDisabledProviders = newIncludeDisabledProviders; + emit includeDisabledProvidersChanged(newIncludeDisabledProviders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/nameguidpair.cpp b/core/src/DTO/nameguidpair.cpp new file mode 100644 index 0000000..ac5b5eb --- /dev/null +++ b/core/src/DTO/nameguidpair.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +NameGuidPair::NameGuidPair(QObject *parent) : QObject(parent) {} + +NameGuidPair *NameGuidPair::fromJSON(QJsonObject source, QObject *parent) { + NameGuidPair *instance = new NameGuidPair(parent); + instance->updateFromJSON(source); + return instance; +} + +void NameGuidPair::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject NameGuidPair::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString NameGuidPair::name() const { return m_name; } +void NameGuidPair::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString NameGuidPair::jellyfinId() const { return m_jellyfinId; } +void NameGuidPair::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/nameidpair.cpp b/core/src/DTO/nameidpair.cpp new file mode 100644 index 0000000..9d2831a --- /dev/null +++ b/core/src/DTO/nameidpair.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +NameIdPair::NameIdPair(QObject *parent) : QObject(parent) {} + +NameIdPair *NameIdPair::fromJSON(QJsonObject source, QObject *parent) { + NameIdPair *instance = new NameIdPair(parent); + instance->updateFromJSON(source); + return instance; +} + +void NameIdPair::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject NameIdPair::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString NameIdPair::name() const { return m_name; } +void NameIdPair::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString NameIdPair::jellyfinId() const { return m_jellyfinId; } +void NameIdPair::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/namevaluepair.cpp b/core/src/DTO/namevaluepair.cpp new file mode 100644 index 0000000..db6cff2 --- /dev/null +++ b/core/src/DTO/namevaluepair.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +NameValuePair::NameValuePair(QObject *parent) : QObject(parent) {} + +NameValuePair *NameValuePair::fromJSON(QJsonObject source, QObject *parent) { + NameValuePair *instance = new NameValuePair(parent); + instance->updateFromJSON(source); + return instance; +} + +void NameValuePair::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject NameValuePair::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString NameValuePair::name() const { return m_name; } +void NameValuePair::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString NameValuePair::value() const { return m_value; } +void NameValuePair::setValue(QString newValue) { + m_value = newValue; + emit valueChanged(newValue); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/newgrouprequestdto.cpp b/core/src/DTO/newgrouprequestdto.cpp new file mode 100644 index 0000000..3035aa6 --- /dev/null +++ b/core/src/DTO/newgrouprequestdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +NewGroupRequestDto::NewGroupRequestDto(QObject *parent) : QObject(parent) {} + +NewGroupRequestDto *NewGroupRequestDto::fromJSON(QJsonObject source, QObject *parent) { + NewGroupRequestDto *instance = new NewGroupRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void NewGroupRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject NewGroupRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString NewGroupRequestDto::groupName() const { return m_groupName; } +void NewGroupRequestDto::setGroupName(QString newGroupName) { + m_groupName = newGroupName; + emit groupNameChanged(newGroupName); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/nextitemrequestdto.cpp b/core/src/DTO/nextitemrequestdto.cpp new file mode 100644 index 0000000..44e9ca4 --- /dev/null +++ b/core/src/DTO/nextitemrequestdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +NextItemRequestDto::NextItemRequestDto(QObject *parent) : QObject(parent) {} + +NextItemRequestDto *NextItemRequestDto::fromJSON(QJsonObject source, QObject *parent) { + NextItemRequestDto *instance = new NextItemRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void NextItemRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject NextItemRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString NextItemRequestDto::playlistItemId() const { return m_playlistItemId; } +void NextItemRequestDto::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/notificationdto.cpp b/core/src/DTO/notificationdto.cpp new file mode 100644 index 0000000..e6a251f --- /dev/null +++ b/core/src/DTO/notificationdto.cpp @@ -0,0 +1,103 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +NotificationDto::NotificationDto(QObject *parent) : QObject(parent) {} + +NotificationDto *NotificationDto::fromJSON(QJsonObject source, QObject *parent) { + NotificationDto *instance = new NotificationDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void NotificationDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject NotificationDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString NotificationDto::jellyfinId() const { return m_jellyfinId; } +void NotificationDto::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString NotificationDto::userId() const { return m_userId; } +void NotificationDto::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +QDateTime NotificationDto::date() const { return m_date; } +void NotificationDto::setDate(QDateTime newDate) { + m_date = newDate; + emit dateChanged(newDate); +} + +bool NotificationDto::isRead() const { return m_isRead; } +void NotificationDto::setIsRead(bool newIsRead) { + m_isRead = newIsRead; + emit isReadChanged(newIsRead); +} + +QString NotificationDto::name() const { return m_name; } +void NotificationDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString NotificationDto::description() const { return m_description; } +void NotificationDto::setDescription(QString newDescription) { + m_description = newDescription; + emit descriptionChanged(newDescription); +} + +QString NotificationDto::url() const { return m_url; } +void NotificationDto::setUrl(QString newUrl) { + m_url = newUrl; + emit urlChanged(newUrl); +} + +NotificationLevel NotificationDto::level() const { return m_level; } +void NotificationDto::setLevel(NotificationLevel newLevel) { + m_level = newLevel; + emit levelChanged(newLevel); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/notificationlevel.cpp b/core/src/DTO/notificationlevel.cpp new file mode 100644 index 0000000..3506efa --- /dev/null +++ b/core/src/DTO/notificationlevel.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +NotificationLevelClass::NotificationLevelClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/notificationresultdto.cpp b/core/src/DTO/notificationresultdto.cpp new file mode 100644 index 0000000..60dd1f4 --- /dev/null +++ b/core/src/DTO/notificationresultdto.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +NotificationResultDto::NotificationResultDto(QObject *parent) : QObject(parent) {} + +NotificationResultDto *NotificationResultDto::fromJSON(QJsonObject source, QObject *parent) { + NotificationResultDto *instance = new NotificationResultDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void NotificationResultDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject NotificationResultDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList NotificationResultDto::notifications() const { return m_notifications; } +void NotificationResultDto::setNotifications(QList newNotifications) { + m_notifications = newNotifications; + emit notificationsChanged(newNotifications); +} + +qint32 NotificationResultDto::totalRecordCount() const { return m_totalRecordCount; } +void NotificationResultDto::setTotalRecordCount(qint32 newTotalRecordCount) { + m_totalRecordCount = newTotalRecordCount; + emit totalRecordCountChanged(newTotalRecordCount); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/notificationssummarydto.cpp b/core/src/DTO/notificationssummarydto.cpp new file mode 100644 index 0000000..731c942 --- /dev/null +++ b/core/src/DTO/notificationssummarydto.cpp @@ -0,0 +1,67 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +NotificationsSummaryDto::NotificationsSummaryDto(QObject *parent) : QObject(parent) {} + +NotificationsSummaryDto *NotificationsSummaryDto::fromJSON(QJsonObject source, QObject *parent) { + NotificationsSummaryDto *instance = new NotificationsSummaryDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void NotificationsSummaryDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject NotificationsSummaryDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint32 NotificationsSummaryDto::unreadCount() const { return m_unreadCount; } +void NotificationsSummaryDto::setUnreadCount(qint32 newUnreadCount) { + m_unreadCount = newUnreadCount; + emit unreadCountChanged(newUnreadCount); +} + +NotificationLevel NotificationsSummaryDto::maxUnreadNotificationLevel() const { return m_maxUnreadNotificationLevel; } +void NotificationsSummaryDto::setMaxUnreadNotificationLevel(NotificationLevel newMaxUnreadNotificationLevel) { + m_maxUnreadNotificationLevel = newMaxUnreadNotificationLevel; + emit maxUnreadNotificationLevelChanged(newMaxUnreadNotificationLevel); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/notificationtypeinfo.cpp b/core/src/DTO/notificationtypeinfo.cpp new file mode 100644 index 0000000..3502b26 --- /dev/null +++ b/core/src/DTO/notificationtypeinfo.cpp @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +NotificationTypeInfo::NotificationTypeInfo(QObject *parent) : QObject(parent) {} + +NotificationTypeInfo *NotificationTypeInfo::fromJSON(QJsonObject source, QObject *parent) { + NotificationTypeInfo *instance = new NotificationTypeInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void NotificationTypeInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject NotificationTypeInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString NotificationTypeInfo::type() const { return m_type; } +void NotificationTypeInfo::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString NotificationTypeInfo::name() const { return m_name; } +void NotificationTypeInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +bool NotificationTypeInfo::enabled() const { return m_enabled; } +void NotificationTypeInfo::setEnabled(bool newEnabled) { + m_enabled = newEnabled; + emit enabledChanged(newEnabled); +} + +QString NotificationTypeInfo::category() const { return m_category; } +void NotificationTypeInfo::setCategory(QString newCategory) { + m_category = newCategory; + emit categoryChanged(newCategory); +} + +bool NotificationTypeInfo::isBasedOnUserEvent() const { return m_isBasedOnUserEvent; } +void NotificationTypeInfo::setIsBasedOnUserEvent(bool newIsBasedOnUserEvent) { + m_isBasedOnUserEvent = newIsBasedOnUserEvent; + emit isBasedOnUserEventChanged(newIsBasedOnUserEvent); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/objectgroupupdate.cpp b/core/src/DTO/objectgroupupdate.cpp new file mode 100644 index 0000000..569a1ea --- /dev/null +++ b/core/src/DTO/objectgroupupdate.cpp @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ObjectGroupUpdate::ObjectGroupUpdate(QObject *parent) : QObject(parent) {} + +ObjectGroupUpdate *ObjectGroupUpdate::fromJSON(QJsonObject source, QObject *parent) { + ObjectGroupUpdate *instance = new ObjectGroupUpdate(parent); + instance->updateFromJSON(source); + return instance; +} + +void ObjectGroupUpdate::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ObjectGroupUpdate::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ObjectGroupUpdate::groupId() const { return m_groupId; } +void ObjectGroupUpdate::setGroupId(QString newGroupId) { + m_groupId = newGroupId; + emit groupIdChanged(newGroupId); +} + +GroupUpdateType ObjectGroupUpdate::type() const { return m_type; } +void ObjectGroupUpdate::setType(GroupUpdateType newType) { + m_type = newType; + emit typeChanged(newType); +} + +QVariant ObjectGroupUpdate::data() const { return m_data; } +void ObjectGroupUpdate::setData(QVariant newData) { + m_data = newData; + emit dataChanged(newData); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/openlivestreamdto.cpp b/core/src/DTO/openlivestreamdto.cpp new file mode 100644 index 0000000..c72787b --- /dev/null +++ b/core/src/DTO/openlivestreamdto.cpp @@ -0,0 +1,133 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +OpenLiveStreamDto::OpenLiveStreamDto(QObject *parent) : QObject(parent) {} + +OpenLiveStreamDto *OpenLiveStreamDto::fromJSON(QJsonObject source, QObject *parent) { + OpenLiveStreamDto *instance = new OpenLiveStreamDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void OpenLiveStreamDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject OpenLiveStreamDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString OpenLiveStreamDto::openToken() const { return m_openToken; } +void OpenLiveStreamDto::setOpenToken(QString newOpenToken) { + m_openToken = newOpenToken; + emit openTokenChanged(newOpenToken); +} + +QString OpenLiveStreamDto::userId() const { return m_userId; } +void OpenLiveStreamDto::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +QString OpenLiveStreamDto::playSessionId() const { return m_playSessionId; } +void OpenLiveStreamDto::setPlaySessionId(QString newPlaySessionId) { + m_playSessionId = newPlaySessionId; + emit playSessionIdChanged(newPlaySessionId); +} + +qint32 OpenLiveStreamDto::maxStreamingBitrate() const { return m_maxStreamingBitrate; } +void OpenLiveStreamDto::setMaxStreamingBitrate(qint32 newMaxStreamingBitrate) { + m_maxStreamingBitrate = newMaxStreamingBitrate; + emit maxStreamingBitrateChanged(newMaxStreamingBitrate); +} + +qint64 OpenLiveStreamDto::startTimeTicks() const { return m_startTimeTicks; } +void OpenLiveStreamDto::setStartTimeTicks(qint64 newStartTimeTicks) { + m_startTimeTicks = newStartTimeTicks; + emit startTimeTicksChanged(newStartTimeTicks); +} + +qint32 OpenLiveStreamDto::audioStreamIndex() const { return m_audioStreamIndex; } +void OpenLiveStreamDto::setAudioStreamIndex(qint32 newAudioStreamIndex) { + m_audioStreamIndex = newAudioStreamIndex; + emit audioStreamIndexChanged(newAudioStreamIndex); +} + +qint32 OpenLiveStreamDto::subtitleStreamIndex() const { return m_subtitleStreamIndex; } +void OpenLiveStreamDto::setSubtitleStreamIndex(qint32 newSubtitleStreamIndex) { + m_subtitleStreamIndex = newSubtitleStreamIndex; + emit subtitleStreamIndexChanged(newSubtitleStreamIndex); +} + +qint32 OpenLiveStreamDto::maxAudioChannels() const { return m_maxAudioChannels; } +void OpenLiveStreamDto::setMaxAudioChannels(qint32 newMaxAudioChannels) { + m_maxAudioChannels = newMaxAudioChannels; + emit maxAudioChannelsChanged(newMaxAudioChannels); +} + +QString OpenLiveStreamDto::itemId() const { return m_itemId; } +void OpenLiveStreamDto::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +bool OpenLiveStreamDto::enableDirectPlay() const { return m_enableDirectPlay; } +void OpenLiveStreamDto::setEnableDirectPlay(bool newEnableDirectPlay) { + m_enableDirectPlay = newEnableDirectPlay; + emit enableDirectPlayChanged(newEnableDirectPlay); +} + +bool OpenLiveStreamDto::enableDirectStream() const { return m_enableDirectStream; } +void OpenLiveStreamDto::setEnableDirectStream(bool newEnableDirectStream) { + m_enableDirectStream = newEnableDirectStream; + emit enableDirectStreamChanged(newEnableDirectStream); +} + +DeviceProfile * OpenLiveStreamDto::deviceProfile() const { return m_deviceProfile; } +void OpenLiveStreamDto::setDeviceProfile(DeviceProfile * newDeviceProfile) { + m_deviceProfile = newDeviceProfile; + emit deviceProfileChanged(newDeviceProfile); +} + +QList OpenLiveStreamDto::directPlayProtocols() const { return m_directPlayProtocols; } +void OpenLiveStreamDto::setDirectPlayProtocols(QList newDirectPlayProtocols) { + m_directPlayProtocols = newDirectPlayProtocols; + emit directPlayProtocolsChanged(newDirectPlayProtocols); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/packageinfo.cpp b/core/src/DTO/packageinfo.cpp new file mode 100644 index 0000000..d8dcdcc --- /dev/null +++ b/core/src/DTO/packageinfo.cpp @@ -0,0 +1,101 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PackageInfo::PackageInfo(QObject *parent) : QObject(parent) {} + +PackageInfo *PackageInfo::fromJSON(QJsonObject source, QObject *parent) { + PackageInfo *instance = new PackageInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void PackageInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PackageInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString PackageInfo::name() const { return m_name; } +void PackageInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString PackageInfo::description() const { return m_description; } +void PackageInfo::setDescription(QString newDescription) { + m_description = newDescription; + emit descriptionChanged(newDescription); +} + +QString PackageInfo::overview() const { return m_overview; } +void PackageInfo::setOverview(QString newOverview) { + m_overview = newOverview; + emit overviewChanged(newOverview); +} + +QString PackageInfo::owner() const { return m_owner; } +void PackageInfo::setOwner(QString newOwner) { + m_owner = newOwner; + emit ownerChanged(newOwner); +} + +QString PackageInfo::category() const { return m_category; } +void PackageInfo::setCategory(QString newCategory) { + m_category = newCategory; + emit categoryChanged(newCategory); +} + +QString PackageInfo::guid() const { return m_guid; } +void PackageInfo::setGuid(QString newGuid) { + m_guid = newGuid; + emit guidChanged(newGuid); +} + +QList PackageInfo::versions() const { return m_versions; } +void PackageInfo::setVersions(QList newVersions) { + m_versions = newVersions; + emit versionsChanged(newVersions); +} + +QString PackageInfo::imageUrl() const { return m_imageUrl; } +void PackageInfo::setImageUrl(QString newImageUrl) { + m_imageUrl = newImageUrl; + emit imageUrlChanged(newImageUrl); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/parentalrating.cpp b/core/src/DTO/parentalrating.cpp new file mode 100644 index 0000000..53af024 --- /dev/null +++ b/core/src/DTO/parentalrating.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ParentalRating::ParentalRating(QObject *parent) : QObject(parent) {} + +ParentalRating *ParentalRating::fromJSON(QJsonObject source, QObject *parent) { + ParentalRating *instance = new ParentalRating(parent); + instance->updateFromJSON(source); + return instance; +} + +void ParentalRating::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ParentalRating::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ParentalRating::name() const { return m_name; } +void ParentalRating::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +qint32 ParentalRating::value() const { return m_value; } +void ParentalRating::setValue(qint32 newValue) { + m_value = newValue; + emit valueChanged(newValue); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/pathsubstitution.cpp b/core/src/DTO/pathsubstitution.cpp new file mode 100644 index 0000000..5f0cace --- /dev/null +++ b/core/src/DTO/pathsubstitution.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PathSubstitution::PathSubstitution(QObject *parent) : QObject(parent) {} + +PathSubstitution *PathSubstitution::fromJSON(QJsonObject source, QObject *parent) { + PathSubstitution *instance = new PathSubstitution(parent); + instance->updateFromJSON(source); + return instance; +} + +void PathSubstitution::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PathSubstitution::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString PathSubstitution::from() const { return m_from; } +void PathSubstitution::setFrom(QString newFrom) { + m_from = newFrom; + emit fromChanged(newFrom); +} + +QString PathSubstitution::to() const { return m_to; } +void PathSubstitution::setTo(QString newTo) { + m_to = newTo; + emit toChanged(newTo); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/personlookupinfo.cpp b/core/src/DTO/personlookupinfo.cpp new file mode 100644 index 0000000..a7a6203 --- /dev/null +++ b/core/src/DTO/personlookupinfo.cpp @@ -0,0 +1,113 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PersonLookupInfo::PersonLookupInfo(QObject *parent) : QObject(parent) {} + +PersonLookupInfo *PersonLookupInfo::fromJSON(QJsonObject source, QObject *parent) { + PersonLookupInfo *instance = new PersonLookupInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void PersonLookupInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PersonLookupInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString PersonLookupInfo::name() const { return m_name; } +void PersonLookupInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString PersonLookupInfo::path() const { return m_path; } +void PersonLookupInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString PersonLookupInfo::metadataLanguage() const { return m_metadataLanguage; } +void PersonLookupInfo::setMetadataLanguage(QString newMetadataLanguage) { + m_metadataLanguage = newMetadataLanguage; + emit metadataLanguageChanged(newMetadataLanguage); +} + +QString PersonLookupInfo::metadataCountryCode() const { return m_metadataCountryCode; } +void PersonLookupInfo::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QJsonObject PersonLookupInfo::providerIds() const { return m_providerIds; } +void PersonLookupInfo::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 PersonLookupInfo::year() const { return m_year; } +void PersonLookupInfo::setYear(qint32 newYear) { + m_year = newYear; + emit yearChanged(newYear); +} + +qint32 PersonLookupInfo::indexNumber() const { return m_indexNumber; } +void PersonLookupInfo::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 PersonLookupInfo::parentIndexNumber() const { return m_parentIndexNumber; } +void PersonLookupInfo::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime PersonLookupInfo::premiereDate() const { return m_premiereDate; } +void PersonLookupInfo::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +bool PersonLookupInfo::isAutomated() const { return m_isAutomated; } +void PersonLookupInfo::setIsAutomated(bool newIsAutomated) { + m_isAutomated = newIsAutomated; + emit isAutomatedChanged(newIsAutomated); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/personlookupinforemotesearchquery.cpp b/core/src/DTO/personlookupinforemotesearchquery.cpp new file mode 100644 index 0000000..db7d23f --- /dev/null +++ b/core/src/DTO/personlookupinforemotesearchquery.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PersonLookupInfoRemoteSearchQuery::PersonLookupInfoRemoteSearchQuery(QObject *parent) : QObject(parent) {} + +PersonLookupInfoRemoteSearchQuery *PersonLookupInfoRemoteSearchQuery::fromJSON(QJsonObject source, QObject *parent) { + PersonLookupInfoRemoteSearchQuery *instance = new PersonLookupInfoRemoteSearchQuery(parent); + instance->updateFromJSON(source); + return instance; +} + +void PersonLookupInfoRemoteSearchQuery::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PersonLookupInfoRemoteSearchQuery::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +PersonLookupInfo * PersonLookupInfoRemoteSearchQuery::searchInfo() const { return m_searchInfo; } +void PersonLookupInfoRemoteSearchQuery::setSearchInfo(PersonLookupInfo * newSearchInfo) { + m_searchInfo = newSearchInfo; + emit searchInfoChanged(newSearchInfo); +} + +QString PersonLookupInfoRemoteSearchQuery::itemId() const { return m_itemId; } +void PersonLookupInfoRemoteSearchQuery::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString PersonLookupInfoRemoteSearchQuery::searchProviderName() const { return m_searchProviderName; } +void PersonLookupInfoRemoteSearchQuery::setSearchProviderName(QString newSearchProviderName) { + m_searchProviderName = newSearchProviderName; + emit searchProviderNameChanged(newSearchProviderName); +} + +bool PersonLookupInfoRemoteSearchQuery::includeDisabledProviders() const { return m_includeDisabledProviders; } +void PersonLookupInfoRemoteSearchQuery::setIncludeDisabledProviders(bool newIncludeDisabledProviders) { + m_includeDisabledProviders = newIncludeDisabledProviders; + emit includeDisabledProvidersChanged(newIncludeDisabledProviders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/pingrequestdto.cpp b/core/src/DTO/pingrequestdto.cpp new file mode 100644 index 0000000..0cc3076 --- /dev/null +++ b/core/src/DTO/pingrequestdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PingRequestDto::PingRequestDto(QObject *parent) : QObject(parent) {} + +PingRequestDto *PingRequestDto::fromJSON(QJsonObject source, QObject *parent) { + PingRequestDto *instance = new PingRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void PingRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PingRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint64 PingRequestDto::ping() const { return m_ping; } +void PingRequestDto::setPing(qint64 newPing) { + m_ping = newPing; + emit pingChanged(newPing); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/pinredeemresult.cpp b/core/src/DTO/pinredeemresult.cpp new file mode 100644 index 0000000..c9ee0a8 --- /dev/null +++ b/core/src/DTO/pinredeemresult.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PinRedeemResult::PinRedeemResult(QObject *parent) : QObject(parent) {} + +PinRedeemResult *PinRedeemResult::fromJSON(QJsonObject source, QObject *parent) { + PinRedeemResult *instance = new PinRedeemResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void PinRedeemResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PinRedeemResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +bool PinRedeemResult::success() const { return m_success; } +void PinRedeemResult::setSuccess(bool newSuccess) { + m_success = newSuccess; + emit successChanged(newSuccess); +} + +QStringList PinRedeemResult::usersReset() const { return m_usersReset; } +void PinRedeemResult::setUsersReset(QStringList newUsersReset) { + m_usersReset = newUsersReset; + emit usersResetChanged(newUsersReset); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playaccess.cpp b/core/src/DTO/playaccess.cpp new file mode 100644 index 0000000..7fe65a7 --- /dev/null +++ b/core/src/DTO/playaccess.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PlayAccessClass::PlayAccessClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playbackerrorcode.cpp b/core/src/DTO/playbackerrorcode.cpp new file mode 100644 index 0000000..2249a95 --- /dev/null +++ b/core/src/DTO/playbackerrorcode.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PlaybackErrorCodeClass::PlaybackErrorCodeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playbackinfodto.cpp b/core/src/DTO/playbackinfodto.cpp new file mode 100644 index 0000000..d653a29 --- /dev/null +++ b/core/src/DTO/playbackinfodto.cpp @@ -0,0 +1,143 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PlaybackInfoDto::PlaybackInfoDto(QObject *parent) : QObject(parent) {} + +PlaybackInfoDto *PlaybackInfoDto::fromJSON(QJsonObject source, QObject *parent) { + PlaybackInfoDto *instance = new PlaybackInfoDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void PlaybackInfoDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PlaybackInfoDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString PlaybackInfoDto::userId() const { return m_userId; } +void PlaybackInfoDto::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +qint32 PlaybackInfoDto::maxStreamingBitrate() const { return m_maxStreamingBitrate; } +void PlaybackInfoDto::setMaxStreamingBitrate(qint32 newMaxStreamingBitrate) { + m_maxStreamingBitrate = newMaxStreamingBitrate; + emit maxStreamingBitrateChanged(newMaxStreamingBitrate); +} + +qint64 PlaybackInfoDto::startTimeTicks() const { return m_startTimeTicks; } +void PlaybackInfoDto::setStartTimeTicks(qint64 newStartTimeTicks) { + m_startTimeTicks = newStartTimeTicks; + emit startTimeTicksChanged(newStartTimeTicks); +} + +qint32 PlaybackInfoDto::audioStreamIndex() const { return m_audioStreamIndex; } +void PlaybackInfoDto::setAudioStreamIndex(qint32 newAudioStreamIndex) { + m_audioStreamIndex = newAudioStreamIndex; + emit audioStreamIndexChanged(newAudioStreamIndex); +} + +qint32 PlaybackInfoDto::subtitleStreamIndex() const { return m_subtitleStreamIndex; } +void PlaybackInfoDto::setSubtitleStreamIndex(qint32 newSubtitleStreamIndex) { + m_subtitleStreamIndex = newSubtitleStreamIndex; + emit subtitleStreamIndexChanged(newSubtitleStreamIndex); +} + +qint32 PlaybackInfoDto::maxAudioChannels() const { return m_maxAudioChannels; } +void PlaybackInfoDto::setMaxAudioChannels(qint32 newMaxAudioChannels) { + m_maxAudioChannels = newMaxAudioChannels; + emit maxAudioChannelsChanged(newMaxAudioChannels); +} + +QString PlaybackInfoDto::mediaSourceId() const { return m_mediaSourceId; } +void PlaybackInfoDto::setMediaSourceId(QString newMediaSourceId) { + m_mediaSourceId = newMediaSourceId; + emit mediaSourceIdChanged(newMediaSourceId); +} + +QString PlaybackInfoDto::liveStreamId() const { return m_liveStreamId; } +void PlaybackInfoDto::setLiveStreamId(QString newLiveStreamId) { + m_liveStreamId = newLiveStreamId; + emit liveStreamIdChanged(newLiveStreamId); +} + +DeviceProfile * PlaybackInfoDto::deviceProfile() const { return m_deviceProfile; } +void PlaybackInfoDto::setDeviceProfile(DeviceProfile * newDeviceProfile) { + m_deviceProfile = newDeviceProfile; + emit deviceProfileChanged(newDeviceProfile); +} + +bool PlaybackInfoDto::enableDirectPlay() const { return m_enableDirectPlay; } +void PlaybackInfoDto::setEnableDirectPlay(bool newEnableDirectPlay) { + m_enableDirectPlay = newEnableDirectPlay; + emit enableDirectPlayChanged(newEnableDirectPlay); +} + +bool PlaybackInfoDto::enableDirectStream() const { return m_enableDirectStream; } +void PlaybackInfoDto::setEnableDirectStream(bool newEnableDirectStream) { + m_enableDirectStream = newEnableDirectStream; + emit enableDirectStreamChanged(newEnableDirectStream); +} + +bool PlaybackInfoDto::enableTranscoding() const { return m_enableTranscoding; } +void PlaybackInfoDto::setEnableTranscoding(bool newEnableTranscoding) { + m_enableTranscoding = newEnableTranscoding; + emit enableTranscodingChanged(newEnableTranscoding); +} + +bool PlaybackInfoDto::allowVideoStreamCopy() const { return m_allowVideoStreamCopy; } +void PlaybackInfoDto::setAllowVideoStreamCopy(bool newAllowVideoStreamCopy) { + m_allowVideoStreamCopy = newAllowVideoStreamCopy; + emit allowVideoStreamCopyChanged(newAllowVideoStreamCopy); +} + +bool PlaybackInfoDto::allowAudioStreamCopy() const { return m_allowAudioStreamCopy; } +void PlaybackInfoDto::setAllowAudioStreamCopy(bool newAllowAudioStreamCopy) { + m_allowAudioStreamCopy = newAllowAudioStreamCopy; + emit allowAudioStreamCopyChanged(newAllowAudioStreamCopy); +} + +bool PlaybackInfoDto::autoOpenLiveStream() const { return m_autoOpenLiveStream; } +void PlaybackInfoDto::setAutoOpenLiveStream(bool newAutoOpenLiveStream) { + m_autoOpenLiveStream = newAutoOpenLiveStream; + emit autoOpenLiveStreamChanged(newAutoOpenLiveStream); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playbackinforesponse.cpp b/core/src/DTO/playbackinforesponse.cpp new file mode 100644 index 0000000..f8f4249 --- /dev/null +++ b/core/src/DTO/playbackinforesponse.cpp @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +PlaybackInfoResponse::PlaybackInfoResponse(QObject *parent) : QObject(parent) {} + +PlaybackInfoResponse *PlaybackInfoResponse::fromJSON(QJsonObject source, QObject *parent) { + PlaybackInfoResponse *instance = new PlaybackInfoResponse(parent); + instance->updateFromJSON(source); + return instance; +} + +void PlaybackInfoResponse::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PlaybackInfoResponse::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList PlaybackInfoResponse::mediaSources() const { return m_mediaSources; } +void PlaybackInfoResponse::setMediaSources(QList newMediaSources) { + m_mediaSources = newMediaSources; + emit mediaSourcesChanged(newMediaSources); +} + +QString PlaybackInfoResponse::playSessionId() const { return m_playSessionId; } +void PlaybackInfoResponse::setPlaySessionId(QString newPlaySessionId) { + m_playSessionId = newPlaySessionId; + emit playSessionIdChanged(newPlaySessionId); +} + +PlaybackErrorCode PlaybackInfoResponse::errorCode() const { return m_errorCode; } +void PlaybackInfoResponse::setErrorCode(PlaybackErrorCode newErrorCode) { + m_errorCode = newErrorCode; + emit errorCodeChanged(newErrorCode); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playbackprogressinfo.cpp b/core/src/DTO/playbackprogressinfo.cpp new file mode 100644 index 0000000..8954f47 --- /dev/null +++ b/core/src/DTO/playbackprogressinfo.cpp @@ -0,0 +1,176 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +PlaybackProgressInfo::PlaybackProgressInfo(QObject *parent) : QObject(parent) {} + +PlaybackProgressInfo *PlaybackProgressInfo::fromJSON(QJsonObject source, QObject *parent) { + PlaybackProgressInfo *instance = new PlaybackProgressInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void PlaybackProgressInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PlaybackProgressInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +bool PlaybackProgressInfo::canSeek() const { return m_canSeek; } +void PlaybackProgressInfo::setCanSeek(bool newCanSeek) { + m_canSeek = newCanSeek; + emit canSeekChanged(newCanSeek); +} + +BaseItemDto * PlaybackProgressInfo::item() const { return m_item; } +void PlaybackProgressInfo::setItem(BaseItemDto * newItem) { + m_item = newItem; + emit itemChanged(newItem); +} + +QString PlaybackProgressInfo::itemId() const { return m_itemId; } +void PlaybackProgressInfo::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString PlaybackProgressInfo::sessionId() const { return m_sessionId; } +void PlaybackProgressInfo::setSessionId(QString newSessionId) { + m_sessionId = newSessionId; + emit sessionIdChanged(newSessionId); +} + +QString PlaybackProgressInfo::mediaSourceId() const { return m_mediaSourceId; } +void PlaybackProgressInfo::setMediaSourceId(QString newMediaSourceId) { + m_mediaSourceId = newMediaSourceId; + emit mediaSourceIdChanged(newMediaSourceId); +} + +qint32 PlaybackProgressInfo::audioStreamIndex() const { return m_audioStreamIndex; } +void PlaybackProgressInfo::setAudioStreamIndex(qint32 newAudioStreamIndex) { + m_audioStreamIndex = newAudioStreamIndex; + emit audioStreamIndexChanged(newAudioStreamIndex); +} + +qint32 PlaybackProgressInfo::subtitleStreamIndex() const { return m_subtitleStreamIndex; } +void PlaybackProgressInfo::setSubtitleStreamIndex(qint32 newSubtitleStreamIndex) { + m_subtitleStreamIndex = newSubtitleStreamIndex; + emit subtitleStreamIndexChanged(newSubtitleStreamIndex); +} + +bool PlaybackProgressInfo::isPaused() const { return m_isPaused; } +void PlaybackProgressInfo::setIsPaused(bool newIsPaused) { + m_isPaused = newIsPaused; + emit isPausedChanged(newIsPaused); +} + +bool PlaybackProgressInfo::isMuted() const { return m_isMuted; } +void PlaybackProgressInfo::setIsMuted(bool newIsMuted) { + m_isMuted = newIsMuted; + emit isMutedChanged(newIsMuted); +} + +qint64 PlaybackProgressInfo::positionTicks() const { return m_positionTicks; } +void PlaybackProgressInfo::setPositionTicks(qint64 newPositionTicks) { + m_positionTicks = newPositionTicks; + emit positionTicksChanged(newPositionTicks); +} + +qint64 PlaybackProgressInfo::playbackStartTimeTicks() const { return m_playbackStartTimeTicks; } +void PlaybackProgressInfo::setPlaybackStartTimeTicks(qint64 newPlaybackStartTimeTicks) { + m_playbackStartTimeTicks = newPlaybackStartTimeTicks; + emit playbackStartTimeTicksChanged(newPlaybackStartTimeTicks); +} + +qint32 PlaybackProgressInfo::volumeLevel() const { return m_volumeLevel; } +void PlaybackProgressInfo::setVolumeLevel(qint32 newVolumeLevel) { + m_volumeLevel = newVolumeLevel; + emit volumeLevelChanged(newVolumeLevel); +} + +qint32 PlaybackProgressInfo::brightness() const { return m_brightness; } +void PlaybackProgressInfo::setBrightness(qint32 newBrightness) { + m_brightness = newBrightness; + emit brightnessChanged(newBrightness); +} + +QString PlaybackProgressInfo::aspectRatio() const { return m_aspectRatio; } +void PlaybackProgressInfo::setAspectRatio(QString newAspectRatio) { + m_aspectRatio = newAspectRatio; + emit aspectRatioChanged(newAspectRatio); +} + +PlayMethod PlaybackProgressInfo::playMethod() const { return m_playMethod; } +void PlaybackProgressInfo::setPlayMethod(PlayMethod newPlayMethod) { + m_playMethod = newPlayMethod; + emit playMethodChanged(newPlayMethod); +} + +QString PlaybackProgressInfo::liveStreamId() const { return m_liveStreamId; } +void PlaybackProgressInfo::setLiveStreamId(QString newLiveStreamId) { + m_liveStreamId = newLiveStreamId; + emit liveStreamIdChanged(newLiveStreamId); +} + +QString PlaybackProgressInfo::playSessionId() const { return m_playSessionId; } +void PlaybackProgressInfo::setPlaySessionId(QString newPlaySessionId) { + m_playSessionId = newPlaySessionId; + emit playSessionIdChanged(newPlaySessionId); +} + +RepeatMode PlaybackProgressInfo::repeatMode() const { return m_repeatMode; } +void PlaybackProgressInfo::setRepeatMode(RepeatMode newRepeatMode) { + m_repeatMode = newRepeatMode; + emit repeatModeChanged(newRepeatMode); +} + +QList PlaybackProgressInfo::nowPlayingQueue() const { return m_nowPlayingQueue; } +void PlaybackProgressInfo::setNowPlayingQueue(QList newNowPlayingQueue) { + m_nowPlayingQueue = newNowPlayingQueue; + emit nowPlayingQueueChanged(newNowPlayingQueue); +} + +QString PlaybackProgressInfo::playlistItemId() const { return m_playlistItemId; } +void PlaybackProgressInfo::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playbackstartinfo.cpp b/core/src/DTO/playbackstartinfo.cpp new file mode 100644 index 0000000..1c43af4 --- /dev/null +++ b/core/src/DTO/playbackstartinfo.cpp @@ -0,0 +1,176 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +PlaybackStartInfo::PlaybackStartInfo(QObject *parent) : QObject(parent) {} + +PlaybackStartInfo *PlaybackStartInfo::fromJSON(QJsonObject source, QObject *parent) { + PlaybackStartInfo *instance = new PlaybackStartInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void PlaybackStartInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PlaybackStartInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +bool PlaybackStartInfo::canSeek() const { return m_canSeek; } +void PlaybackStartInfo::setCanSeek(bool newCanSeek) { + m_canSeek = newCanSeek; + emit canSeekChanged(newCanSeek); +} + +BaseItemDto * PlaybackStartInfo::item() const { return m_item; } +void PlaybackStartInfo::setItem(BaseItemDto * newItem) { + m_item = newItem; + emit itemChanged(newItem); +} + +QString PlaybackStartInfo::itemId() const { return m_itemId; } +void PlaybackStartInfo::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString PlaybackStartInfo::sessionId() const { return m_sessionId; } +void PlaybackStartInfo::setSessionId(QString newSessionId) { + m_sessionId = newSessionId; + emit sessionIdChanged(newSessionId); +} + +QString PlaybackStartInfo::mediaSourceId() const { return m_mediaSourceId; } +void PlaybackStartInfo::setMediaSourceId(QString newMediaSourceId) { + m_mediaSourceId = newMediaSourceId; + emit mediaSourceIdChanged(newMediaSourceId); +} + +qint32 PlaybackStartInfo::audioStreamIndex() const { return m_audioStreamIndex; } +void PlaybackStartInfo::setAudioStreamIndex(qint32 newAudioStreamIndex) { + m_audioStreamIndex = newAudioStreamIndex; + emit audioStreamIndexChanged(newAudioStreamIndex); +} + +qint32 PlaybackStartInfo::subtitleStreamIndex() const { return m_subtitleStreamIndex; } +void PlaybackStartInfo::setSubtitleStreamIndex(qint32 newSubtitleStreamIndex) { + m_subtitleStreamIndex = newSubtitleStreamIndex; + emit subtitleStreamIndexChanged(newSubtitleStreamIndex); +} + +bool PlaybackStartInfo::isPaused() const { return m_isPaused; } +void PlaybackStartInfo::setIsPaused(bool newIsPaused) { + m_isPaused = newIsPaused; + emit isPausedChanged(newIsPaused); +} + +bool PlaybackStartInfo::isMuted() const { return m_isMuted; } +void PlaybackStartInfo::setIsMuted(bool newIsMuted) { + m_isMuted = newIsMuted; + emit isMutedChanged(newIsMuted); +} + +qint64 PlaybackStartInfo::positionTicks() const { return m_positionTicks; } +void PlaybackStartInfo::setPositionTicks(qint64 newPositionTicks) { + m_positionTicks = newPositionTicks; + emit positionTicksChanged(newPositionTicks); +} + +qint64 PlaybackStartInfo::playbackStartTimeTicks() const { return m_playbackStartTimeTicks; } +void PlaybackStartInfo::setPlaybackStartTimeTicks(qint64 newPlaybackStartTimeTicks) { + m_playbackStartTimeTicks = newPlaybackStartTimeTicks; + emit playbackStartTimeTicksChanged(newPlaybackStartTimeTicks); +} + +qint32 PlaybackStartInfo::volumeLevel() const { return m_volumeLevel; } +void PlaybackStartInfo::setVolumeLevel(qint32 newVolumeLevel) { + m_volumeLevel = newVolumeLevel; + emit volumeLevelChanged(newVolumeLevel); +} + +qint32 PlaybackStartInfo::brightness() const { return m_brightness; } +void PlaybackStartInfo::setBrightness(qint32 newBrightness) { + m_brightness = newBrightness; + emit brightnessChanged(newBrightness); +} + +QString PlaybackStartInfo::aspectRatio() const { return m_aspectRatio; } +void PlaybackStartInfo::setAspectRatio(QString newAspectRatio) { + m_aspectRatio = newAspectRatio; + emit aspectRatioChanged(newAspectRatio); +} + +PlayMethod PlaybackStartInfo::playMethod() const { return m_playMethod; } +void PlaybackStartInfo::setPlayMethod(PlayMethod newPlayMethod) { + m_playMethod = newPlayMethod; + emit playMethodChanged(newPlayMethod); +} + +QString PlaybackStartInfo::liveStreamId() const { return m_liveStreamId; } +void PlaybackStartInfo::setLiveStreamId(QString newLiveStreamId) { + m_liveStreamId = newLiveStreamId; + emit liveStreamIdChanged(newLiveStreamId); +} + +QString PlaybackStartInfo::playSessionId() const { return m_playSessionId; } +void PlaybackStartInfo::setPlaySessionId(QString newPlaySessionId) { + m_playSessionId = newPlaySessionId; + emit playSessionIdChanged(newPlaySessionId); +} + +RepeatMode PlaybackStartInfo::repeatMode() const { return m_repeatMode; } +void PlaybackStartInfo::setRepeatMode(RepeatMode newRepeatMode) { + m_repeatMode = newRepeatMode; + emit repeatModeChanged(newRepeatMode); +} + +QList PlaybackStartInfo::nowPlayingQueue() const { return m_nowPlayingQueue; } +void PlaybackStartInfo::setNowPlayingQueue(QList newNowPlayingQueue) { + m_nowPlayingQueue = newNowPlayingQueue; + emit nowPlayingQueueChanged(newNowPlayingQueue); +} + +QString PlaybackStartInfo::playlistItemId() const { return m_playlistItemId; } +void PlaybackStartInfo::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playbackstopinfo.cpp b/core/src/DTO/playbackstopinfo.cpp new file mode 100644 index 0000000..5c2f5c9 --- /dev/null +++ b/core/src/DTO/playbackstopinfo.cpp @@ -0,0 +1,119 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PlaybackStopInfo::PlaybackStopInfo(QObject *parent) : QObject(parent) {} + +PlaybackStopInfo *PlaybackStopInfo::fromJSON(QJsonObject source, QObject *parent) { + PlaybackStopInfo *instance = new PlaybackStopInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void PlaybackStopInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PlaybackStopInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +BaseItemDto * PlaybackStopInfo::item() const { return m_item; } +void PlaybackStopInfo::setItem(BaseItemDto * newItem) { + m_item = newItem; + emit itemChanged(newItem); +} + +QString PlaybackStopInfo::itemId() const { return m_itemId; } +void PlaybackStopInfo::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString PlaybackStopInfo::sessionId() const { return m_sessionId; } +void PlaybackStopInfo::setSessionId(QString newSessionId) { + m_sessionId = newSessionId; + emit sessionIdChanged(newSessionId); +} + +QString PlaybackStopInfo::mediaSourceId() const { return m_mediaSourceId; } +void PlaybackStopInfo::setMediaSourceId(QString newMediaSourceId) { + m_mediaSourceId = newMediaSourceId; + emit mediaSourceIdChanged(newMediaSourceId); +} + +qint64 PlaybackStopInfo::positionTicks() const { return m_positionTicks; } +void PlaybackStopInfo::setPositionTicks(qint64 newPositionTicks) { + m_positionTicks = newPositionTicks; + emit positionTicksChanged(newPositionTicks); +} + +QString PlaybackStopInfo::liveStreamId() const { return m_liveStreamId; } +void PlaybackStopInfo::setLiveStreamId(QString newLiveStreamId) { + m_liveStreamId = newLiveStreamId; + emit liveStreamIdChanged(newLiveStreamId); +} + +QString PlaybackStopInfo::playSessionId() const { return m_playSessionId; } +void PlaybackStopInfo::setPlaySessionId(QString newPlaySessionId) { + m_playSessionId = newPlaySessionId; + emit playSessionIdChanged(newPlaySessionId); +} + +bool PlaybackStopInfo::failed() const { return m_failed; } +void PlaybackStopInfo::setFailed(bool newFailed) { + m_failed = newFailed; + emit failedChanged(newFailed); +} + +QString PlaybackStopInfo::nextMediaType() const { return m_nextMediaType; } +void PlaybackStopInfo::setNextMediaType(QString newNextMediaType) { + m_nextMediaType = newNextMediaType; + emit nextMediaTypeChanged(newNextMediaType); +} + +QString PlaybackStopInfo::playlistItemId() const { return m_playlistItemId; } +void PlaybackStopInfo::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + +QList PlaybackStopInfo::nowPlayingQueue() const { return m_nowPlayingQueue; } +void PlaybackStopInfo::setNowPlayingQueue(QList newNowPlayingQueue) { + m_nowPlayingQueue = newNowPlayingQueue; + emit nowPlayingQueueChanged(newNowPlayingQueue); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playcommand.cpp b/core/src/DTO/playcommand.cpp new file mode 100644 index 0000000..59dbc5b --- /dev/null +++ b/core/src/DTO/playcommand.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PlayCommandClass::PlayCommandClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playerstateinfo.cpp b/core/src/DTO/playerstateinfo.cpp new file mode 100644 index 0000000..28cab92 --- /dev/null +++ b/core/src/DTO/playerstateinfo.cpp @@ -0,0 +1,116 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +PlayerStateInfo::PlayerStateInfo(QObject *parent) : QObject(parent) {} + +PlayerStateInfo *PlayerStateInfo::fromJSON(QJsonObject source, QObject *parent) { + PlayerStateInfo *instance = new PlayerStateInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void PlayerStateInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PlayerStateInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint64 PlayerStateInfo::positionTicks() const { return m_positionTicks; } +void PlayerStateInfo::setPositionTicks(qint64 newPositionTicks) { + m_positionTicks = newPositionTicks; + emit positionTicksChanged(newPositionTicks); +} + +bool PlayerStateInfo::canSeek() const { return m_canSeek; } +void PlayerStateInfo::setCanSeek(bool newCanSeek) { + m_canSeek = newCanSeek; + emit canSeekChanged(newCanSeek); +} + +bool PlayerStateInfo::isPaused() const { return m_isPaused; } +void PlayerStateInfo::setIsPaused(bool newIsPaused) { + m_isPaused = newIsPaused; + emit isPausedChanged(newIsPaused); +} + +bool PlayerStateInfo::isMuted() const { return m_isMuted; } +void PlayerStateInfo::setIsMuted(bool newIsMuted) { + m_isMuted = newIsMuted; + emit isMutedChanged(newIsMuted); +} + +qint32 PlayerStateInfo::volumeLevel() const { return m_volumeLevel; } +void PlayerStateInfo::setVolumeLevel(qint32 newVolumeLevel) { + m_volumeLevel = newVolumeLevel; + emit volumeLevelChanged(newVolumeLevel); +} + +qint32 PlayerStateInfo::audioStreamIndex() const { return m_audioStreamIndex; } +void PlayerStateInfo::setAudioStreamIndex(qint32 newAudioStreamIndex) { + m_audioStreamIndex = newAudioStreamIndex; + emit audioStreamIndexChanged(newAudioStreamIndex); +} + +qint32 PlayerStateInfo::subtitleStreamIndex() const { return m_subtitleStreamIndex; } +void PlayerStateInfo::setSubtitleStreamIndex(qint32 newSubtitleStreamIndex) { + m_subtitleStreamIndex = newSubtitleStreamIndex; + emit subtitleStreamIndexChanged(newSubtitleStreamIndex); +} + +QString PlayerStateInfo::mediaSourceId() const { return m_mediaSourceId; } +void PlayerStateInfo::setMediaSourceId(QString newMediaSourceId) { + m_mediaSourceId = newMediaSourceId; + emit mediaSourceIdChanged(newMediaSourceId); +} + +PlayMethod PlayerStateInfo::playMethod() const { return m_playMethod; } +void PlayerStateInfo::setPlayMethod(PlayMethod newPlayMethod) { + m_playMethod = newPlayMethod; + emit playMethodChanged(newPlayMethod); +} + +RepeatMode PlayerStateInfo::repeatMode() const { return m_repeatMode; } +void PlayerStateInfo::setRepeatMode(RepeatMode newRepeatMode) { + m_repeatMode = newRepeatMode; + emit repeatModeChanged(newRepeatMode); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playlistcreationresult.cpp b/core/src/DTO/playlistcreationresult.cpp new file mode 100644 index 0000000..d803300 --- /dev/null +++ b/core/src/DTO/playlistcreationresult.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PlaylistCreationResult::PlaylistCreationResult(QObject *parent) : QObject(parent) {} + +PlaylistCreationResult *PlaylistCreationResult::fromJSON(QJsonObject source, QObject *parent) { + PlaylistCreationResult *instance = new PlaylistCreationResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void PlaylistCreationResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PlaylistCreationResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString PlaylistCreationResult::jellyfinId() const { return m_jellyfinId; } +void PlaylistCreationResult::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playmethod.cpp b/core/src/DTO/playmethod.cpp new file mode 100644 index 0000000..22a7793 --- /dev/null +++ b/core/src/DTO/playmethod.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PlayMethodClass::PlayMethodClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playrequest.cpp b/core/src/DTO/playrequest.cpp new file mode 100644 index 0000000..98fa754 --- /dev/null +++ b/core/src/DTO/playrequest.cpp @@ -0,0 +1,103 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +PlayRequest::PlayRequest(QObject *parent) : QObject(parent) {} + +PlayRequest *PlayRequest::fromJSON(QJsonObject source, QObject *parent) { + PlayRequest *instance = new PlayRequest(parent); + instance->updateFromJSON(source); + return instance; +} + +void PlayRequest::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PlayRequest::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QStringList PlayRequest::itemIds() const { return m_itemIds; } +void PlayRequest::setItemIds(QStringList newItemIds) { + m_itemIds = newItemIds; + emit itemIdsChanged(newItemIds); +} + +qint64 PlayRequest::startPositionTicks() const { return m_startPositionTicks; } +void PlayRequest::setStartPositionTicks(qint64 newStartPositionTicks) { + m_startPositionTicks = newStartPositionTicks; + emit startPositionTicksChanged(newStartPositionTicks); +} + +PlayCommand PlayRequest::playCommand() const { return m_playCommand; } +void PlayRequest::setPlayCommand(PlayCommand newPlayCommand) { + m_playCommand = newPlayCommand; + emit playCommandChanged(newPlayCommand); +} + +QString PlayRequest::controllingUserId() const { return m_controllingUserId; } +void PlayRequest::setControllingUserId(QString newControllingUserId) { + m_controllingUserId = newControllingUserId; + emit controllingUserIdChanged(newControllingUserId); +} + +qint32 PlayRequest::subtitleStreamIndex() const { return m_subtitleStreamIndex; } +void PlayRequest::setSubtitleStreamIndex(qint32 newSubtitleStreamIndex) { + m_subtitleStreamIndex = newSubtitleStreamIndex; + emit subtitleStreamIndexChanged(newSubtitleStreamIndex); +} + +qint32 PlayRequest::audioStreamIndex() const { return m_audioStreamIndex; } +void PlayRequest::setAudioStreamIndex(qint32 newAudioStreamIndex) { + m_audioStreamIndex = newAudioStreamIndex; + emit audioStreamIndexChanged(newAudioStreamIndex); +} + +QString PlayRequest::mediaSourceId() const { return m_mediaSourceId; } +void PlayRequest::setMediaSourceId(QString newMediaSourceId) { + m_mediaSourceId = newMediaSourceId; + emit mediaSourceIdChanged(newMediaSourceId); +} + +qint32 PlayRequest::startIndex() const { return m_startIndex; } +void PlayRequest::setStartIndex(qint32 newStartIndex) { + m_startIndex = newStartIndex; + emit startIndexChanged(newStartIndex); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playrequestdto.cpp b/core/src/DTO/playrequestdto.cpp new file mode 100644 index 0000000..61f911a --- /dev/null +++ b/core/src/DTO/playrequestdto.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PlayRequestDto::PlayRequestDto(QObject *parent) : QObject(parent) {} + +PlayRequestDto *PlayRequestDto::fromJSON(QJsonObject source, QObject *parent) { + PlayRequestDto *instance = new PlayRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void PlayRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PlayRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QStringList PlayRequestDto::playingQueue() const { return m_playingQueue; } +void PlayRequestDto::setPlayingQueue(QStringList newPlayingQueue) { + m_playingQueue = newPlayingQueue; + emit playingQueueChanged(newPlayingQueue); +} + +qint32 PlayRequestDto::playingItemPosition() const { return m_playingItemPosition; } +void PlayRequestDto::setPlayingItemPosition(qint32 newPlayingItemPosition) { + m_playingItemPosition = newPlayingItemPosition; + emit playingItemPositionChanged(newPlayingItemPosition); +} + +qint64 PlayRequestDto::startPositionTicks() const { return m_startPositionTicks; } +void PlayRequestDto::setStartPositionTicks(qint64 newStartPositionTicks) { + m_startPositionTicks = newStartPositionTicks; + emit startPositionTicksChanged(newStartPositionTicks); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playstatecommand.cpp b/core/src/DTO/playstatecommand.cpp new file mode 100644 index 0000000..9860fef --- /dev/null +++ b/core/src/DTO/playstatecommand.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PlaystateCommandClass::PlaystateCommandClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/playstaterequest.cpp b/core/src/DTO/playstaterequest.cpp new file mode 100644 index 0000000..c339bb5 --- /dev/null +++ b/core/src/DTO/playstaterequest.cpp @@ -0,0 +1,73 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +PlaystateRequest::PlaystateRequest(QObject *parent) : QObject(parent) {} + +PlaystateRequest *PlaystateRequest::fromJSON(QJsonObject source, QObject *parent) { + PlaystateRequest *instance = new PlaystateRequest(parent); + instance->updateFromJSON(source); + return instance; +} + +void PlaystateRequest::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PlaystateRequest::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +PlaystateCommand PlaystateRequest::command() const { return m_command; } +void PlaystateRequest::setCommand(PlaystateCommand newCommand) { + m_command = newCommand; + emit commandChanged(newCommand); +} + +qint64 PlaystateRequest::seekPositionTicks() const { return m_seekPositionTicks; } +void PlaystateRequest::setSeekPositionTicks(qint64 newSeekPositionTicks) { + m_seekPositionTicks = newSeekPositionTicks; + emit seekPositionTicksChanged(newSeekPositionTicks); +} + +QString PlaystateRequest::controllingUserId() const { return m_controllingUserId; } +void PlaystateRequest::setControllingUserId(QString newControllingUserId) { + m_controllingUserId = newControllingUserId; + emit controllingUserIdChanged(newControllingUserId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/plugininfo.cpp b/core/src/DTO/plugininfo.cpp new file mode 100644 index 0000000..f2fc039 --- /dev/null +++ b/core/src/DTO/plugininfo.cpp @@ -0,0 +1,103 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +PluginInfo::PluginInfo(QObject *parent) : QObject(parent) {} + +PluginInfo *PluginInfo::fromJSON(QJsonObject source, QObject *parent) { + PluginInfo *instance = new PluginInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void PluginInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PluginInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString PluginInfo::name() const { return m_name; } +void PluginInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +Version * PluginInfo::version() const { return m_version; } +void PluginInfo::setVersion(Version * newVersion) { + m_version = newVersion; + emit versionChanged(newVersion); +} + +QString PluginInfo::configurationFileName() const { return m_configurationFileName; } +void PluginInfo::setConfigurationFileName(QString newConfigurationFileName) { + m_configurationFileName = newConfigurationFileName; + emit configurationFileNameChanged(newConfigurationFileName); +} + +QString PluginInfo::description() const { return m_description; } +void PluginInfo::setDescription(QString newDescription) { + m_description = newDescription; + emit descriptionChanged(newDescription); +} + +QString PluginInfo::jellyfinId() const { return m_jellyfinId; } +void PluginInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +bool PluginInfo::canUninstall() const { return m_canUninstall; } +void PluginInfo::setCanUninstall(bool newCanUninstall) { + m_canUninstall = newCanUninstall; + emit canUninstallChanged(newCanUninstall); +} + +bool PluginInfo::hasImage() const { return m_hasImage; } +void PluginInfo::setHasImage(bool newHasImage) { + m_hasImage = newHasImage; + emit hasImageChanged(newHasImage); +} + +PluginStatus PluginInfo::status() const { return m_status; } +void PluginInfo::setStatus(PluginStatus newStatus) { + m_status = newStatus; + emit statusChanged(newStatus); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/pluginsecurityinfo.cpp b/core/src/DTO/pluginsecurityinfo.cpp new file mode 100644 index 0000000..ead5e73 --- /dev/null +++ b/core/src/DTO/pluginsecurityinfo.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PluginSecurityInfo::PluginSecurityInfo(QObject *parent) : QObject(parent) {} + +PluginSecurityInfo *PluginSecurityInfo::fromJSON(QJsonObject source, QObject *parent) { + PluginSecurityInfo *instance = new PluginSecurityInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void PluginSecurityInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PluginSecurityInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString PluginSecurityInfo::supporterKey() const { return m_supporterKey; } +void PluginSecurityInfo::setSupporterKey(QString newSupporterKey) { + m_supporterKey = newSupporterKey; + emit supporterKeyChanged(newSupporterKey); +} + +bool PluginSecurityInfo::isMbSupporter() const { return m_isMbSupporter; } +void PluginSecurityInfo::setIsMbSupporter(bool newIsMbSupporter) { + m_isMbSupporter = newIsMbSupporter; + emit isMbSupporterChanged(newIsMbSupporter); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/pluginstatus.cpp b/core/src/DTO/pluginstatus.cpp new file mode 100644 index 0000000..ac0681d --- /dev/null +++ b/core/src/DTO/pluginstatus.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PluginStatusClass::PluginStatusClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/previousitemrequestdto.cpp b/core/src/DTO/previousitemrequestdto.cpp new file mode 100644 index 0000000..1c86d28 --- /dev/null +++ b/core/src/DTO/previousitemrequestdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PreviousItemRequestDto::PreviousItemRequestDto(QObject *parent) : QObject(parent) {} + +PreviousItemRequestDto *PreviousItemRequestDto::fromJSON(QJsonObject source, QObject *parent) { + PreviousItemRequestDto *instance = new PreviousItemRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void PreviousItemRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PreviousItemRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString PreviousItemRequestDto::playlistItemId() const { return m_playlistItemId; } +void PreviousItemRequestDto::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/problemdetails.cpp b/core/src/DTO/problemdetails.cpp new file mode 100644 index 0000000..e8f0ce3 --- /dev/null +++ b/core/src/DTO/problemdetails.cpp @@ -0,0 +1,83 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ProblemDetails::ProblemDetails(QObject *parent) : QObject(parent) {} + +ProblemDetails *ProblemDetails::fromJSON(QJsonObject source, QObject *parent) { + ProblemDetails *instance = new ProblemDetails(parent); + instance->updateFromJSON(source); + return instance; +} + +void ProblemDetails::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ProblemDetails::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ProblemDetails::type() const { return m_type; } +void ProblemDetails::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString ProblemDetails::title() const { return m_title; } +void ProblemDetails::setTitle(QString newTitle) { + m_title = newTitle; + emit titleChanged(newTitle); +} + +qint32 ProblemDetails::status() const { return m_status; } +void ProblemDetails::setStatus(qint32 newStatus) { + m_status = newStatus; + emit statusChanged(newStatus); +} + +QString ProblemDetails::detail() const { return m_detail; } +void ProblemDetails::setDetail(QString newDetail) { + m_detail = newDetail; + emit detailChanged(newDetail); +} + +QString ProblemDetails::instance() const { return m_instance; } +void ProblemDetails::setInstance(QString newInstance) { + m_instance = newInstance; + emit instanceChanged(newInstance); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/profilecondition.cpp b/core/src/DTO/profilecondition.cpp new file mode 100644 index 0000000..d51cb29 --- /dev/null +++ b/core/src/DTO/profilecondition.cpp @@ -0,0 +1,80 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +ProfileCondition::ProfileCondition(QObject *parent) : QObject(parent) {} + +ProfileCondition *ProfileCondition::fromJSON(QJsonObject source, QObject *parent) { + ProfileCondition *instance = new ProfileCondition(parent); + instance->updateFromJSON(source); + return instance; +} + +void ProfileCondition::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ProfileCondition::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +ProfileConditionType ProfileCondition::condition() const { return m_condition; } +void ProfileCondition::setCondition(ProfileConditionType newCondition) { + m_condition = newCondition; + emit conditionChanged(newCondition); +} + +ProfileConditionValue ProfileCondition::property() const { return m_property; } +void ProfileCondition::setProperty(ProfileConditionValue newProperty) { + m_property = newProperty; + emit propertyChanged(newProperty); +} + +QString ProfileCondition::value() const { return m_value; } +void ProfileCondition::setValue(QString newValue) { + m_value = newValue; + emit valueChanged(newValue); +} + +bool ProfileCondition::isRequired() const { return m_isRequired; } +void ProfileCondition::setIsRequired(bool newIsRequired) { + m_isRequired = newIsRequired; + emit isRequiredChanged(newIsRequired); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/profileconditiontype.cpp b/core/src/DTO/profileconditiontype.cpp new file mode 100644 index 0000000..609219f --- /dev/null +++ b/core/src/DTO/profileconditiontype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ProfileConditionTypeClass::ProfileConditionTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/profileconditionvalue.cpp b/core/src/DTO/profileconditionvalue.cpp new file mode 100644 index 0000000..dd9729e --- /dev/null +++ b/core/src/DTO/profileconditionvalue.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ProfileConditionValueClass::ProfileConditionValueClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/programaudio.cpp b/core/src/DTO/programaudio.cpp new file mode 100644 index 0000000..cb276fe --- /dev/null +++ b/core/src/DTO/programaudio.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ProgramAudioClass::ProgramAudioClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/publicsysteminfo.cpp b/core/src/DTO/publicsysteminfo.cpp new file mode 100644 index 0000000..2fe5a25 --- /dev/null +++ b/core/src/DTO/publicsysteminfo.cpp @@ -0,0 +1,95 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +PublicSystemInfo::PublicSystemInfo(QObject *parent) : QObject(parent) {} + +PublicSystemInfo *PublicSystemInfo::fromJSON(QJsonObject source, QObject *parent) { + PublicSystemInfo *instance = new PublicSystemInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void PublicSystemInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject PublicSystemInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString PublicSystemInfo::localAddress() const { return m_localAddress; } +void PublicSystemInfo::setLocalAddress(QString newLocalAddress) { + m_localAddress = newLocalAddress; + emit localAddressChanged(newLocalAddress); +} + +QString PublicSystemInfo::serverName() const { return m_serverName; } +void PublicSystemInfo::setServerName(QString newServerName) { + m_serverName = newServerName; + emit serverNameChanged(newServerName); +} + +QString PublicSystemInfo::version() const { return m_version; } +void PublicSystemInfo::setVersion(QString newVersion) { + m_version = newVersion; + emit versionChanged(newVersion); +} + +QString PublicSystemInfo::productName() const { return m_productName; } +void PublicSystemInfo::setProductName(QString newProductName) { + m_productName = newProductName; + emit productNameChanged(newProductName); +} + +QString PublicSystemInfo::operatingSystem() const { return m_operatingSystem; } +void PublicSystemInfo::setOperatingSystem(QString newOperatingSystem) { + m_operatingSystem = newOperatingSystem; + emit operatingSystemChanged(newOperatingSystem); +} + +QString PublicSystemInfo::jellyfinId() const { return m_jellyfinId; } +void PublicSystemInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +bool PublicSystemInfo::startupWizardCompleted() const { return m_startupWizardCompleted; } +void PublicSystemInfo::setStartupWizardCompleted(bool newStartupWizardCompleted) { + m_startupWizardCompleted = newStartupWizardCompleted; + emit startupWizardCompletedChanged(newStartupWizardCompleted); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/queryfilters.cpp b/core/src/DTO/queryfilters.cpp new file mode 100644 index 0000000..bf048c1 --- /dev/null +++ b/core/src/DTO/queryfilters.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +QueryFilters::QueryFilters(QObject *parent) : QObject(parent) {} + +QueryFilters *QueryFilters::fromJSON(QJsonObject source, QObject *parent) { + QueryFilters *instance = new QueryFilters(parent); + instance->updateFromJSON(source); + return instance; +} + +void QueryFilters::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject QueryFilters::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList QueryFilters::genres() const { return m_genres; } +void QueryFilters::setGenres(QList newGenres) { + m_genres = newGenres; + emit genresChanged(newGenres); +} + +QStringList QueryFilters::tags() const { return m_tags; } +void QueryFilters::setTags(QStringList newTags) { + m_tags = newTags; + emit tagsChanged(newTags); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/queryfilterslegacy.cpp b/core/src/DTO/queryfilterslegacy.cpp new file mode 100644 index 0000000..be96b3c --- /dev/null +++ b/core/src/DTO/queryfilterslegacy.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +QueryFiltersLegacy::QueryFiltersLegacy(QObject *parent) : QObject(parent) {} + +QueryFiltersLegacy *QueryFiltersLegacy::fromJSON(QJsonObject source, QObject *parent) { + QueryFiltersLegacy *instance = new QueryFiltersLegacy(parent); + instance->updateFromJSON(source); + return instance; +} + +void QueryFiltersLegacy::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject QueryFiltersLegacy::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QStringList QueryFiltersLegacy::genres() const { return m_genres; } +void QueryFiltersLegacy::setGenres(QStringList newGenres) { + m_genres = newGenres; + emit genresChanged(newGenres); +} + +QStringList QueryFiltersLegacy::tags() const { return m_tags; } +void QueryFiltersLegacy::setTags(QStringList newTags) { + m_tags = newTags; + emit tagsChanged(newTags); +} + +QStringList QueryFiltersLegacy::officialRatings() const { return m_officialRatings; } +void QueryFiltersLegacy::setOfficialRatings(QStringList newOfficialRatings) { + m_officialRatings = newOfficialRatings; + emit officialRatingsChanged(newOfficialRatings); +} + +QList QueryFiltersLegacy::years() const { return m_years; } +void QueryFiltersLegacy::setYears(QList newYears) { + m_years = newYears; + emit yearsChanged(newYears); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/queueitem.cpp b/core/src/DTO/queueitem.cpp new file mode 100644 index 0000000..97f37ef --- /dev/null +++ b/core/src/DTO/queueitem.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +QueueItem::QueueItem(QObject *parent) : QObject(parent) {} + +QueueItem *QueueItem::fromJSON(QJsonObject source, QObject *parent) { + QueueItem *instance = new QueueItem(parent); + instance->updateFromJSON(source); + return instance; +} + +void QueueItem::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject QueueItem::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString QueueItem::jellyfinId() const { return m_jellyfinId; } +void QueueItem::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString QueueItem::playlistItemId() const { return m_playlistItemId; } +void QueueItem::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/queuerequestdto.cpp b/core/src/DTO/queuerequestdto.cpp new file mode 100644 index 0000000..d33dd24 --- /dev/null +++ b/core/src/DTO/queuerequestdto.cpp @@ -0,0 +1,67 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +QueueRequestDto::QueueRequestDto(QObject *parent) : QObject(parent) {} + +QueueRequestDto *QueueRequestDto::fromJSON(QJsonObject source, QObject *parent) { + QueueRequestDto *instance = new QueueRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void QueueRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject QueueRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QStringList QueueRequestDto::itemIds() const { return m_itemIds; } +void QueueRequestDto::setItemIds(QStringList newItemIds) { + m_itemIds = newItemIds; + emit itemIdsChanged(newItemIds); +} + +GroupQueueMode QueueRequestDto::mode() const { return m_mode; } +void QueueRequestDto::setMode(GroupQueueMode newMode) { + m_mode = newMode; + emit modeChanged(newMode); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/quickconnectdto.cpp b/core/src/DTO/quickconnectdto.cpp new file mode 100644 index 0000000..4fcf75b --- /dev/null +++ b/core/src/DTO/quickconnectdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +QuickConnectDto::QuickConnectDto(QObject *parent) : QObject(parent) {} + +QuickConnectDto *QuickConnectDto::fromJSON(QJsonObject source, QObject *parent) { + QuickConnectDto *instance = new QuickConnectDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void QuickConnectDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject QuickConnectDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString QuickConnectDto::token() const { return m_token; } +void QuickConnectDto::setToken(QString newToken) { + m_token = newToken; + emit tokenChanged(newToken); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/quickconnectresult.cpp b/core/src/DTO/quickconnectresult.cpp new file mode 100644 index 0000000..8ec3a1f --- /dev/null +++ b/core/src/DTO/quickconnectresult.cpp @@ -0,0 +1,89 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +QuickConnectResult::QuickConnectResult(QObject *parent) : QObject(parent) {} + +QuickConnectResult *QuickConnectResult::fromJSON(QJsonObject source, QObject *parent) { + QuickConnectResult *instance = new QuickConnectResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void QuickConnectResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject QuickConnectResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +bool QuickConnectResult::authenticated() const { return m_authenticated; } +void QuickConnectResult::setAuthenticated(bool newAuthenticated) { + m_authenticated = newAuthenticated; + emit authenticatedChanged(newAuthenticated); +} + +QString QuickConnectResult::secret() const { return m_secret; } +void QuickConnectResult::setSecret(QString newSecret) { + m_secret = newSecret; + emit secretChanged(newSecret); +} + +QString QuickConnectResult::code() const { return m_code; } +void QuickConnectResult::setCode(QString newCode) { + m_code = newCode; + emit codeChanged(newCode); +} + +QString QuickConnectResult::authentication() const { return m_authentication; } +void QuickConnectResult::setAuthentication(QString newAuthentication) { + m_authentication = newAuthentication; + emit authenticationChanged(newAuthentication); +} + +QString QuickConnectResult::error() const { return m_error; } +void QuickConnectResult::setError(QString newError) { + m_error = newError; + emit errorChanged(newError); +} + +QDateTime QuickConnectResult::dateAdded() const { return m_dateAdded; } +void QuickConnectResult::setDateAdded(QDateTime newDateAdded) { + m_dateAdded = newDateAdded; + emit dateAddedChanged(newDateAdded); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/quickconnectstate.cpp b/core/src/DTO/quickconnectstate.cpp new file mode 100644 index 0000000..cdfcfed --- /dev/null +++ b/core/src/DTO/quickconnectstate.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +QuickConnectStateClass::QuickConnectStateClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/ratingtype.cpp b/core/src/DTO/ratingtype.cpp new file mode 100644 index 0000000..4ddcf94 --- /dev/null +++ b/core/src/DTO/ratingtype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +RatingTypeClass::RatingTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/readyrequestdto.cpp b/core/src/DTO/readyrequestdto.cpp new file mode 100644 index 0000000..16137e1 --- /dev/null +++ b/core/src/DTO/readyrequestdto.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ReadyRequestDto::ReadyRequestDto(QObject *parent) : QObject(parent) {} + +ReadyRequestDto *ReadyRequestDto::fromJSON(QJsonObject source, QObject *parent) { + ReadyRequestDto *instance = new ReadyRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void ReadyRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ReadyRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QDateTime ReadyRequestDto::when() const { return m_when; } +void ReadyRequestDto::setWhen(QDateTime newWhen) { + m_when = newWhen; + emit whenChanged(newWhen); +} + +qint64 ReadyRequestDto::positionTicks() const { return m_positionTicks; } +void ReadyRequestDto::setPositionTicks(qint64 newPositionTicks) { + m_positionTicks = newPositionTicks; + emit positionTicksChanged(newPositionTicks); +} + +bool ReadyRequestDto::isPlaying() const { return m_isPlaying; } +void ReadyRequestDto::setIsPlaying(bool newIsPlaying) { + m_isPlaying = newIsPlaying; + emit isPlayingChanged(newIsPlaying); +} + +QString ReadyRequestDto::playlistItemId() const { return m_playlistItemId; } +void ReadyRequestDto::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/recommendationdto.cpp b/core/src/DTO/recommendationdto.cpp new file mode 100644 index 0000000..7dd560f --- /dev/null +++ b/core/src/DTO/recommendationdto.cpp @@ -0,0 +1,79 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +RecommendationDto::RecommendationDto(QObject *parent) : QObject(parent) {} + +RecommendationDto *RecommendationDto::fromJSON(QJsonObject source, QObject *parent) { + RecommendationDto *instance = new RecommendationDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void RecommendationDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject RecommendationDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList RecommendationDto::items() const { return m_items; } +void RecommendationDto::setItems(QList newItems) { + m_items = newItems; + emit itemsChanged(newItems); +} + +RecommendationType RecommendationDto::recommendationType() const { return m_recommendationType; } +void RecommendationDto::setRecommendationType(RecommendationType newRecommendationType) { + m_recommendationType = newRecommendationType; + emit recommendationTypeChanged(newRecommendationType); +} + +QString RecommendationDto::baselineItemName() const { return m_baselineItemName; } +void RecommendationDto::setBaselineItemName(QString newBaselineItemName) { + m_baselineItemName = newBaselineItemName; + emit baselineItemNameChanged(newBaselineItemName); +} + +QString RecommendationDto::categoryId() const { return m_categoryId; } +void RecommendationDto::setCategoryId(QString newCategoryId) { + m_categoryId = newCategoryId; + emit categoryIdChanged(newCategoryId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/recommendationtype.cpp b/core/src/DTO/recommendationtype.cpp new file mode 100644 index 0000000..02be660 --- /dev/null +++ b/core/src/DTO/recommendationtype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +RecommendationTypeClass::RecommendationTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/recordingstatus.cpp b/core/src/DTO/recordingstatus.cpp new file mode 100644 index 0000000..690d05e --- /dev/null +++ b/core/src/DTO/recordingstatus.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +RecordingStatusClass::RecordingStatusClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/remoteimageinfo.cpp b/core/src/DTO/remoteimageinfo.cpp new file mode 100644 index 0000000..6086bd8 --- /dev/null +++ b/core/src/DTO/remoteimageinfo.cpp @@ -0,0 +1,116 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +RemoteImageInfo::RemoteImageInfo(QObject *parent) : QObject(parent) {} + +RemoteImageInfo *RemoteImageInfo::fromJSON(QJsonObject source, QObject *parent) { + RemoteImageInfo *instance = new RemoteImageInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void RemoteImageInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject RemoteImageInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString RemoteImageInfo::providerName() const { return m_providerName; } +void RemoteImageInfo::setProviderName(QString newProviderName) { + m_providerName = newProviderName; + emit providerNameChanged(newProviderName); +} + +QString RemoteImageInfo::url() const { return m_url; } +void RemoteImageInfo::setUrl(QString newUrl) { + m_url = newUrl; + emit urlChanged(newUrl); +} + +QString RemoteImageInfo::thumbnailUrl() const { return m_thumbnailUrl; } +void RemoteImageInfo::setThumbnailUrl(QString newThumbnailUrl) { + m_thumbnailUrl = newThumbnailUrl; + emit thumbnailUrlChanged(newThumbnailUrl); +} + +qint32 RemoteImageInfo::height() const { return m_height; } +void RemoteImageInfo::setHeight(qint32 newHeight) { + m_height = newHeight; + emit heightChanged(newHeight); +} + +qint32 RemoteImageInfo::width() const { return m_width; } +void RemoteImageInfo::setWidth(qint32 newWidth) { + m_width = newWidth; + emit widthChanged(newWidth); +} + +double RemoteImageInfo::communityRating() const { return m_communityRating; } +void RemoteImageInfo::setCommunityRating(double newCommunityRating) { + m_communityRating = newCommunityRating; + emit communityRatingChanged(newCommunityRating); +} + +qint32 RemoteImageInfo::voteCount() const { return m_voteCount; } +void RemoteImageInfo::setVoteCount(qint32 newVoteCount) { + m_voteCount = newVoteCount; + emit voteCountChanged(newVoteCount); +} + +QString RemoteImageInfo::language() const { return m_language; } +void RemoteImageInfo::setLanguage(QString newLanguage) { + m_language = newLanguage; + emit languageChanged(newLanguage); +} + +ImageType RemoteImageInfo::type() const { return m_type; } +void RemoteImageInfo::setType(ImageType newType) { + m_type = newType; + emit typeChanged(newType); +} + +RatingType RemoteImageInfo::ratingType() const { return m_ratingType; } +void RemoteImageInfo::setRatingType(RatingType newRatingType) { + m_ratingType = newRatingType; + emit ratingTypeChanged(newRatingType); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/remoteimageresult.cpp b/core/src/DTO/remoteimageresult.cpp new file mode 100644 index 0000000..acab310 --- /dev/null +++ b/core/src/DTO/remoteimageresult.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +RemoteImageResult::RemoteImageResult(QObject *parent) : QObject(parent) {} + +RemoteImageResult *RemoteImageResult::fromJSON(QJsonObject source, QObject *parent) { + RemoteImageResult *instance = new RemoteImageResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void RemoteImageResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject RemoteImageResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList RemoteImageResult::images() const { return m_images; } +void RemoteImageResult::setImages(QList newImages) { + m_images = newImages; + emit imagesChanged(newImages); +} + +qint32 RemoteImageResult::totalRecordCount() const { return m_totalRecordCount; } +void RemoteImageResult::setTotalRecordCount(qint32 newTotalRecordCount) { + m_totalRecordCount = newTotalRecordCount; + emit totalRecordCountChanged(newTotalRecordCount); +} + +QStringList RemoteImageResult::providers() const { return m_providers; } +void RemoteImageResult::setProviders(QStringList newProviders) { + m_providers = newProviders; + emit providersChanged(newProviders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/remotesearchresult.cpp b/core/src/DTO/remotesearchresult.cpp new file mode 100644 index 0000000..7325bbd --- /dev/null +++ b/core/src/DTO/remotesearchresult.cpp @@ -0,0 +1,125 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +RemoteSearchResult::RemoteSearchResult(QObject *parent) : QObject(parent) {} + +RemoteSearchResult *RemoteSearchResult::fromJSON(QJsonObject source, QObject *parent) { + RemoteSearchResult *instance = new RemoteSearchResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void RemoteSearchResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject RemoteSearchResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString RemoteSearchResult::name() const { return m_name; } +void RemoteSearchResult::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QJsonObject RemoteSearchResult::providerIds() const { return m_providerIds; } +void RemoteSearchResult::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 RemoteSearchResult::productionYear() const { return m_productionYear; } +void RemoteSearchResult::setProductionYear(qint32 newProductionYear) { + m_productionYear = newProductionYear; + emit productionYearChanged(newProductionYear); +} + +qint32 RemoteSearchResult::indexNumber() const { return m_indexNumber; } +void RemoteSearchResult::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 RemoteSearchResult::indexNumberEnd() const { return m_indexNumberEnd; } +void RemoteSearchResult::setIndexNumberEnd(qint32 newIndexNumberEnd) { + m_indexNumberEnd = newIndexNumberEnd; + emit indexNumberEndChanged(newIndexNumberEnd); +} + +qint32 RemoteSearchResult::parentIndexNumber() const { return m_parentIndexNumber; } +void RemoteSearchResult::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime RemoteSearchResult::premiereDate() const { return m_premiereDate; } +void RemoteSearchResult::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +QString RemoteSearchResult::imageUrl() const { return m_imageUrl; } +void RemoteSearchResult::setImageUrl(QString newImageUrl) { + m_imageUrl = newImageUrl; + emit imageUrlChanged(newImageUrl); +} + +QString RemoteSearchResult::searchProviderName() const { return m_searchProviderName; } +void RemoteSearchResult::setSearchProviderName(QString newSearchProviderName) { + m_searchProviderName = newSearchProviderName; + emit searchProviderNameChanged(newSearchProviderName); +} + +QString RemoteSearchResult::overview() const { return m_overview; } +void RemoteSearchResult::setOverview(QString newOverview) { + m_overview = newOverview; + emit overviewChanged(newOverview); +} + +RemoteSearchResult * RemoteSearchResult::albumArtist() const { return m_albumArtist; } +void RemoteSearchResult::setAlbumArtist(RemoteSearchResult * newAlbumArtist) { + m_albumArtist = newAlbumArtist; + emit albumArtistChanged(newAlbumArtist); +} + +QList RemoteSearchResult::artists() const { return m_artists; } +void RemoteSearchResult::setArtists(QList newArtists) { + m_artists = newArtists; + emit artistsChanged(newArtists); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/remotesubtitleinfo.cpp b/core/src/DTO/remotesubtitleinfo.cpp new file mode 100644 index 0000000..bd98639 --- /dev/null +++ b/core/src/DTO/remotesubtitleinfo.cpp @@ -0,0 +1,119 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +RemoteSubtitleInfo::RemoteSubtitleInfo(QObject *parent) : QObject(parent) {} + +RemoteSubtitleInfo *RemoteSubtitleInfo::fromJSON(QJsonObject source, QObject *parent) { + RemoteSubtitleInfo *instance = new RemoteSubtitleInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void RemoteSubtitleInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject RemoteSubtitleInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString RemoteSubtitleInfo::threeLetterISOLanguageName() const { return m_threeLetterISOLanguageName; } +void RemoteSubtitleInfo::setThreeLetterISOLanguageName(QString newThreeLetterISOLanguageName) { + m_threeLetterISOLanguageName = newThreeLetterISOLanguageName; + emit threeLetterISOLanguageNameChanged(newThreeLetterISOLanguageName); +} + +QString RemoteSubtitleInfo::jellyfinId() const { return m_jellyfinId; } +void RemoteSubtitleInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString RemoteSubtitleInfo::providerName() const { return m_providerName; } +void RemoteSubtitleInfo::setProviderName(QString newProviderName) { + m_providerName = newProviderName; + emit providerNameChanged(newProviderName); +} + +QString RemoteSubtitleInfo::name() const { return m_name; } +void RemoteSubtitleInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString RemoteSubtitleInfo::format() const { return m_format; } +void RemoteSubtitleInfo::setFormat(QString newFormat) { + m_format = newFormat; + emit formatChanged(newFormat); +} + +QString RemoteSubtitleInfo::author() const { return m_author; } +void RemoteSubtitleInfo::setAuthor(QString newAuthor) { + m_author = newAuthor; + emit authorChanged(newAuthor); +} + +QString RemoteSubtitleInfo::comment() const { return m_comment; } +void RemoteSubtitleInfo::setComment(QString newComment) { + m_comment = newComment; + emit commentChanged(newComment); +} + +QDateTime RemoteSubtitleInfo::dateCreated() const { return m_dateCreated; } +void RemoteSubtitleInfo::setDateCreated(QDateTime newDateCreated) { + m_dateCreated = newDateCreated; + emit dateCreatedChanged(newDateCreated); +} + +float RemoteSubtitleInfo::communityRating() const { return m_communityRating; } +void RemoteSubtitleInfo::setCommunityRating(float newCommunityRating) { + m_communityRating = newCommunityRating; + emit communityRatingChanged(newCommunityRating); +} + +qint32 RemoteSubtitleInfo::downloadCount() const { return m_downloadCount; } +void RemoteSubtitleInfo::setDownloadCount(qint32 newDownloadCount) { + m_downloadCount = newDownloadCount; + emit downloadCountChanged(newDownloadCount); +} + +bool RemoteSubtitleInfo::isHashMatch() const { return m_isHashMatch; } +void RemoteSubtitleInfo::setIsHashMatch(bool newIsHashMatch) { + m_isHashMatch = newIsHashMatch; + emit isHashMatchChanged(newIsHashMatch); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/removefromplaylistrequestdto.cpp b/core/src/DTO/removefromplaylistrequestdto.cpp new file mode 100644 index 0000000..54cfc71 --- /dev/null +++ b/core/src/DTO/removefromplaylistrequestdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +RemoveFromPlaylistRequestDto::RemoveFromPlaylistRequestDto(QObject *parent) : QObject(parent) {} + +RemoveFromPlaylistRequestDto *RemoveFromPlaylistRequestDto::fromJSON(QJsonObject source, QObject *parent) { + RemoveFromPlaylistRequestDto *instance = new RemoveFromPlaylistRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void RemoveFromPlaylistRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject RemoveFromPlaylistRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QStringList RemoveFromPlaylistRequestDto::playlistItemIds() const { return m_playlistItemIds; } +void RemoveFromPlaylistRequestDto::setPlaylistItemIds(QStringList newPlaylistItemIds) { + m_playlistItemIds = newPlaylistItemIds; + emit playlistItemIdsChanged(newPlaylistItemIds); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/repeatmode.cpp b/core/src/DTO/repeatmode.cpp new file mode 100644 index 0000000..595f763 --- /dev/null +++ b/core/src/DTO/repeatmode.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +RepeatModeClass::RepeatModeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/repositoryinfo.cpp b/core/src/DTO/repositoryinfo.cpp new file mode 100644 index 0000000..8fe5d2f --- /dev/null +++ b/core/src/DTO/repositoryinfo.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +RepositoryInfo::RepositoryInfo(QObject *parent) : QObject(parent) {} + +RepositoryInfo *RepositoryInfo::fromJSON(QJsonObject source, QObject *parent) { + RepositoryInfo *instance = new RepositoryInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void RepositoryInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject RepositoryInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString RepositoryInfo::name() const { return m_name; } +void RepositoryInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString RepositoryInfo::url() const { return m_url; } +void RepositoryInfo::setUrl(QString newUrl) { + m_url = newUrl; + emit urlChanged(newUrl); +} + +bool RepositoryInfo::enabled() const { return m_enabled; } +void RepositoryInfo::setEnabled(bool newEnabled) { + m_enabled = newEnabled; + emit enabledChanged(newEnabled); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/responseprofile.cpp b/core/src/DTO/responseprofile.cpp new file mode 100644 index 0000000..a6cfe69 --- /dev/null +++ b/core/src/DTO/responseprofile.cpp @@ -0,0 +1,97 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ResponseProfile::ResponseProfile(QObject *parent) : QObject(parent) {} + +ResponseProfile *ResponseProfile::fromJSON(QJsonObject source, QObject *parent) { + ResponseProfile *instance = new ResponseProfile(parent); + instance->updateFromJSON(source); + return instance; +} + +void ResponseProfile::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ResponseProfile::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString ResponseProfile::container() const { return m_container; } +void ResponseProfile::setContainer(QString newContainer) { + m_container = newContainer; + emit containerChanged(newContainer); +} + +QString ResponseProfile::audioCodec() const { return m_audioCodec; } +void ResponseProfile::setAudioCodec(QString newAudioCodec) { + m_audioCodec = newAudioCodec; + emit audioCodecChanged(newAudioCodec); +} + +QString ResponseProfile::videoCodec() const { return m_videoCodec; } +void ResponseProfile::setVideoCodec(QString newVideoCodec) { + m_videoCodec = newVideoCodec; + emit videoCodecChanged(newVideoCodec); +} + +DlnaProfileType ResponseProfile::type() const { return m_type; } +void ResponseProfile::setType(DlnaProfileType newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString ResponseProfile::orgPn() const { return m_orgPn; } +void ResponseProfile::setOrgPn(QString newOrgPn) { + m_orgPn = newOrgPn; + emit orgPnChanged(newOrgPn); +} + +QString ResponseProfile::mimeType() const { return m_mimeType; } +void ResponseProfile::setMimeType(QString newMimeType) { + m_mimeType = newMimeType; + emit mimeTypeChanged(newMimeType); +} + +QList ResponseProfile::conditions() const { return m_conditions; } +void ResponseProfile::setConditions(QList newConditions) { + m_conditions = newConditions; + emit conditionsChanged(newConditions); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/scrolldirection.cpp b/core/src/DTO/scrolldirection.cpp new file mode 100644 index 0000000..893d2fa --- /dev/null +++ b/core/src/DTO/scrolldirection.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ScrollDirectionClass::ScrollDirectionClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/searchhint.cpp b/core/src/DTO/searchhint.cpp new file mode 100644 index 0000000..d494678 --- /dev/null +++ b/core/src/DTO/searchhint.cpp @@ -0,0 +1,227 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SearchHint::SearchHint(QObject *parent) : QObject(parent) {} + +SearchHint *SearchHint::fromJSON(QJsonObject source, QObject *parent) { + SearchHint *instance = new SearchHint(parent); + instance->updateFromJSON(source); + return instance; +} + +void SearchHint::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SearchHint::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SearchHint::itemId() const { return m_itemId; } +void SearchHint::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString SearchHint::jellyfinId() const { return m_jellyfinId; } +void SearchHint::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString SearchHint::name() const { return m_name; } +void SearchHint::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString SearchHint::matchedTerm() const { return m_matchedTerm; } +void SearchHint::setMatchedTerm(QString newMatchedTerm) { + m_matchedTerm = newMatchedTerm; + emit matchedTermChanged(newMatchedTerm); +} + +qint32 SearchHint::indexNumber() const { return m_indexNumber; } +void SearchHint::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 SearchHint::productionYear() const { return m_productionYear; } +void SearchHint::setProductionYear(qint32 newProductionYear) { + m_productionYear = newProductionYear; + emit productionYearChanged(newProductionYear); +} + +qint32 SearchHint::parentIndexNumber() const { return m_parentIndexNumber; } +void SearchHint::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QString SearchHint::primaryImageTag() const { return m_primaryImageTag; } +void SearchHint::setPrimaryImageTag(QString newPrimaryImageTag) { + m_primaryImageTag = newPrimaryImageTag; + emit primaryImageTagChanged(newPrimaryImageTag); +} + +QString SearchHint::thumbImageTag() const { return m_thumbImageTag; } +void SearchHint::setThumbImageTag(QString newThumbImageTag) { + m_thumbImageTag = newThumbImageTag; + emit thumbImageTagChanged(newThumbImageTag); +} + +QString SearchHint::thumbImageItemId() const { return m_thumbImageItemId; } +void SearchHint::setThumbImageItemId(QString newThumbImageItemId) { + m_thumbImageItemId = newThumbImageItemId; + emit thumbImageItemIdChanged(newThumbImageItemId); +} + +QString SearchHint::backdropImageTag() const { return m_backdropImageTag; } +void SearchHint::setBackdropImageTag(QString newBackdropImageTag) { + m_backdropImageTag = newBackdropImageTag; + emit backdropImageTagChanged(newBackdropImageTag); +} + +QString SearchHint::backdropImageItemId() const { return m_backdropImageItemId; } +void SearchHint::setBackdropImageItemId(QString newBackdropImageItemId) { + m_backdropImageItemId = newBackdropImageItemId; + emit backdropImageItemIdChanged(newBackdropImageItemId); +} + +QString SearchHint::type() const { return m_type; } +void SearchHint::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +bool SearchHint::isFolder() const { return m_isFolder; } +void SearchHint::setIsFolder(bool newIsFolder) { + m_isFolder = newIsFolder; + emit isFolderChanged(newIsFolder); +} + +qint64 SearchHint::runTimeTicks() const { return m_runTimeTicks; } +void SearchHint::setRunTimeTicks(qint64 newRunTimeTicks) { + m_runTimeTicks = newRunTimeTicks; + emit runTimeTicksChanged(newRunTimeTicks); +} + +QString SearchHint::mediaType() const { return m_mediaType; } +void SearchHint::setMediaType(QString newMediaType) { + m_mediaType = newMediaType; + emit mediaTypeChanged(newMediaType); +} + +QDateTime SearchHint::startDate() const { return m_startDate; } +void SearchHint::setStartDate(QDateTime newStartDate) { + m_startDate = newStartDate; + emit startDateChanged(newStartDate); +} + +QDateTime SearchHint::endDate() const { return m_endDate; } +void SearchHint::setEndDate(QDateTime newEndDate) { + m_endDate = newEndDate; + emit endDateChanged(newEndDate); +} + +QString SearchHint::series() const { return m_series; } +void SearchHint::setSeries(QString newSeries) { + m_series = newSeries; + emit seriesChanged(newSeries); +} + +QString SearchHint::status() const { return m_status; } +void SearchHint::setStatus(QString newStatus) { + m_status = newStatus; + emit statusChanged(newStatus); +} + +QString SearchHint::album() const { return m_album; } +void SearchHint::setAlbum(QString newAlbum) { + m_album = newAlbum; + emit albumChanged(newAlbum); +} + +QString SearchHint::albumId() const { return m_albumId; } +void SearchHint::setAlbumId(QString newAlbumId) { + m_albumId = newAlbumId; + emit albumIdChanged(newAlbumId); +} + +QString SearchHint::albumArtist() const { return m_albumArtist; } +void SearchHint::setAlbumArtist(QString newAlbumArtist) { + m_albumArtist = newAlbumArtist; + emit albumArtistChanged(newAlbumArtist); +} + +QStringList SearchHint::artists() const { return m_artists; } +void SearchHint::setArtists(QStringList newArtists) { + m_artists = newArtists; + emit artistsChanged(newArtists); +} + +qint32 SearchHint::songCount() const { return m_songCount; } +void SearchHint::setSongCount(qint32 newSongCount) { + m_songCount = newSongCount; + emit songCountChanged(newSongCount); +} + +qint32 SearchHint::episodeCount() const { return m_episodeCount; } +void SearchHint::setEpisodeCount(qint32 newEpisodeCount) { + m_episodeCount = newEpisodeCount; + emit episodeCountChanged(newEpisodeCount); +} + +QString SearchHint::channelId() const { return m_channelId; } +void SearchHint::setChannelId(QString newChannelId) { + m_channelId = newChannelId; + emit channelIdChanged(newChannelId); +} + +QString SearchHint::channelName() const { return m_channelName; } +void SearchHint::setChannelName(QString newChannelName) { + m_channelName = newChannelName; + emit channelNameChanged(newChannelName); +} + +double SearchHint::primaryImageAspectRatio() const { return m_primaryImageAspectRatio; } +void SearchHint::setPrimaryImageAspectRatio(double newPrimaryImageAspectRatio) { + m_primaryImageAspectRatio = newPrimaryImageAspectRatio; + emit primaryImageAspectRatioChanged(newPrimaryImageAspectRatio); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/searchhintresult.cpp b/core/src/DTO/searchhintresult.cpp new file mode 100644 index 0000000..20704ae --- /dev/null +++ b/core/src/DTO/searchhintresult.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SearchHintResult::SearchHintResult(QObject *parent) : QObject(parent) {} + +SearchHintResult *SearchHintResult::fromJSON(QJsonObject source, QObject *parent) { + SearchHintResult *instance = new SearchHintResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void SearchHintResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SearchHintResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList SearchHintResult::searchHints() const { return m_searchHints; } +void SearchHintResult::setSearchHints(QList newSearchHints) { + m_searchHints = newSearchHints; + emit searchHintsChanged(newSearchHints); +} + +qint32 SearchHintResult::totalRecordCount() const { return m_totalRecordCount; } +void SearchHintResult::setTotalRecordCount(qint32 newTotalRecordCount) { + m_totalRecordCount = newTotalRecordCount; + emit totalRecordCountChanged(newTotalRecordCount); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/seekrequestdto.cpp b/core/src/DTO/seekrequestdto.cpp new file mode 100644 index 0000000..9a61353 --- /dev/null +++ b/core/src/DTO/seekrequestdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SeekRequestDto::SeekRequestDto(QObject *parent) : QObject(parent) {} + +SeekRequestDto *SeekRequestDto::fromJSON(QJsonObject source, QObject *parent) { + SeekRequestDto *instance = new SeekRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void SeekRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SeekRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint64 SeekRequestDto::positionTicks() const { return m_positionTicks; } +void SeekRequestDto::setPositionTicks(qint64 newPositionTicks) { + m_positionTicks = newPositionTicks; + emit positionTicksChanged(newPositionTicks); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/sendcommand.cpp b/core/src/DTO/sendcommand.cpp new file mode 100644 index 0000000..fb7a981 --- /dev/null +++ b/core/src/DTO/sendcommand.cpp @@ -0,0 +1,91 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +SendCommand::SendCommand(QObject *parent) : QObject(parent) {} + +SendCommand *SendCommand::fromJSON(QJsonObject source, QObject *parent) { + SendCommand *instance = new SendCommand(parent); + instance->updateFromJSON(source); + return instance; +} + +void SendCommand::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SendCommand::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SendCommand::groupId() const { return m_groupId; } +void SendCommand::setGroupId(QString newGroupId) { + m_groupId = newGroupId; + emit groupIdChanged(newGroupId); +} + +QString SendCommand::playlistItemId() const { return m_playlistItemId; } +void SendCommand::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + +QDateTime SendCommand::when() const { return m_when; } +void SendCommand::setWhen(QDateTime newWhen) { + m_when = newWhen; + emit whenChanged(newWhen); +} + +qint64 SendCommand::positionTicks() const { return m_positionTicks; } +void SendCommand::setPositionTicks(qint64 newPositionTicks) { + m_positionTicks = newPositionTicks; + emit positionTicksChanged(newPositionTicks); +} + +SendCommandType SendCommand::command() const { return m_command; } +void SendCommand::setCommand(SendCommandType newCommand) { + m_command = newCommand; + emit commandChanged(newCommand); +} + +QDateTime SendCommand::emittedAt() const { return m_emittedAt; } +void SendCommand::setEmittedAt(QDateTime newEmittedAt) { + m_emittedAt = newEmittedAt; + emit emittedAtChanged(newEmittedAt); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/sendcommandtype.cpp b/core/src/DTO/sendcommandtype.cpp new file mode 100644 index 0000000..38d62ba --- /dev/null +++ b/core/src/DTO/sendcommandtype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SendCommandTypeClass::SendCommandTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/seriesinfo.cpp b/core/src/DTO/seriesinfo.cpp new file mode 100644 index 0000000..17dbca8 --- /dev/null +++ b/core/src/DTO/seriesinfo.cpp @@ -0,0 +1,113 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SeriesInfo::SeriesInfo(QObject *parent) : QObject(parent) {} + +SeriesInfo *SeriesInfo::fromJSON(QJsonObject source, QObject *parent) { + SeriesInfo *instance = new SeriesInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void SeriesInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SeriesInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SeriesInfo::name() const { return m_name; } +void SeriesInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString SeriesInfo::path() const { return m_path; } +void SeriesInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString SeriesInfo::metadataLanguage() const { return m_metadataLanguage; } +void SeriesInfo::setMetadataLanguage(QString newMetadataLanguage) { + m_metadataLanguage = newMetadataLanguage; + emit metadataLanguageChanged(newMetadataLanguage); +} + +QString SeriesInfo::metadataCountryCode() const { return m_metadataCountryCode; } +void SeriesInfo::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QJsonObject SeriesInfo::providerIds() const { return m_providerIds; } +void SeriesInfo::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 SeriesInfo::year() const { return m_year; } +void SeriesInfo::setYear(qint32 newYear) { + m_year = newYear; + emit yearChanged(newYear); +} + +qint32 SeriesInfo::indexNumber() const { return m_indexNumber; } +void SeriesInfo::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 SeriesInfo::parentIndexNumber() const { return m_parentIndexNumber; } +void SeriesInfo::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime SeriesInfo::premiereDate() const { return m_premiereDate; } +void SeriesInfo::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +bool SeriesInfo::isAutomated() const { return m_isAutomated; } +void SeriesInfo::setIsAutomated(bool newIsAutomated) { + m_isAutomated = newIsAutomated; + emit isAutomatedChanged(newIsAutomated); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/seriesinforemotesearchquery.cpp b/core/src/DTO/seriesinforemotesearchquery.cpp new file mode 100644 index 0000000..8f4e74f --- /dev/null +++ b/core/src/DTO/seriesinforemotesearchquery.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SeriesInfoRemoteSearchQuery::SeriesInfoRemoteSearchQuery(QObject *parent) : QObject(parent) {} + +SeriesInfoRemoteSearchQuery *SeriesInfoRemoteSearchQuery::fromJSON(QJsonObject source, QObject *parent) { + SeriesInfoRemoteSearchQuery *instance = new SeriesInfoRemoteSearchQuery(parent); + instance->updateFromJSON(source); + return instance; +} + +void SeriesInfoRemoteSearchQuery::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SeriesInfoRemoteSearchQuery::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +SeriesInfo * SeriesInfoRemoteSearchQuery::searchInfo() const { return m_searchInfo; } +void SeriesInfoRemoteSearchQuery::setSearchInfo(SeriesInfo * newSearchInfo) { + m_searchInfo = newSearchInfo; + emit searchInfoChanged(newSearchInfo); +} + +QString SeriesInfoRemoteSearchQuery::itemId() const { return m_itemId; } +void SeriesInfoRemoteSearchQuery::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString SeriesInfoRemoteSearchQuery::searchProviderName() const { return m_searchProviderName; } +void SeriesInfoRemoteSearchQuery::setSearchProviderName(QString newSearchProviderName) { + m_searchProviderName = newSearchProviderName; + emit searchProviderNameChanged(newSearchProviderName); +} + +bool SeriesInfoRemoteSearchQuery::includeDisabledProviders() const { return m_includeDisabledProviders; } +void SeriesInfoRemoteSearchQuery::setIncludeDisabledProviders(bool newIncludeDisabledProviders) { + m_includeDisabledProviders = newIncludeDisabledProviders; + emit includeDisabledProvidersChanged(newIncludeDisabledProviders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/seriesstatus.cpp b/core/src/DTO/seriesstatus.cpp new file mode 100644 index 0000000..5b4d870 --- /dev/null +++ b/core/src/DTO/seriesstatus.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SeriesStatusClass::SeriesStatusClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/seriestimerinfodto.cpp b/core/src/DTO/seriestimerinfodto.cpp new file mode 100644 index 0000000..3b259a1 --- /dev/null +++ b/core/src/DTO/seriestimerinfodto.cpp @@ -0,0 +1,267 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +SeriesTimerInfoDto::SeriesTimerInfoDto(QObject *parent) : QObject(parent) {} + +SeriesTimerInfoDto *SeriesTimerInfoDto::fromJSON(QJsonObject source, QObject *parent) { + SeriesTimerInfoDto *instance = new SeriesTimerInfoDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void SeriesTimerInfoDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SeriesTimerInfoDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SeriesTimerInfoDto::jellyfinId() const { return m_jellyfinId; } +void SeriesTimerInfoDto::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString SeriesTimerInfoDto::type() const { return m_type; } +void SeriesTimerInfoDto::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString SeriesTimerInfoDto::serverId() const { return m_serverId; } +void SeriesTimerInfoDto::setServerId(QString newServerId) { + m_serverId = newServerId; + emit serverIdChanged(newServerId); +} + +QString SeriesTimerInfoDto::externalId() const { return m_externalId; } +void SeriesTimerInfoDto::setExternalId(QString newExternalId) { + m_externalId = newExternalId; + emit externalIdChanged(newExternalId); +} + +QString SeriesTimerInfoDto::channelId() const { return m_channelId; } +void SeriesTimerInfoDto::setChannelId(QString newChannelId) { + m_channelId = newChannelId; + emit channelIdChanged(newChannelId); +} + +QString SeriesTimerInfoDto::externalChannelId() const { return m_externalChannelId; } +void SeriesTimerInfoDto::setExternalChannelId(QString newExternalChannelId) { + m_externalChannelId = newExternalChannelId; + emit externalChannelIdChanged(newExternalChannelId); +} + +QString SeriesTimerInfoDto::channelName() const { return m_channelName; } +void SeriesTimerInfoDto::setChannelName(QString newChannelName) { + m_channelName = newChannelName; + emit channelNameChanged(newChannelName); +} + +QString SeriesTimerInfoDto::channelPrimaryImageTag() const { return m_channelPrimaryImageTag; } +void SeriesTimerInfoDto::setChannelPrimaryImageTag(QString newChannelPrimaryImageTag) { + m_channelPrimaryImageTag = newChannelPrimaryImageTag; + emit channelPrimaryImageTagChanged(newChannelPrimaryImageTag); +} + +QString SeriesTimerInfoDto::programId() const { return m_programId; } +void SeriesTimerInfoDto::setProgramId(QString newProgramId) { + m_programId = newProgramId; + emit programIdChanged(newProgramId); +} + +QString SeriesTimerInfoDto::externalProgramId() const { return m_externalProgramId; } +void SeriesTimerInfoDto::setExternalProgramId(QString newExternalProgramId) { + m_externalProgramId = newExternalProgramId; + emit externalProgramIdChanged(newExternalProgramId); +} + +QString SeriesTimerInfoDto::name() const { return m_name; } +void SeriesTimerInfoDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString SeriesTimerInfoDto::overview() const { return m_overview; } +void SeriesTimerInfoDto::setOverview(QString newOverview) { + m_overview = newOverview; + emit overviewChanged(newOverview); +} + +QDateTime SeriesTimerInfoDto::startDate() const { return m_startDate; } +void SeriesTimerInfoDto::setStartDate(QDateTime newStartDate) { + m_startDate = newStartDate; + emit startDateChanged(newStartDate); +} + +QDateTime SeriesTimerInfoDto::endDate() const { return m_endDate; } +void SeriesTimerInfoDto::setEndDate(QDateTime newEndDate) { + m_endDate = newEndDate; + emit endDateChanged(newEndDate); +} + +QString SeriesTimerInfoDto::serviceName() const { return m_serviceName; } +void SeriesTimerInfoDto::setServiceName(QString newServiceName) { + m_serviceName = newServiceName; + emit serviceNameChanged(newServiceName); +} + +qint32 SeriesTimerInfoDto::priority() const { return m_priority; } +void SeriesTimerInfoDto::setPriority(qint32 newPriority) { + m_priority = newPriority; + emit priorityChanged(newPriority); +} + +qint32 SeriesTimerInfoDto::prePaddingSeconds() const { return m_prePaddingSeconds; } +void SeriesTimerInfoDto::setPrePaddingSeconds(qint32 newPrePaddingSeconds) { + m_prePaddingSeconds = newPrePaddingSeconds; + emit prePaddingSecondsChanged(newPrePaddingSeconds); +} + +qint32 SeriesTimerInfoDto::postPaddingSeconds() const { return m_postPaddingSeconds; } +void SeriesTimerInfoDto::setPostPaddingSeconds(qint32 newPostPaddingSeconds) { + m_postPaddingSeconds = newPostPaddingSeconds; + emit postPaddingSecondsChanged(newPostPaddingSeconds); +} + +bool SeriesTimerInfoDto::isPrePaddingRequired() const { return m_isPrePaddingRequired; } +void SeriesTimerInfoDto::setIsPrePaddingRequired(bool newIsPrePaddingRequired) { + m_isPrePaddingRequired = newIsPrePaddingRequired; + emit isPrePaddingRequiredChanged(newIsPrePaddingRequired); +} + +QString SeriesTimerInfoDto::parentBackdropItemId() const { return m_parentBackdropItemId; } +void SeriesTimerInfoDto::setParentBackdropItemId(QString newParentBackdropItemId) { + m_parentBackdropItemId = newParentBackdropItemId; + emit parentBackdropItemIdChanged(newParentBackdropItemId); +} + +QStringList SeriesTimerInfoDto::parentBackdropImageTags() const { return m_parentBackdropImageTags; } +void SeriesTimerInfoDto::setParentBackdropImageTags(QStringList newParentBackdropImageTags) { + m_parentBackdropImageTags = newParentBackdropImageTags; + emit parentBackdropImageTagsChanged(newParentBackdropImageTags); +} + +bool SeriesTimerInfoDto::isPostPaddingRequired() const { return m_isPostPaddingRequired; } +void SeriesTimerInfoDto::setIsPostPaddingRequired(bool newIsPostPaddingRequired) { + m_isPostPaddingRequired = newIsPostPaddingRequired; + emit isPostPaddingRequiredChanged(newIsPostPaddingRequired); +} + +KeepUntil SeriesTimerInfoDto::keepUntil() const { return m_keepUntil; } +void SeriesTimerInfoDto::setKeepUntil(KeepUntil newKeepUntil) { + m_keepUntil = newKeepUntil; + emit keepUntilChanged(newKeepUntil); +} + +bool SeriesTimerInfoDto::recordAnyTime() const { return m_recordAnyTime; } +void SeriesTimerInfoDto::setRecordAnyTime(bool newRecordAnyTime) { + m_recordAnyTime = newRecordAnyTime; + emit recordAnyTimeChanged(newRecordAnyTime); +} + +bool SeriesTimerInfoDto::skipEpisodesInLibrary() const { return m_skipEpisodesInLibrary; } +void SeriesTimerInfoDto::setSkipEpisodesInLibrary(bool newSkipEpisodesInLibrary) { + m_skipEpisodesInLibrary = newSkipEpisodesInLibrary; + emit skipEpisodesInLibraryChanged(newSkipEpisodesInLibrary); +} + +bool SeriesTimerInfoDto::recordAnyChannel() const { return m_recordAnyChannel; } +void SeriesTimerInfoDto::setRecordAnyChannel(bool newRecordAnyChannel) { + m_recordAnyChannel = newRecordAnyChannel; + emit recordAnyChannelChanged(newRecordAnyChannel); +} + +qint32 SeriesTimerInfoDto::keepUpTo() const { return m_keepUpTo; } +void SeriesTimerInfoDto::setKeepUpTo(qint32 newKeepUpTo) { + m_keepUpTo = newKeepUpTo; + emit keepUpToChanged(newKeepUpTo); +} + +bool SeriesTimerInfoDto::recordNewOnly() const { return m_recordNewOnly; } +void SeriesTimerInfoDto::setRecordNewOnly(bool newRecordNewOnly) { + m_recordNewOnly = newRecordNewOnly; + emit recordNewOnlyChanged(newRecordNewOnly); +} + +QList SeriesTimerInfoDto::days() const { return m_days; } +void SeriesTimerInfoDto::setDays(QList newDays) { + m_days = newDays; + emit daysChanged(newDays); +} + +DayPattern SeriesTimerInfoDto::dayPattern() const { return m_dayPattern; } +void SeriesTimerInfoDto::setDayPattern(DayPattern newDayPattern) { + m_dayPattern = newDayPattern; + emit dayPatternChanged(newDayPattern); +} + +QJsonObject SeriesTimerInfoDto::imageTags() const { return m_imageTags; } +void SeriesTimerInfoDto::setImageTags(QJsonObject newImageTags) { + m_imageTags = newImageTags; + emit imageTagsChanged(newImageTags); +} + +QString SeriesTimerInfoDto::parentThumbItemId() const { return m_parentThumbItemId; } +void SeriesTimerInfoDto::setParentThumbItemId(QString newParentThumbItemId) { + m_parentThumbItemId = newParentThumbItemId; + emit parentThumbItemIdChanged(newParentThumbItemId); +} + +QString SeriesTimerInfoDto::parentThumbImageTag() const { return m_parentThumbImageTag; } +void SeriesTimerInfoDto::setParentThumbImageTag(QString newParentThumbImageTag) { + m_parentThumbImageTag = newParentThumbImageTag; + emit parentThumbImageTagChanged(newParentThumbImageTag); +} + +QString SeriesTimerInfoDto::parentPrimaryImageItemId() const { return m_parentPrimaryImageItemId; } +void SeriesTimerInfoDto::setParentPrimaryImageItemId(QString newParentPrimaryImageItemId) { + m_parentPrimaryImageItemId = newParentPrimaryImageItemId; + emit parentPrimaryImageItemIdChanged(newParentPrimaryImageItemId); +} + +QString SeriesTimerInfoDto::parentPrimaryImageTag() const { return m_parentPrimaryImageTag; } +void SeriesTimerInfoDto::setParentPrimaryImageTag(QString newParentPrimaryImageTag) { + m_parentPrimaryImageTag = newParentPrimaryImageTag; + emit parentPrimaryImageTagChanged(newParentPrimaryImageTag); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/seriestimerinfodtoqueryresult.cpp b/core/src/DTO/seriestimerinfodtoqueryresult.cpp new file mode 100644 index 0000000..a9d8388 --- /dev/null +++ b/core/src/DTO/seriestimerinfodtoqueryresult.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SeriesTimerInfoDtoQueryResult::SeriesTimerInfoDtoQueryResult(QObject *parent) : QObject(parent) {} + +SeriesTimerInfoDtoQueryResult *SeriesTimerInfoDtoQueryResult::fromJSON(QJsonObject source, QObject *parent) { + SeriesTimerInfoDtoQueryResult *instance = new SeriesTimerInfoDtoQueryResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void SeriesTimerInfoDtoQueryResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SeriesTimerInfoDtoQueryResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList SeriesTimerInfoDtoQueryResult::items() const { return m_items; } +void SeriesTimerInfoDtoQueryResult::setItems(QList newItems) { + m_items = newItems; + emit itemsChanged(newItems); +} + +qint32 SeriesTimerInfoDtoQueryResult::totalRecordCount() const { return m_totalRecordCount; } +void SeriesTimerInfoDtoQueryResult::setTotalRecordCount(qint32 newTotalRecordCount) { + m_totalRecordCount = newTotalRecordCount; + emit totalRecordCountChanged(newTotalRecordCount); +} + +qint32 SeriesTimerInfoDtoQueryResult::startIndex() const { return m_startIndex; } +void SeriesTimerInfoDtoQueryResult::setStartIndex(qint32 newStartIndex) { + m_startIndex = newStartIndex; + emit startIndexChanged(newStartIndex); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/serverconfiguration.cpp b/core/src/DTO/serverconfiguration.cpp new file mode 100644 index 0000000..621d0a7 --- /dev/null +++ b/core/src/DTO/serverconfiguration.cpp @@ -0,0 +1,565 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +ServerConfiguration::ServerConfiguration(QObject *parent) : QObject(parent) {} + +ServerConfiguration *ServerConfiguration::fromJSON(QJsonObject source, QObject *parent) { + ServerConfiguration *instance = new ServerConfiguration(parent); + instance->updateFromJSON(source); + return instance; +} + +void ServerConfiguration::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ServerConfiguration::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint32 ServerConfiguration::logFileRetentionDays() const { return m_logFileRetentionDays; } +void ServerConfiguration::setLogFileRetentionDays(qint32 newLogFileRetentionDays) { + m_logFileRetentionDays = newLogFileRetentionDays; + emit logFileRetentionDaysChanged(newLogFileRetentionDays); +} + +bool ServerConfiguration::isStartupWizardCompleted() const { return m_isStartupWizardCompleted; } +void ServerConfiguration::setIsStartupWizardCompleted(bool newIsStartupWizardCompleted) { + m_isStartupWizardCompleted = newIsStartupWizardCompleted; + emit isStartupWizardCompletedChanged(newIsStartupWizardCompleted); +} + +QString ServerConfiguration::cachePath() const { return m_cachePath; } +void ServerConfiguration::setCachePath(QString newCachePath) { + m_cachePath = newCachePath; + emit cachePathChanged(newCachePath); +} + +Version * ServerConfiguration::previousVersion() const { return m_previousVersion; } +void ServerConfiguration::setPreviousVersion(Version * newPreviousVersion) { + m_previousVersion = newPreviousVersion; + emit previousVersionChanged(newPreviousVersion); +} + +QString ServerConfiguration::previousVersionStr() const { return m_previousVersionStr; } +void ServerConfiguration::setPreviousVersionStr(QString newPreviousVersionStr) { + m_previousVersionStr = newPreviousVersionStr; + emit previousVersionStrChanged(newPreviousVersionStr); +} + +bool ServerConfiguration::enableUPnP() const { return m_enableUPnP; } +void ServerConfiguration::setEnableUPnP(bool newEnableUPnP) { + m_enableUPnP = newEnableUPnP; + emit enableUPnPChanged(newEnableUPnP); +} + +bool ServerConfiguration::enableMetrics() const { return m_enableMetrics; } +void ServerConfiguration::setEnableMetrics(bool newEnableMetrics) { + m_enableMetrics = newEnableMetrics; + emit enableMetricsChanged(newEnableMetrics); +} + +qint32 ServerConfiguration::publicPort() const { return m_publicPort; } +void ServerConfiguration::setPublicPort(qint32 newPublicPort) { + m_publicPort = newPublicPort; + emit publicPortChanged(newPublicPort); +} + +bool ServerConfiguration::uPnPCreateHttpPortMap() const { return m_uPnPCreateHttpPortMap; } +void ServerConfiguration::setUPnPCreateHttpPortMap(bool newUPnPCreateHttpPortMap) { + m_uPnPCreateHttpPortMap = newUPnPCreateHttpPortMap; + emit uPnPCreateHttpPortMapChanged(newUPnPCreateHttpPortMap); +} + +QString ServerConfiguration::uDPPortRange() const { return m_uDPPortRange; } +void ServerConfiguration::setUDPPortRange(QString newUDPPortRange) { + m_uDPPortRange = newUDPPortRange; + emit uDPPortRangeChanged(newUDPPortRange); +} + +bool ServerConfiguration::enableIPV6() const { return m_enableIPV6; } +void ServerConfiguration::setEnableIPV6(bool newEnableIPV6) { + m_enableIPV6 = newEnableIPV6; + emit enableIPV6Changed(newEnableIPV6); +} + +bool ServerConfiguration::enableIPV4() const { return m_enableIPV4; } +void ServerConfiguration::setEnableIPV4(bool newEnableIPV4) { + m_enableIPV4 = newEnableIPV4; + emit enableIPV4Changed(newEnableIPV4); +} + +bool ServerConfiguration::enableSSDPTracing() const { return m_enableSSDPTracing; } +void ServerConfiguration::setEnableSSDPTracing(bool newEnableSSDPTracing) { + m_enableSSDPTracing = newEnableSSDPTracing; + emit enableSSDPTracingChanged(newEnableSSDPTracing); +} + +QString ServerConfiguration::sSDPTracingFilter() const { return m_sSDPTracingFilter; } +void ServerConfiguration::setSSDPTracingFilter(QString newSSDPTracingFilter) { + m_sSDPTracingFilter = newSSDPTracingFilter; + emit sSDPTracingFilterChanged(newSSDPTracingFilter); +} + +qint32 ServerConfiguration::uDPSendCount() const { return m_uDPSendCount; } +void ServerConfiguration::setUDPSendCount(qint32 newUDPSendCount) { + m_uDPSendCount = newUDPSendCount; + emit uDPSendCountChanged(newUDPSendCount); +} + +qint32 ServerConfiguration::uDPSendDelay() const { return m_uDPSendDelay; } +void ServerConfiguration::setUDPSendDelay(qint32 newUDPSendDelay) { + m_uDPSendDelay = newUDPSendDelay; + emit uDPSendDelayChanged(newUDPSendDelay); +} + +bool ServerConfiguration::ignoreVirtualInterfaces() const { return m_ignoreVirtualInterfaces; } +void ServerConfiguration::setIgnoreVirtualInterfaces(bool newIgnoreVirtualInterfaces) { + m_ignoreVirtualInterfaces = newIgnoreVirtualInterfaces; + emit ignoreVirtualInterfacesChanged(newIgnoreVirtualInterfaces); +} + +QString ServerConfiguration::virtualInterfaceNames() const { return m_virtualInterfaceNames; } +void ServerConfiguration::setVirtualInterfaceNames(QString newVirtualInterfaceNames) { + m_virtualInterfaceNames = newVirtualInterfaceNames; + emit virtualInterfaceNamesChanged(newVirtualInterfaceNames); +} + +qint32 ServerConfiguration::gatewayMonitorPeriod() const { return m_gatewayMonitorPeriod; } +void ServerConfiguration::setGatewayMonitorPeriod(qint32 newGatewayMonitorPeriod) { + m_gatewayMonitorPeriod = newGatewayMonitorPeriod; + emit gatewayMonitorPeriodChanged(newGatewayMonitorPeriod); +} + +bool ServerConfiguration::enableMultiSocketBinding() const { return m_enableMultiSocketBinding; } +void ServerConfiguration::setEnableMultiSocketBinding(bool newEnableMultiSocketBinding) { + m_enableMultiSocketBinding = newEnableMultiSocketBinding; + emit enableMultiSocketBindingChanged(newEnableMultiSocketBinding); +} + +bool ServerConfiguration::trustAllIP6Interfaces() const { return m_trustAllIP6Interfaces; } +void ServerConfiguration::setTrustAllIP6Interfaces(bool newTrustAllIP6Interfaces) { + m_trustAllIP6Interfaces = newTrustAllIP6Interfaces; + emit trustAllIP6InterfacesChanged(newTrustAllIP6Interfaces); +} + +QString ServerConfiguration::hDHomerunPortRange() const { return m_hDHomerunPortRange; } +void ServerConfiguration::setHDHomerunPortRange(QString newHDHomerunPortRange) { + m_hDHomerunPortRange = newHDHomerunPortRange; + emit hDHomerunPortRangeChanged(newHDHomerunPortRange); +} + +QStringList ServerConfiguration::publishedServerUriBySubnet() const { return m_publishedServerUriBySubnet; } +void ServerConfiguration::setPublishedServerUriBySubnet(QStringList newPublishedServerUriBySubnet) { + m_publishedServerUriBySubnet = newPublishedServerUriBySubnet; + emit publishedServerUriBySubnetChanged(newPublishedServerUriBySubnet); +} + +bool ServerConfiguration::autoDiscoveryTracing() const { return m_autoDiscoveryTracing; } +void ServerConfiguration::setAutoDiscoveryTracing(bool newAutoDiscoveryTracing) { + m_autoDiscoveryTracing = newAutoDiscoveryTracing; + emit autoDiscoveryTracingChanged(newAutoDiscoveryTracing); +} + +bool ServerConfiguration::autoDiscovery() const { return m_autoDiscovery; } +void ServerConfiguration::setAutoDiscovery(bool newAutoDiscovery) { + m_autoDiscovery = newAutoDiscovery; + emit autoDiscoveryChanged(newAutoDiscovery); +} + +qint32 ServerConfiguration::publicHttpsPort() const { return m_publicHttpsPort; } +void ServerConfiguration::setPublicHttpsPort(qint32 newPublicHttpsPort) { + m_publicHttpsPort = newPublicHttpsPort; + emit publicHttpsPortChanged(newPublicHttpsPort); +} + +qint32 ServerConfiguration::httpServerPortNumber() const { return m_httpServerPortNumber; } +void ServerConfiguration::setHttpServerPortNumber(qint32 newHttpServerPortNumber) { + m_httpServerPortNumber = newHttpServerPortNumber; + emit httpServerPortNumberChanged(newHttpServerPortNumber); +} + +qint32 ServerConfiguration::httpsPortNumber() const { return m_httpsPortNumber; } +void ServerConfiguration::setHttpsPortNumber(qint32 newHttpsPortNumber) { + m_httpsPortNumber = newHttpsPortNumber; + emit httpsPortNumberChanged(newHttpsPortNumber); +} + +bool ServerConfiguration::enableHttps() const { return m_enableHttps; } +void ServerConfiguration::setEnableHttps(bool newEnableHttps) { + m_enableHttps = newEnableHttps; + emit enableHttpsChanged(newEnableHttps); +} + +bool ServerConfiguration::enableNormalizedItemByNameIds() const { return m_enableNormalizedItemByNameIds; } +void ServerConfiguration::setEnableNormalizedItemByNameIds(bool newEnableNormalizedItemByNameIds) { + m_enableNormalizedItemByNameIds = newEnableNormalizedItemByNameIds; + emit enableNormalizedItemByNameIdsChanged(newEnableNormalizedItemByNameIds); +} + +QString ServerConfiguration::certificatePath() const { return m_certificatePath; } +void ServerConfiguration::setCertificatePath(QString newCertificatePath) { + m_certificatePath = newCertificatePath; + emit certificatePathChanged(newCertificatePath); +} + +QString ServerConfiguration::certificatePassword() const { return m_certificatePassword; } +void ServerConfiguration::setCertificatePassword(QString newCertificatePassword) { + m_certificatePassword = newCertificatePassword; + emit certificatePasswordChanged(newCertificatePassword); +} + +bool ServerConfiguration::isPortAuthorized() const { return m_isPortAuthorized; } +void ServerConfiguration::setIsPortAuthorized(bool newIsPortAuthorized) { + m_isPortAuthorized = newIsPortAuthorized; + emit isPortAuthorizedChanged(newIsPortAuthorized); +} + +bool ServerConfiguration::quickConnectAvailable() const { return m_quickConnectAvailable; } +void ServerConfiguration::setQuickConnectAvailable(bool newQuickConnectAvailable) { + m_quickConnectAvailable = newQuickConnectAvailable; + emit quickConnectAvailableChanged(newQuickConnectAvailable); +} + +bool ServerConfiguration::enableRemoteAccess() const { return m_enableRemoteAccess; } +void ServerConfiguration::setEnableRemoteAccess(bool newEnableRemoteAccess) { + m_enableRemoteAccess = newEnableRemoteAccess; + emit enableRemoteAccessChanged(newEnableRemoteAccess); +} + +bool ServerConfiguration::enableCaseSensitiveItemIds() const { return m_enableCaseSensitiveItemIds; } +void ServerConfiguration::setEnableCaseSensitiveItemIds(bool newEnableCaseSensitiveItemIds) { + m_enableCaseSensitiveItemIds = newEnableCaseSensitiveItemIds; + emit enableCaseSensitiveItemIdsChanged(newEnableCaseSensitiveItemIds); +} + +bool ServerConfiguration::disableLiveTvChannelUserDataName() const { return m_disableLiveTvChannelUserDataName; } +void ServerConfiguration::setDisableLiveTvChannelUserDataName(bool newDisableLiveTvChannelUserDataName) { + m_disableLiveTvChannelUserDataName = newDisableLiveTvChannelUserDataName; + emit disableLiveTvChannelUserDataNameChanged(newDisableLiveTvChannelUserDataName); +} + +QString ServerConfiguration::metadataPath() const { return m_metadataPath; } +void ServerConfiguration::setMetadataPath(QString newMetadataPath) { + m_metadataPath = newMetadataPath; + emit metadataPathChanged(newMetadataPath); +} + +QString ServerConfiguration::metadataNetworkPath() const { return m_metadataNetworkPath; } +void ServerConfiguration::setMetadataNetworkPath(QString newMetadataNetworkPath) { + m_metadataNetworkPath = newMetadataNetworkPath; + emit metadataNetworkPathChanged(newMetadataNetworkPath); +} + +QString ServerConfiguration::preferredMetadataLanguage() const { return m_preferredMetadataLanguage; } +void ServerConfiguration::setPreferredMetadataLanguage(QString newPreferredMetadataLanguage) { + m_preferredMetadataLanguage = newPreferredMetadataLanguage; + emit preferredMetadataLanguageChanged(newPreferredMetadataLanguage); +} + +QString ServerConfiguration::metadataCountryCode() const { return m_metadataCountryCode; } +void ServerConfiguration::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QStringList ServerConfiguration::sortReplaceCharacters() const { return m_sortReplaceCharacters; } +void ServerConfiguration::setSortReplaceCharacters(QStringList newSortReplaceCharacters) { + m_sortReplaceCharacters = newSortReplaceCharacters; + emit sortReplaceCharactersChanged(newSortReplaceCharacters); +} + +QStringList ServerConfiguration::sortRemoveCharacters() const { return m_sortRemoveCharacters; } +void ServerConfiguration::setSortRemoveCharacters(QStringList newSortRemoveCharacters) { + m_sortRemoveCharacters = newSortRemoveCharacters; + emit sortRemoveCharactersChanged(newSortRemoveCharacters); +} + +QStringList ServerConfiguration::sortRemoveWords() const { return m_sortRemoveWords; } +void ServerConfiguration::setSortRemoveWords(QStringList newSortRemoveWords) { + m_sortRemoveWords = newSortRemoveWords; + emit sortRemoveWordsChanged(newSortRemoveWords); +} + +qint32 ServerConfiguration::minResumePct() const { return m_minResumePct; } +void ServerConfiguration::setMinResumePct(qint32 newMinResumePct) { + m_minResumePct = newMinResumePct; + emit minResumePctChanged(newMinResumePct); +} + +qint32 ServerConfiguration::maxResumePct() const { return m_maxResumePct; } +void ServerConfiguration::setMaxResumePct(qint32 newMaxResumePct) { + m_maxResumePct = newMaxResumePct; + emit maxResumePctChanged(newMaxResumePct); +} + +qint32 ServerConfiguration::minResumeDurationSeconds() const { return m_minResumeDurationSeconds; } +void ServerConfiguration::setMinResumeDurationSeconds(qint32 newMinResumeDurationSeconds) { + m_minResumeDurationSeconds = newMinResumeDurationSeconds; + emit minResumeDurationSecondsChanged(newMinResumeDurationSeconds); +} + +qint32 ServerConfiguration::minAudiobookResume() const { return m_minAudiobookResume; } +void ServerConfiguration::setMinAudiobookResume(qint32 newMinAudiobookResume) { + m_minAudiobookResume = newMinAudiobookResume; + emit minAudiobookResumeChanged(newMinAudiobookResume); +} + +qint32 ServerConfiguration::maxAudiobookResume() const { return m_maxAudiobookResume; } +void ServerConfiguration::setMaxAudiobookResume(qint32 newMaxAudiobookResume) { + m_maxAudiobookResume = newMaxAudiobookResume; + emit maxAudiobookResumeChanged(newMaxAudiobookResume); +} + +qint32 ServerConfiguration::libraryMonitorDelay() const { return m_libraryMonitorDelay; } +void ServerConfiguration::setLibraryMonitorDelay(qint32 newLibraryMonitorDelay) { + m_libraryMonitorDelay = newLibraryMonitorDelay; + emit libraryMonitorDelayChanged(newLibraryMonitorDelay); +} + +bool ServerConfiguration::enableDashboardResponseCaching() const { return m_enableDashboardResponseCaching; } +void ServerConfiguration::setEnableDashboardResponseCaching(bool newEnableDashboardResponseCaching) { + m_enableDashboardResponseCaching = newEnableDashboardResponseCaching; + emit enableDashboardResponseCachingChanged(newEnableDashboardResponseCaching); +} + +ImageSavingConvention ServerConfiguration::imageSavingConvention() const { return m_imageSavingConvention; } +void ServerConfiguration::setImageSavingConvention(ImageSavingConvention newImageSavingConvention) { + m_imageSavingConvention = newImageSavingConvention; + emit imageSavingConventionChanged(newImageSavingConvention); +} + +QList ServerConfiguration::metadataOptions() const { return m_metadataOptions; } +void ServerConfiguration::setMetadataOptions(QList newMetadataOptions) { + m_metadataOptions = newMetadataOptions; + emit metadataOptionsChanged(newMetadataOptions); +} + +bool ServerConfiguration::skipDeserializationForBasicTypes() const { return m_skipDeserializationForBasicTypes; } +void ServerConfiguration::setSkipDeserializationForBasicTypes(bool newSkipDeserializationForBasicTypes) { + m_skipDeserializationForBasicTypes = newSkipDeserializationForBasicTypes; + emit skipDeserializationForBasicTypesChanged(newSkipDeserializationForBasicTypes); +} + +QString ServerConfiguration::serverName() const { return m_serverName; } +void ServerConfiguration::setServerName(QString newServerName) { + m_serverName = newServerName; + emit serverNameChanged(newServerName); +} + +QString ServerConfiguration::baseUrl() const { return m_baseUrl; } +void ServerConfiguration::setBaseUrl(QString newBaseUrl) { + m_baseUrl = newBaseUrl; + emit baseUrlChanged(newBaseUrl); +} + +QString ServerConfiguration::uICulture() const { return m_uICulture; } +void ServerConfiguration::setUICulture(QString newUICulture) { + m_uICulture = newUICulture; + emit uICultureChanged(newUICulture); +} + +bool ServerConfiguration::saveMetadataHidden() const { return m_saveMetadataHidden; } +void ServerConfiguration::setSaveMetadataHidden(bool newSaveMetadataHidden) { + m_saveMetadataHidden = newSaveMetadataHidden; + emit saveMetadataHiddenChanged(newSaveMetadataHidden); +} + +QList ServerConfiguration::contentTypes() const { return m_contentTypes; } +void ServerConfiguration::setContentTypes(QList newContentTypes) { + m_contentTypes = newContentTypes; + emit contentTypesChanged(newContentTypes); +} + +qint32 ServerConfiguration::remoteClientBitrateLimit() const { return m_remoteClientBitrateLimit; } +void ServerConfiguration::setRemoteClientBitrateLimit(qint32 newRemoteClientBitrateLimit) { + m_remoteClientBitrateLimit = newRemoteClientBitrateLimit; + emit remoteClientBitrateLimitChanged(newRemoteClientBitrateLimit); +} + +bool ServerConfiguration::enableFolderView() const { return m_enableFolderView; } +void ServerConfiguration::setEnableFolderView(bool newEnableFolderView) { + m_enableFolderView = newEnableFolderView; + emit enableFolderViewChanged(newEnableFolderView); +} + +bool ServerConfiguration::enableGroupingIntoCollections() const { return m_enableGroupingIntoCollections; } +void ServerConfiguration::setEnableGroupingIntoCollections(bool newEnableGroupingIntoCollections) { + m_enableGroupingIntoCollections = newEnableGroupingIntoCollections; + emit enableGroupingIntoCollectionsChanged(newEnableGroupingIntoCollections); +} + +bool ServerConfiguration::displaySpecialsWithinSeasons() const { return m_displaySpecialsWithinSeasons; } +void ServerConfiguration::setDisplaySpecialsWithinSeasons(bool newDisplaySpecialsWithinSeasons) { + m_displaySpecialsWithinSeasons = newDisplaySpecialsWithinSeasons; + emit displaySpecialsWithinSeasonsChanged(newDisplaySpecialsWithinSeasons); +} + +QStringList ServerConfiguration::localNetworkSubnets() const { return m_localNetworkSubnets; } +void ServerConfiguration::setLocalNetworkSubnets(QStringList newLocalNetworkSubnets) { + m_localNetworkSubnets = newLocalNetworkSubnets; + emit localNetworkSubnetsChanged(newLocalNetworkSubnets); +} + +QStringList ServerConfiguration::localNetworkAddresses() const { return m_localNetworkAddresses; } +void ServerConfiguration::setLocalNetworkAddresses(QStringList newLocalNetworkAddresses) { + m_localNetworkAddresses = newLocalNetworkAddresses; + emit localNetworkAddressesChanged(newLocalNetworkAddresses); +} + +QStringList ServerConfiguration::codecsUsed() const { return m_codecsUsed; } +void ServerConfiguration::setCodecsUsed(QStringList newCodecsUsed) { + m_codecsUsed = newCodecsUsed; + emit codecsUsedChanged(newCodecsUsed); +} + +QList ServerConfiguration::pluginRepositories() const { return m_pluginRepositories; } +void ServerConfiguration::setPluginRepositories(QList newPluginRepositories) { + m_pluginRepositories = newPluginRepositories; + emit pluginRepositoriesChanged(newPluginRepositories); +} + +bool ServerConfiguration::enableExternalContentInSuggestions() const { return m_enableExternalContentInSuggestions; } +void ServerConfiguration::setEnableExternalContentInSuggestions(bool newEnableExternalContentInSuggestions) { + m_enableExternalContentInSuggestions = newEnableExternalContentInSuggestions; + emit enableExternalContentInSuggestionsChanged(newEnableExternalContentInSuggestions); +} + +bool ServerConfiguration::requireHttps() const { return m_requireHttps; } +void ServerConfiguration::setRequireHttps(bool newRequireHttps) { + m_requireHttps = newRequireHttps; + emit requireHttpsChanged(newRequireHttps); +} + +bool ServerConfiguration::enableNewOmdbSupport() const { return m_enableNewOmdbSupport; } +void ServerConfiguration::setEnableNewOmdbSupport(bool newEnableNewOmdbSupport) { + m_enableNewOmdbSupport = newEnableNewOmdbSupport; + emit enableNewOmdbSupportChanged(newEnableNewOmdbSupport); +} + +QStringList ServerConfiguration::remoteIPFilter() const { return m_remoteIPFilter; } +void ServerConfiguration::setRemoteIPFilter(QStringList newRemoteIPFilter) { + m_remoteIPFilter = newRemoteIPFilter; + emit remoteIPFilterChanged(newRemoteIPFilter); +} + +bool ServerConfiguration::isRemoteIPFilterBlacklist() const { return m_isRemoteIPFilterBlacklist; } +void ServerConfiguration::setIsRemoteIPFilterBlacklist(bool newIsRemoteIPFilterBlacklist) { + m_isRemoteIPFilterBlacklist = newIsRemoteIPFilterBlacklist; + emit isRemoteIPFilterBlacklistChanged(newIsRemoteIPFilterBlacklist); +} + +qint32 ServerConfiguration::imageExtractionTimeoutMs() const { return m_imageExtractionTimeoutMs; } +void ServerConfiguration::setImageExtractionTimeoutMs(qint32 newImageExtractionTimeoutMs) { + m_imageExtractionTimeoutMs = newImageExtractionTimeoutMs; + emit imageExtractionTimeoutMsChanged(newImageExtractionTimeoutMs); +} + +QList ServerConfiguration::pathSubstitutions() const { return m_pathSubstitutions; } +void ServerConfiguration::setPathSubstitutions(QList newPathSubstitutions) { + m_pathSubstitutions = newPathSubstitutions; + emit pathSubstitutionsChanged(newPathSubstitutions); +} + +bool ServerConfiguration::enableSimpleArtistDetection() const { return m_enableSimpleArtistDetection; } +void ServerConfiguration::setEnableSimpleArtistDetection(bool newEnableSimpleArtistDetection) { + m_enableSimpleArtistDetection = newEnableSimpleArtistDetection; + emit enableSimpleArtistDetectionChanged(newEnableSimpleArtistDetection); +} + +QStringList ServerConfiguration::uninstalledPlugins() const { return m_uninstalledPlugins; } +void ServerConfiguration::setUninstalledPlugins(QStringList newUninstalledPlugins) { + m_uninstalledPlugins = newUninstalledPlugins; + emit uninstalledPluginsChanged(newUninstalledPlugins); +} + +bool ServerConfiguration::enableSlowResponseWarning() const { return m_enableSlowResponseWarning; } +void ServerConfiguration::setEnableSlowResponseWarning(bool newEnableSlowResponseWarning) { + m_enableSlowResponseWarning = newEnableSlowResponseWarning; + emit enableSlowResponseWarningChanged(newEnableSlowResponseWarning); +} + +qint64 ServerConfiguration::slowResponseThresholdMs() const { return m_slowResponseThresholdMs; } +void ServerConfiguration::setSlowResponseThresholdMs(qint64 newSlowResponseThresholdMs) { + m_slowResponseThresholdMs = newSlowResponseThresholdMs; + emit slowResponseThresholdMsChanged(newSlowResponseThresholdMs); +} + +QStringList ServerConfiguration::corsHosts() const { return m_corsHosts; } +void ServerConfiguration::setCorsHosts(QStringList newCorsHosts) { + m_corsHosts = newCorsHosts; + emit corsHostsChanged(newCorsHosts); +} + +QStringList ServerConfiguration::knownProxies() const { return m_knownProxies; } +void ServerConfiguration::setKnownProxies(QStringList newKnownProxies) { + m_knownProxies = newKnownProxies; + emit knownProxiesChanged(newKnownProxies); +} + +qint32 ServerConfiguration::activityLogRetentionDays() const { return m_activityLogRetentionDays; } +void ServerConfiguration::setActivityLogRetentionDays(qint32 newActivityLogRetentionDays) { + m_activityLogRetentionDays = newActivityLogRetentionDays; + emit activityLogRetentionDaysChanged(newActivityLogRetentionDays); +} + +qint32 ServerConfiguration::libraryScanFanoutConcurrency() const { return m_libraryScanFanoutConcurrency; } +void ServerConfiguration::setLibraryScanFanoutConcurrency(qint32 newLibraryScanFanoutConcurrency) { + m_libraryScanFanoutConcurrency = newLibraryScanFanoutConcurrency; + emit libraryScanFanoutConcurrencyChanged(newLibraryScanFanoutConcurrency); +} + +qint32 ServerConfiguration::libraryMetadataRefreshConcurrency() const { return m_libraryMetadataRefreshConcurrency; } +void ServerConfiguration::setLibraryMetadataRefreshConcurrency(qint32 newLibraryMetadataRefreshConcurrency) { + m_libraryMetadataRefreshConcurrency = newLibraryMetadataRefreshConcurrency; + emit libraryMetadataRefreshConcurrencyChanged(newLibraryMetadataRefreshConcurrency); +} + +bool ServerConfiguration::removeOldPlugins() const { return m_removeOldPlugins; } +void ServerConfiguration::setRemoveOldPlugins(bool newRemoveOldPlugins) { + m_removeOldPlugins = newRemoveOldPlugins; + emit removeOldPluginsChanged(newRemoveOldPlugins); +} + +bool ServerConfiguration::disablePluginImages() const { return m_disablePluginImages; } +void ServerConfiguration::setDisablePluginImages(bool newDisablePluginImages) { + m_disablePluginImages = newDisablePluginImages; + emit disablePluginImagesChanged(newDisablePluginImages); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/sessioninfo.cpp b/core/src/DTO/sessioninfo.cpp new file mode 100644 index 0000000..fda4dab --- /dev/null +++ b/core/src/DTO/sessioninfo.cpp @@ -0,0 +1,223 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +SessionInfo::SessionInfo(QObject *parent) : QObject(parent) {} + +SessionInfo *SessionInfo::fromJSON(QJsonObject source, QObject *parent) { + SessionInfo *instance = new SessionInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void SessionInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SessionInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +PlayerStateInfo * SessionInfo::playState() const { return m_playState; } +void SessionInfo::setPlayState(PlayerStateInfo * newPlayState) { + m_playState = newPlayState; + emit playStateChanged(newPlayState); +} + +QList SessionInfo::additionalUsers() const { return m_additionalUsers; } +void SessionInfo::setAdditionalUsers(QList newAdditionalUsers) { + m_additionalUsers = newAdditionalUsers; + emit additionalUsersChanged(newAdditionalUsers); +} + +ClientCapabilities * SessionInfo::capabilities() const { return m_capabilities; } +void SessionInfo::setCapabilities(ClientCapabilities * newCapabilities) { + m_capabilities = newCapabilities; + emit capabilitiesChanged(newCapabilities); +} + +QString SessionInfo::remoteEndPoint() const { return m_remoteEndPoint; } +void SessionInfo::setRemoteEndPoint(QString newRemoteEndPoint) { + m_remoteEndPoint = newRemoteEndPoint; + emit remoteEndPointChanged(newRemoteEndPoint); +} + +QStringList SessionInfo::playableMediaTypes() const { return m_playableMediaTypes; } +void SessionInfo::setPlayableMediaTypes(QStringList newPlayableMediaTypes) { + m_playableMediaTypes = newPlayableMediaTypes; + emit playableMediaTypesChanged(newPlayableMediaTypes); +} + +QString SessionInfo::jellyfinId() const { return m_jellyfinId; } +void SessionInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString SessionInfo::userId() const { return m_userId; } +void SessionInfo::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +QString SessionInfo::userName() const { return m_userName; } +void SessionInfo::setUserName(QString newUserName) { + m_userName = newUserName; + emit userNameChanged(newUserName); +} + +QString SessionInfo::client() const { return m_client; } +void SessionInfo::setClient(QString newClient) { + m_client = newClient; + emit clientChanged(newClient); +} + +QDateTime SessionInfo::lastActivityDate() const { return m_lastActivityDate; } +void SessionInfo::setLastActivityDate(QDateTime newLastActivityDate) { + m_lastActivityDate = newLastActivityDate; + emit lastActivityDateChanged(newLastActivityDate); +} + +QDateTime SessionInfo::lastPlaybackCheckIn() const { return m_lastPlaybackCheckIn; } +void SessionInfo::setLastPlaybackCheckIn(QDateTime newLastPlaybackCheckIn) { + m_lastPlaybackCheckIn = newLastPlaybackCheckIn; + emit lastPlaybackCheckInChanged(newLastPlaybackCheckIn); +} + +QString SessionInfo::deviceName() const { return m_deviceName; } +void SessionInfo::setDeviceName(QString newDeviceName) { + m_deviceName = newDeviceName; + emit deviceNameChanged(newDeviceName); +} + +QString SessionInfo::deviceType() const { return m_deviceType; } +void SessionInfo::setDeviceType(QString newDeviceType) { + m_deviceType = newDeviceType; + emit deviceTypeChanged(newDeviceType); +} + +BaseItemDto * SessionInfo::nowPlayingItem() const { return m_nowPlayingItem; } +void SessionInfo::setNowPlayingItem(BaseItemDto * newNowPlayingItem) { + m_nowPlayingItem = newNowPlayingItem; + emit nowPlayingItemChanged(newNowPlayingItem); +} + +BaseItem * SessionInfo::fullNowPlayingItem() const { return m_fullNowPlayingItem; } +void SessionInfo::setFullNowPlayingItem(BaseItem * newFullNowPlayingItem) { + m_fullNowPlayingItem = newFullNowPlayingItem; + emit fullNowPlayingItemChanged(newFullNowPlayingItem); +} + +BaseItemDto * SessionInfo::nowViewingItem() const { return m_nowViewingItem; } +void SessionInfo::setNowViewingItem(BaseItemDto * newNowViewingItem) { + m_nowViewingItem = newNowViewingItem; + emit nowViewingItemChanged(newNowViewingItem); +} + +QString SessionInfo::deviceId() const { return m_deviceId; } +void SessionInfo::setDeviceId(QString newDeviceId) { + m_deviceId = newDeviceId; + emit deviceIdChanged(newDeviceId); +} + +QString SessionInfo::applicationVersion() const { return m_applicationVersion; } +void SessionInfo::setApplicationVersion(QString newApplicationVersion) { + m_applicationVersion = newApplicationVersion; + emit applicationVersionChanged(newApplicationVersion); +} + +TranscodingInfo * SessionInfo::transcodingInfo() const { return m_transcodingInfo; } +void SessionInfo::setTranscodingInfo(TranscodingInfo * newTranscodingInfo) { + m_transcodingInfo = newTranscodingInfo; + emit transcodingInfoChanged(newTranscodingInfo); +} + +bool SessionInfo::isActive() const { return m_isActive; } +void SessionInfo::setIsActive(bool newIsActive) { + m_isActive = newIsActive; + emit isActiveChanged(newIsActive); +} + +bool SessionInfo::supportsMediaControl() const { return m_supportsMediaControl; } +void SessionInfo::setSupportsMediaControl(bool newSupportsMediaControl) { + m_supportsMediaControl = newSupportsMediaControl; + emit supportsMediaControlChanged(newSupportsMediaControl); +} + +bool SessionInfo::supportsRemoteControl() const { return m_supportsRemoteControl; } +void SessionInfo::setSupportsRemoteControl(bool newSupportsRemoteControl) { + m_supportsRemoteControl = newSupportsRemoteControl; + emit supportsRemoteControlChanged(newSupportsRemoteControl); +} + +QList SessionInfo::nowPlayingQueue() const { return m_nowPlayingQueue; } +void SessionInfo::setNowPlayingQueue(QList newNowPlayingQueue) { + m_nowPlayingQueue = newNowPlayingQueue; + emit nowPlayingQueueChanged(newNowPlayingQueue); +} + +bool SessionInfo::hasCustomDeviceName() const { return m_hasCustomDeviceName; } +void SessionInfo::setHasCustomDeviceName(bool newHasCustomDeviceName) { + m_hasCustomDeviceName = newHasCustomDeviceName; + emit hasCustomDeviceNameChanged(newHasCustomDeviceName); +} + +QString SessionInfo::playlistItemId() const { return m_playlistItemId; } +void SessionInfo::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + +QString SessionInfo::serverId() const { return m_serverId; } +void SessionInfo::setServerId(QString newServerId) { + m_serverId = newServerId; + emit serverIdChanged(newServerId); +} + +QString SessionInfo::userPrimaryImageTag() const { return m_userPrimaryImageTag; } +void SessionInfo::setUserPrimaryImageTag(QString newUserPrimaryImageTag) { + m_userPrimaryImageTag = newUserPrimaryImageTag; + emit userPrimaryImageTagChanged(newUserPrimaryImageTag); +} + +QList SessionInfo::supportedCommands() const { return m_supportedCommands; } +void SessionInfo::setSupportedCommands(QList newSupportedCommands) { + m_supportedCommands = newSupportedCommands; + emit supportedCommandsChanged(newSupportedCommands); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/sessionuserinfo.cpp b/core/src/DTO/sessionuserinfo.cpp new file mode 100644 index 0000000..6a4ab12 --- /dev/null +++ b/core/src/DTO/sessionuserinfo.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SessionUserInfo::SessionUserInfo(QObject *parent) : QObject(parent) {} + +SessionUserInfo *SessionUserInfo::fromJSON(QJsonObject source, QObject *parent) { + SessionUserInfo *instance = new SessionUserInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void SessionUserInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SessionUserInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SessionUserInfo::userId() const { return m_userId; } +void SessionUserInfo::setUserId(QString newUserId) { + m_userId = newUserId; + emit userIdChanged(newUserId); +} + +QString SessionUserInfo::userName() const { return m_userName; } +void SessionUserInfo::setUserName(QString newUserName) { + m_userName = newUserName; + emit userNameChanged(newUserName); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/setchannelmappingdto.cpp b/core/src/DTO/setchannelmappingdto.cpp new file mode 100644 index 0000000..b919b52 --- /dev/null +++ b/core/src/DTO/setchannelmappingdto.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SetChannelMappingDto::SetChannelMappingDto(QObject *parent) : QObject(parent) {} + +SetChannelMappingDto *SetChannelMappingDto::fromJSON(QJsonObject source, QObject *parent) { + SetChannelMappingDto *instance = new SetChannelMappingDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void SetChannelMappingDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SetChannelMappingDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SetChannelMappingDto::providerId() const { return m_providerId; } +void SetChannelMappingDto::setProviderId(QString newProviderId) { + m_providerId = newProviderId; + emit providerIdChanged(newProviderId); +} + +QString SetChannelMappingDto::tunerChannelId() const { return m_tunerChannelId; } +void SetChannelMappingDto::setTunerChannelId(QString newTunerChannelId) { + m_tunerChannelId = newTunerChannelId; + emit tunerChannelIdChanged(newTunerChannelId); +} + +QString SetChannelMappingDto::providerChannelId() const { return m_providerChannelId; } +void SetChannelMappingDto::setProviderChannelId(QString newProviderChannelId) { + m_providerChannelId = newProviderChannelId; + emit providerChannelIdChanged(newProviderChannelId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/setplaylistitemrequestdto.cpp b/core/src/DTO/setplaylistitemrequestdto.cpp new file mode 100644 index 0000000..a20eb9d --- /dev/null +++ b/core/src/DTO/setplaylistitemrequestdto.cpp @@ -0,0 +1,59 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SetPlaylistItemRequestDto::SetPlaylistItemRequestDto(QObject *parent) : QObject(parent) {} + +SetPlaylistItemRequestDto *SetPlaylistItemRequestDto::fromJSON(QJsonObject source, QObject *parent) { + SetPlaylistItemRequestDto *instance = new SetPlaylistItemRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void SetPlaylistItemRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SetPlaylistItemRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SetPlaylistItemRequestDto::playlistItemId() const { return m_playlistItemId; } +void SetPlaylistItemRequestDto::setPlaylistItemId(QString newPlaylistItemId) { + m_playlistItemId = newPlaylistItemId; + emit playlistItemIdChanged(newPlaylistItemId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/setrepeatmoderequestdto.cpp b/core/src/DTO/setrepeatmoderequestdto.cpp new file mode 100644 index 0000000..6ae2022 --- /dev/null +++ b/core/src/DTO/setrepeatmoderequestdto.cpp @@ -0,0 +1,61 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +SetRepeatModeRequestDto::SetRepeatModeRequestDto(QObject *parent) : QObject(parent) {} + +SetRepeatModeRequestDto *SetRepeatModeRequestDto::fromJSON(QJsonObject source, QObject *parent) { + SetRepeatModeRequestDto *instance = new SetRepeatModeRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void SetRepeatModeRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SetRepeatModeRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +GroupRepeatMode SetRepeatModeRequestDto::mode() const { return m_mode; } +void SetRepeatModeRequestDto::setMode(GroupRepeatMode newMode) { + m_mode = newMode; + emit modeChanged(newMode); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/setshufflemoderequestdto.cpp b/core/src/DTO/setshufflemoderequestdto.cpp new file mode 100644 index 0000000..0b7d990 --- /dev/null +++ b/core/src/DTO/setshufflemoderequestdto.cpp @@ -0,0 +1,61 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +SetShuffleModeRequestDto::SetShuffleModeRequestDto(QObject *parent) : QObject(parent) {} + +SetShuffleModeRequestDto *SetShuffleModeRequestDto::fromJSON(QJsonObject source, QObject *parent) { + SetShuffleModeRequestDto *instance = new SetShuffleModeRequestDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void SetShuffleModeRequestDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SetShuffleModeRequestDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +GroupShuffleMode SetShuffleModeRequestDto::mode() const { return m_mode; } +void SetShuffleModeRequestDto::setMode(GroupShuffleMode newMode) { + m_mode = newMode; + emit modeChanged(newMode); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/songinfo.cpp b/core/src/DTO/songinfo.cpp new file mode 100644 index 0000000..1522b9a --- /dev/null +++ b/core/src/DTO/songinfo.cpp @@ -0,0 +1,131 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SongInfo::SongInfo(QObject *parent) : QObject(parent) {} + +SongInfo *SongInfo::fromJSON(QJsonObject source, QObject *parent) { + SongInfo *instance = new SongInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void SongInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SongInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SongInfo::name() const { return m_name; } +void SongInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString SongInfo::path() const { return m_path; } +void SongInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString SongInfo::metadataLanguage() const { return m_metadataLanguage; } +void SongInfo::setMetadataLanguage(QString newMetadataLanguage) { + m_metadataLanguage = newMetadataLanguage; + emit metadataLanguageChanged(newMetadataLanguage); +} + +QString SongInfo::metadataCountryCode() const { return m_metadataCountryCode; } +void SongInfo::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QJsonObject SongInfo::providerIds() const { return m_providerIds; } +void SongInfo::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 SongInfo::year() const { return m_year; } +void SongInfo::setYear(qint32 newYear) { + m_year = newYear; + emit yearChanged(newYear); +} + +qint32 SongInfo::indexNumber() const { return m_indexNumber; } +void SongInfo::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 SongInfo::parentIndexNumber() const { return m_parentIndexNumber; } +void SongInfo::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime SongInfo::premiereDate() const { return m_premiereDate; } +void SongInfo::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +bool SongInfo::isAutomated() const { return m_isAutomated; } +void SongInfo::setIsAutomated(bool newIsAutomated) { + m_isAutomated = newIsAutomated; + emit isAutomatedChanged(newIsAutomated); +} + +QStringList SongInfo::albumArtists() const { return m_albumArtists; } +void SongInfo::setAlbumArtists(QStringList newAlbumArtists) { + m_albumArtists = newAlbumArtists; + emit albumArtistsChanged(newAlbumArtists); +} + +QString SongInfo::album() const { return m_album; } +void SongInfo::setAlbum(QString newAlbum) { + m_album = newAlbum; + emit albumChanged(newAlbum); +} + +QStringList SongInfo::artists() const { return m_artists; } +void SongInfo::setArtists(QStringList newArtists) { + m_artists = newArtists; + emit artistsChanged(newArtists); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/sortorder.cpp b/core/src/DTO/sortorder.cpp new file mode 100644 index 0000000..036f27f --- /dev/null +++ b/core/src/DTO/sortorder.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SortOrderClass::SortOrderClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/specialviewoptiondto.cpp b/core/src/DTO/specialviewoptiondto.cpp new file mode 100644 index 0000000..9098c19 --- /dev/null +++ b/core/src/DTO/specialviewoptiondto.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SpecialViewOptionDto::SpecialViewOptionDto(QObject *parent) : QObject(parent) {} + +SpecialViewOptionDto *SpecialViewOptionDto::fromJSON(QJsonObject source, QObject *parent) { + SpecialViewOptionDto *instance = new SpecialViewOptionDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void SpecialViewOptionDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SpecialViewOptionDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SpecialViewOptionDto::name() const { return m_name; } +void SpecialViewOptionDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString SpecialViewOptionDto::jellyfinId() const { return m_jellyfinId; } +void SpecialViewOptionDto::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/startupconfigurationdto.cpp b/core/src/DTO/startupconfigurationdto.cpp new file mode 100644 index 0000000..368ee6d --- /dev/null +++ b/core/src/DTO/startupconfigurationdto.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +StartupConfigurationDto::StartupConfigurationDto(QObject *parent) : QObject(parent) {} + +StartupConfigurationDto *StartupConfigurationDto::fromJSON(QJsonObject source, QObject *parent) { + StartupConfigurationDto *instance = new StartupConfigurationDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void StartupConfigurationDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject StartupConfigurationDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString StartupConfigurationDto::uICulture() const { return m_uICulture; } +void StartupConfigurationDto::setUICulture(QString newUICulture) { + m_uICulture = newUICulture; + emit uICultureChanged(newUICulture); +} + +QString StartupConfigurationDto::metadataCountryCode() const { return m_metadataCountryCode; } +void StartupConfigurationDto::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QString StartupConfigurationDto::preferredMetadataLanguage() const { return m_preferredMetadataLanguage; } +void StartupConfigurationDto::setPreferredMetadataLanguage(QString newPreferredMetadataLanguage) { + m_preferredMetadataLanguage = newPreferredMetadataLanguage; + emit preferredMetadataLanguageChanged(newPreferredMetadataLanguage); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/startupremoteaccessdto.cpp b/core/src/DTO/startupremoteaccessdto.cpp new file mode 100644 index 0000000..cbb78da --- /dev/null +++ b/core/src/DTO/startupremoteaccessdto.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +StartupRemoteAccessDto::StartupRemoteAccessDto(QObject *parent) : QObject(parent) {} + +StartupRemoteAccessDto *StartupRemoteAccessDto::fromJSON(QJsonObject source, QObject *parent) { + StartupRemoteAccessDto *instance = new StartupRemoteAccessDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void StartupRemoteAccessDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject StartupRemoteAccessDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +bool StartupRemoteAccessDto::enableRemoteAccess() const { return m_enableRemoteAccess; } +void StartupRemoteAccessDto::setEnableRemoteAccess(bool newEnableRemoteAccess) { + m_enableRemoteAccess = newEnableRemoteAccess; + emit enableRemoteAccessChanged(newEnableRemoteAccess); +} + +bool StartupRemoteAccessDto::enableAutomaticPortMapping() const { return m_enableAutomaticPortMapping; } +void StartupRemoteAccessDto::setEnableAutomaticPortMapping(bool newEnableAutomaticPortMapping) { + m_enableAutomaticPortMapping = newEnableAutomaticPortMapping; + emit enableAutomaticPortMappingChanged(newEnableAutomaticPortMapping); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/startupuserdto.cpp b/core/src/DTO/startupuserdto.cpp new file mode 100644 index 0000000..dcc6933 --- /dev/null +++ b/core/src/DTO/startupuserdto.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +StartupUserDto::StartupUserDto(QObject *parent) : QObject(parent) {} + +StartupUserDto *StartupUserDto::fromJSON(QJsonObject source, QObject *parent) { + StartupUserDto *instance = new StartupUserDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void StartupUserDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject StartupUserDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString StartupUserDto::name() const { return m_name; } +void StartupUserDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString StartupUserDto::password() const { return m_password; } +void StartupUserDto::setPassword(QString newPassword) { + m_password = newPassword; + emit passwordChanged(newPassword); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/subtitledeliverymethod.cpp b/core/src/DTO/subtitledeliverymethod.cpp new file mode 100644 index 0000000..6d9857d --- /dev/null +++ b/core/src/DTO/subtitledeliverymethod.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SubtitleDeliveryMethodClass::SubtitleDeliveryMethodClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/subtitleplaybackmode.cpp b/core/src/DTO/subtitleplaybackmode.cpp new file mode 100644 index 0000000..a50592c --- /dev/null +++ b/core/src/DTO/subtitleplaybackmode.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SubtitlePlaybackModeClass::SubtitlePlaybackModeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/subtitleprofile.cpp b/core/src/DTO/subtitleprofile.cpp new file mode 100644 index 0000000..70e895f --- /dev/null +++ b/core/src/DTO/subtitleprofile.cpp @@ -0,0 +1,85 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +SubtitleProfile::SubtitleProfile(QObject *parent) : QObject(parent) {} + +SubtitleProfile *SubtitleProfile::fromJSON(QJsonObject source, QObject *parent) { + SubtitleProfile *instance = new SubtitleProfile(parent); + instance->updateFromJSON(source); + return instance; +} + +void SubtitleProfile::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SubtitleProfile::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SubtitleProfile::format() const { return m_format; } +void SubtitleProfile::setFormat(QString newFormat) { + m_format = newFormat; + emit formatChanged(newFormat); +} + +SubtitleDeliveryMethod SubtitleProfile::method() const { return m_method; } +void SubtitleProfile::setMethod(SubtitleDeliveryMethod newMethod) { + m_method = newMethod; + emit methodChanged(newMethod); +} + +QString SubtitleProfile::didlMode() const { return m_didlMode; } +void SubtitleProfile::setDidlMode(QString newDidlMode) { + m_didlMode = newDidlMode; + emit didlModeChanged(newDidlMode); +} + +QString SubtitleProfile::language() const { return m_language; } +void SubtitleProfile::setLanguage(QString newLanguage) { + m_language = newLanguage; + emit languageChanged(newLanguage); +} + +QString SubtitleProfile::container() const { return m_container; } +void SubtitleProfile::setContainer(QString newContainer) { + m_container = newContainer; + emit containerChanged(newContainer); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/syncplayuseraccesstype.cpp b/core/src/DTO/syncplayuseraccesstype.cpp new file mode 100644 index 0000000..ca5852f --- /dev/null +++ b/core/src/DTO/syncplayuseraccesstype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +SyncPlayUserAccessTypeClass::SyncPlayUserAccessTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/systeminfo.cpp b/core/src/DTO/systeminfo.cpp new file mode 100644 index 0000000..c814c36 --- /dev/null +++ b/core/src/DTO/systeminfo.cpp @@ -0,0 +1,212 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +SystemInfo::SystemInfo(QObject *parent) : QObject(parent) {} + +SystemInfo *SystemInfo::fromJSON(QJsonObject source, QObject *parent) { + SystemInfo *instance = new SystemInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void SystemInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject SystemInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString SystemInfo::localAddress() const { return m_localAddress; } +void SystemInfo::setLocalAddress(QString newLocalAddress) { + m_localAddress = newLocalAddress; + emit localAddressChanged(newLocalAddress); +} + +QString SystemInfo::serverName() const { return m_serverName; } +void SystemInfo::setServerName(QString newServerName) { + m_serverName = newServerName; + emit serverNameChanged(newServerName); +} + +QString SystemInfo::version() const { return m_version; } +void SystemInfo::setVersion(QString newVersion) { + m_version = newVersion; + emit versionChanged(newVersion); +} + +QString SystemInfo::productName() const { return m_productName; } +void SystemInfo::setProductName(QString newProductName) { + m_productName = newProductName; + emit productNameChanged(newProductName); +} + +QString SystemInfo::operatingSystem() const { return m_operatingSystem; } +void SystemInfo::setOperatingSystem(QString newOperatingSystem) { + m_operatingSystem = newOperatingSystem; + emit operatingSystemChanged(newOperatingSystem); +} + +QString SystemInfo::jellyfinId() const { return m_jellyfinId; } +void SystemInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +bool SystemInfo::startupWizardCompleted() const { return m_startupWizardCompleted; } +void SystemInfo::setStartupWizardCompleted(bool newStartupWizardCompleted) { + m_startupWizardCompleted = newStartupWizardCompleted; + emit startupWizardCompletedChanged(newStartupWizardCompleted); +} + +QString SystemInfo::operatingSystemDisplayName() const { return m_operatingSystemDisplayName; } +void SystemInfo::setOperatingSystemDisplayName(QString newOperatingSystemDisplayName) { + m_operatingSystemDisplayName = newOperatingSystemDisplayName; + emit operatingSystemDisplayNameChanged(newOperatingSystemDisplayName); +} + +QString SystemInfo::packageName() const { return m_packageName; } +void SystemInfo::setPackageName(QString newPackageName) { + m_packageName = newPackageName; + emit packageNameChanged(newPackageName); +} + +bool SystemInfo::hasPendingRestart() const { return m_hasPendingRestart; } +void SystemInfo::setHasPendingRestart(bool newHasPendingRestart) { + m_hasPendingRestart = newHasPendingRestart; + emit hasPendingRestartChanged(newHasPendingRestart); +} + +bool SystemInfo::isShuttingDown() const { return m_isShuttingDown; } +void SystemInfo::setIsShuttingDown(bool newIsShuttingDown) { + m_isShuttingDown = newIsShuttingDown; + emit isShuttingDownChanged(newIsShuttingDown); +} + +bool SystemInfo::supportsLibraryMonitor() const { return m_supportsLibraryMonitor; } +void SystemInfo::setSupportsLibraryMonitor(bool newSupportsLibraryMonitor) { + m_supportsLibraryMonitor = newSupportsLibraryMonitor; + emit supportsLibraryMonitorChanged(newSupportsLibraryMonitor); +} + +qint32 SystemInfo::webSocketPortNumber() const { return m_webSocketPortNumber; } +void SystemInfo::setWebSocketPortNumber(qint32 newWebSocketPortNumber) { + m_webSocketPortNumber = newWebSocketPortNumber; + emit webSocketPortNumberChanged(newWebSocketPortNumber); +} + +QList SystemInfo::completedInstallations() const { return m_completedInstallations; } +void SystemInfo::setCompletedInstallations(QList newCompletedInstallations) { + m_completedInstallations = newCompletedInstallations; + emit completedInstallationsChanged(newCompletedInstallations); +} + +bool SystemInfo::canSelfRestart() const { return m_canSelfRestart; } +void SystemInfo::setCanSelfRestart(bool newCanSelfRestart) { + m_canSelfRestart = newCanSelfRestart; + emit canSelfRestartChanged(newCanSelfRestart); +} + +bool SystemInfo::canLaunchWebBrowser() const { return m_canLaunchWebBrowser; } +void SystemInfo::setCanLaunchWebBrowser(bool newCanLaunchWebBrowser) { + m_canLaunchWebBrowser = newCanLaunchWebBrowser; + emit canLaunchWebBrowserChanged(newCanLaunchWebBrowser); +} + +QString SystemInfo::programDataPath() const { return m_programDataPath; } +void SystemInfo::setProgramDataPath(QString newProgramDataPath) { + m_programDataPath = newProgramDataPath; + emit programDataPathChanged(newProgramDataPath); +} + +QString SystemInfo::webPath() const { return m_webPath; } +void SystemInfo::setWebPath(QString newWebPath) { + m_webPath = newWebPath; + emit webPathChanged(newWebPath); +} + +QString SystemInfo::itemsByNamePath() const { return m_itemsByNamePath; } +void SystemInfo::setItemsByNamePath(QString newItemsByNamePath) { + m_itemsByNamePath = newItemsByNamePath; + emit itemsByNamePathChanged(newItemsByNamePath); +} + +QString SystemInfo::cachePath() const { return m_cachePath; } +void SystemInfo::setCachePath(QString newCachePath) { + m_cachePath = newCachePath; + emit cachePathChanged(newCachePath); +} + +QString SystemInfo::logPath() const { return m_logPath; } +void SystemInfo::setLogPath(QString newLogPath) { + m_logPath = newLogPath; + emit logPathChanged(newLogPath); +} + +QString SystemInfo::internalMetadataPath() const { return m_internalMetadataPath; } +void SystemInfo::setInternalMetadataPath(QString newInternalMetadataPath) { + m_internalMetadataPath = newInternalMetadataPath; + emit internalMetadataPathChanged(newInternalMetadataPath); +} + +QString SystemInfo::transcodingTempPath() const { return m_transcodingTempPath; } +void SystemInfo::setTranscodingTempPath(QString newTranscodingTempPath) { + m_transcodingTempPath = newTranscodingTempPath; + emit transcodingTempPathChanged(newTranscodingTempPath); +} + +bool SystemInfo::hasUpdateAvailable() const { return m_hasUpdateAvailable; } +void SystemInfo::setHasUpdateAvailable(bool newHasUpdateAvailable) { + m_hasUpdateAvailable = newHasUpdateAvailable; + emit hasUpdateAvailableChanged(newHasUpdateAvailable); +} + +FFmpegLocation SystemInfo::encoderLocation() const { return m_encoderLocation; } +void SystemInfo::setEncoderLocation(FFmpegLocation newEncoderLocation) { + m_encoderLocation = newEncoderLocation; + emit encoderLocationChanged(newEncoderLocation); +} + +Architecture SystemInfo::systemArchitecture() const { return m_systemArchitecture; } +void SystemInfo::setSystemArchitecture(Architecture newSystemArchitecture) { + m_systemArchitecture = newSystemArchitecture; + emit systemArchitectureChanged(newSystemArchitecture); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/taskcompletionstatus.cpp b/core/src/DTO/taskcompletionstatus.cpp new file mode 100644 index 0000000..5ba4083 --- /dev/null +++ b/core/src/DTO/taskcompletionstatus.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TaskCompletionStatusClass::TaskCompletionStatusClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/taskinfo.cpp b/core/src/DTO/taskinfo.cpp new file mode 100644 index 0000000..d402d29 --- /dev/null +++ b/core/src/DTO/taskinfo.cpp @@ -0,0 +1,115 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +TaskInfo::TaskInfo(QObject *parent) : QObject(parent) {} + +TaskInfo *TaskInfo::fromJSON(QJsonObject source, QObject *parent) { + TaskInfo *instance = new TaskInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void TaskInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TaskInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString TaskInfo::name() const { return m_name; } +void TaskInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +TaskState TaskInfo::state() const { return m_state; } +void TaskInfo::setState(TaskState newState) { + m_state = newState; + emit stateChanged(newState); +} + +double TaskInfo::currentProgressPercentage() const { return m_currentProgressPercentage; } +void TaskInfo::setCurrentProgressPercentage(double newCurrentProgressPercentage) { + m_currentProgressPercentage = newCurrentProgressPercentage; + emit currentProgressPercentageChanged(newCurrentProgressPercentage); +} + +QString TaskInfo::jellyfinId() const { return m_jellyfinId; } +void TaskInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +TaskResult * TaskInfo::lastExecutionResult() const { return m_lastExecutionResult; } +void TaskInfo::setLastExecutionResult(TaskResult * newLastExecutionResult) { + m_lastExecutionResult = newLastExecutionResult; + emit lastExecutionResultChanged(newLastExecutionResult); +} + +QList TaskInfo::triggers() const { return m_triggers; } +void TaskInfo::setTriggers(QList newTriggers) { + m_triggers = newTriggers; + emit triggersChanged(newTriggers); +} + +QString TaskInfo::description() const { return m_description; } +void TaskInfo::setDescription(QString newDescription) { + m_description = newDescription; + emit descriptionChanged(newDescription); +} + +QString TaskInfo::category() const { return m_category; } +void TaskInfo::setCategory(QString newCategory) { + m_category = newCategory; + emit categoryChanged(newCategory); +} + +bool TaskInfo::isHidden() const { return m_isHidden; } +void TaskInfo::setIsHidden(bool newIsHidden) { + m_isHidden = newIsHidden; + emit isHiddenChanged(newIsHidden); +} + +QString TaskInfo::key() const { return m_key; } +void TaskInfo::setKey(QString newKey) { + m_key = newKey; + emit keyChanged(newKey); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/taskresult.cpp b/core/src/DTO/taskresult.cpp new file mode 100644 index 0000000..be25f93 --- /dev/null +++ b/core/src/DTO/taskresult.cpp @@ -0,0 +1,103 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +TaskResult::TaskResult(QObject *parent) : QObject(parent) {} + +TaskResult *TaskResult::fromJSON(QJsonObject source, QObject *parent) { + TaskResult *instance = new TaskResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void TaskResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TaskResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QDateTime TaskResult::startTimeUtc() const { return m_startTimeUtc; } +void TaskResult::setStartTimeUtc(QDateTime newStartTimeUtc) { + m_startTimeUtc = newStartTimeUtc; + emit startTimeUtcChanged(newStartTimeUtc); +} + +QDateTime TaskResult::endTimeUtc() const { return m_endTimeUtc; } +void TaskResult::setEndTimeUtc(QDateTime newEndTimeUtc) { + m_endTimeUtc = newEndTimeUtc; + emit endTimeUtcChanged(newEndTimeUtc); +} + +TaskCompletionStatus TaskResult::status() const { return m_status; } +void TaskResult::setStatus(TaskCompletionStatus newStatus) { + m_status = newStatus; + emit statusChanged(newStatus); +} + +QString TaskResult::name() const { return m_name; } +void TaskResult::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString TaskResult::key() const { return m_key; } +void TaskResult::setKey(QString newKey) { + m_key = newKey; + emit keyChanged(newKey); +} + +QString TaskResult::jellyfinId() const { return m_jellyfinId; } +void TaskResult::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString TaskResult::errorMessage() const { return m_errorMessage; } +void TaskResult::setErrorMessage(QString newErrorMessage) { + m_errorMessage = newErrorMessage; + emit errorMessageChanged(newErrorMessage); +} + +QString TaskResult::longErrorMessage() const { return m_longErrorMessage; } +void TaskResult::setLongErrorMessage(QString newLongErrorMessage) { + m_longErrorMessage = newLongErrorMessage; + emit longErrorMessageChanged(newLongErrorMessage); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/taskstate.cpp b/core/src/DTO/taskstate.cpp new file mode 100644 index 0000000..f85fb18 --- /dev/null +++ b/core/src/DTO/taskstate.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TaskStateClass::TaskStateClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/tasktriggerinfo.cpp b/core/src/DTO/tasktriggerinfo.cpp new file mode 100644 index 0000000..03756f5 --- /dev/null +++ b/core/src/DTO/tasktriggerinfo.cpp @@ -0,0 +1,85 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +TaskTriggerInfo::TaskTriggerInfo(QObject *parent) : QObject(parent) {} + +TaskTriggerInfo *TaskTriggerInfo::fromJSON(QJsonObject source, QObject *parent) { + TaskTriggerInfo *instance = new TaskTriggerInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void TaskTriggerInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TaskTriggerInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString TaskTriggerInfo::type() const { return m_type; } +void TaskTriggerInfo::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +qint64 TaskTriggerInfo::timeOfDayTicks() const { return m_timeOfDayTicks; } +void TaskTriggerInfo::setTimeOfDayTicks(qint64 newTimeOfDayTicks) { + m_timeOfDayTicks = newTimeOfDayTicks; + emit timeOfDayTicksChanged(newTimeOfDayTicks); +} + +qint64 TaskTriggerInfo::intervalTicks() const { return m_intervalTicks; } +void TaskTriggerInfo::setIntervalTicks(qint64 newIntervalTicks) { + m_intervalTicks = newIntervalTicks; + emit intervalTicksChanged(newIntervalTicks); +} + +DayOfWeek TaskTriggerInfo::dayOfWeek() const { return m_dayOfWeek; } +void TaskTriggerInfo::setDayOfWeek(DayOfWeek newDayOfWeek) { + m_dayOfWeek = newDayOfWeek; + emit dayOfWeekChanged(newDayOfWeek); +} + +qint64 TaskTriggerInfo::maxRuntimeTicks() const { return m_maxRuntimeTicks; } +void TaskTriggerInfo::setMaxRuntimeTicks(qint64 newMaxRuntimeTicks) { + m_maxRuntimeTicks = newMaxRuntimeTicks; + emit maxRuntimeTicksChanged(newMaxRuntimeTicks); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/thememediaresult.cpp b/core/src/DTO/thememediaresult.cpp new file mode 100644 index 0000000..ddc16b4 --- /dev/null +++ b/core/src/DTO/thememediaresult.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ThemeMediaResult::ThemeMediaResult(QObject *parent) : QObject(parent) {} + +ThemeMediaResult *ThemeMediaResult::fromJSON(QJsonObject source, QObject *parent) { + ThemeMediaResult *instance = new ThemeMediaResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void ThemeMediaResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ThemeMediaResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList ThemeMediaResult::items() const { return m_items; } +void ThemeMediaResult::setItems(QList newItems) { + m_items = newItems; + emit itemsChanged(newItems); +} + +qint32 ThemeMediaResult::totalRecordCount() const { return m_totalRecordCount; } +void ThemeMediaResult::setTotalRecordCount(qint32 newTotalRecordCount) { + m_totalRecordCount = newTotalRecordCount; + emit totalRecordCountChanged(newTotalRecordCount); +} + +qint32 ThemeMediaResult::startIndex() const { return m_startIndex; } +void ThemeMediaResult::setStartIndex(qint32 newStartIndex) { + m_startIndex = newStartIndex; + emit startIndexChanged(newStartIndex); +} + +QString ThemeMediaResult::ownerId() const { return m_ownerId; } +void ThemeMediaResult::setOwnerId(QString newOwnerId) { + m_ownerId = newOwnerId; + emit ownerIdChanged(newOwnerId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/timereventinfo.cpp b/core/src/DTO/timereventinfo.cpp new file mode 100644 index 0000000..bbe86de --- /dev/null +++ b/core/src/DTO/timereventinfo.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TimerEventInfo::TimerEventInfo(QObject *parent) : QObject(parent) {} + +TimerEventInfo *TimerEventInfo::fromJSON(QJsonObject source, QObject *parent) { + TimerEventInfo *instance = new TimerEventInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void TimerEventInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TimerEventInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString TimerEventInfo::jellyfinId() const { return m_jellyfinId; } +void TimerEventInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString TimerEventInfo::programId() const { return m_programId; } +void TimerEventInfo::setProgramId(QString newProgramId) { + m_programId = newProgramId; + emit programIdChanged(newProgramId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/timerinfodto.cpp b/core/src/DTO/timerinfodto.cpp new file mode 100644 index 0000000..566e0be --- /dev/null +++ b/core/src/DTO/timerinfodto.cpp @@ -0,0 +1,224 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +TimerInfoDto::TimerInfoDto(QObject *parent) : QObject(parent) {} + +TimerInfoDto *TimerInfoDto::fromJSON(QJsonObject source, QObject *parent) { + TimerInfoDto *instance = new TimerInfoDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void TimerInfoDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TimerInfoDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString TimerInfoDto::jellyfinId() const { return m_jellyfinId; } +void TimerInfoDto::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString TimerInfoDto::type() const { return m_type; } +void TimerInfoDto::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString TimerInfoDto::serverId() const { return m_serverId; } +void TimerInfoDto::setServerId(QString newServerId) { + m_serverId = newServerId; + emit serverIdChanged(newServerId); +} + +QString TimerInfoDto::externalId() const { return m_externalId; } +void TimerInfoDto::setExternalId(QString newExternalId) { + m_externalId = newExternalId; + emit externalIdChanged(newExternalId); +} + +QString TimerInfoDto::channelId() const { return m_channelId; } +void TimerInfoDto::setChannelId(QString newChannelId) { + m_channelId = newChannelId; + emit channelIdChanged(newChannelId); +} + +QString TimerInfoDto::externalChannelId() const { return m_externalChannelId; } +void TimerInfoDto::setExternalChannelId(QString newExternalChannelId) { + m_externalChannelId = newExternalChannelId; + emit externalChannelIdChanged(newExternalChannelId); +} + +QString TimerInfoDto::channelName() const { return m_channelName; } +void TimerInfoDto::setChannelName(QString newChannelName) { + m_channelName = newChannelName; + emit channelNameChanged(newChannelName); +} + +QString TimerInfoDto::channelPrimaryImageTag() const { return m_channelPrimaryImageTag; } +void TimerInfoDto::setChannelPrimaryImageTag(QString newChannelPrimaryImageTag) { + m_channelPrimaryImageTag = newChannelPrimaryImageTag; + emit channelPrimaryImageTagChanged(newChannelPrimaryImageTag); +} + +QString TimerInfoDto::programId() const { return m_programId; } +void TimerInfoDto::setProgramId(QString newProgramId) { + m_programId = newProgramId; + emit programIdChanged(newProgramId); +} + +QString TimerInfoDto::externalProgramId() const { return m_externalProgramId; } +void TimerInfoDto::setExternalProgramId(QString newExternalProgramId) { + m_externalProgramId = newExternalProgramId; + emit externalProgramIdChanged(newExternalProgramId); +} + +QString TimerInfoDto::name() const { return m_name; } +void TimerInfoDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString TimerInfoDto::overview() const { return m_overview; } +void TimerInfoDto::setOverview(QString newOverview) { + m_overview = newOverview; + emit overviewChanged(newOverview); +} + +QDateTime TimerInfoDto::startDate() const { return m_startDate; } +void TimerInfoDto::setStartDate(QDateTime newStartDate) { + m_startDate = newStartDate; + emit startDateChanged(newStartDate); +} + +QDateTime TimerInfoDto::endDate() const { return m_endDate; } +void TimerInfoDto::setEndDate(QDateTime newEndDate) { + m_endDate = newEndDate; + emit endDateChanged(newEndDate); +} + +QString TimerInfoDto::serviceName() const { return m_serviceName; } +void TimerInfoDto::setServiceName(QString newServiceName) { + m_serviceName = newServiceName; + emit serviceNameChanged(newServiceName); +} + +qint32 TimerInfoDto::priority() const { return m_priority; } +void TimerInfoDto::setPriority(qint32 newPriority) { + m_priority = newPriority; + emit priorityChanged(newPriority); +} + +qint32 TimerInfoDto::prePaddingSeconds() const { return m_prePaddingSeconds; } +void TimerInfoDto::setPrePaddingSeconds(qint32 newPrePaddingSeconds) { + m_prePaddingSeconds = newPrePaddingSeconds; + emit prePaddingSecondsChanged(newPrePaddingSeconds); +} + +qint32 TimerInfoDto::postPaddingSeconds() const { return m_postPaddingSeconds; } +void TimerInfoDto::setPostPaddingSeconds(qint32 newPostPaddingSeconds) { + m_postPaddingSeconds = newPostPaddingSeconds; + emit postPaddingSecondsChanged(newPostPaddingSeconds); +} + +bool TimerInfoDto::isPrePaddingRequired() const { return m_isPrePaddingRequired; } +void TimerInfoDto::setIsPrePaddingRequired(bool newIsPrePaddingRequired) { + m_isPrePaddingRequired = newIsPrePaddingRequired; + emit isPrePaddingRequiredChanged(newIsPrePaddingRequired); +} + +QString TimerInfoDto::parentBackdropItemId() const { return m_parentBackdropItemId; } +void TimerInfoDto::setParentBackdropItemId(QString newParentBackdropItemId) { + m_parentBackdropItemId = newParentBackdropItemId; + emit parentBackdropItemIdChanged(newParentBackdropItemId); +} + +QStringList TimerInfoDto::parentBackdropImageTags() const { return m_parentBackdropImageTags; } +void TimerInfoDto::setParentBackdropImageTags(QStringList newParentBackdropImageTags) { + m_parentBackdropImageTags = newParentBackdropImageTags; + emit parentBackdropImageTagsChanged(newParentBackdropImageTags); +} + +bool TimerInfoDto::isPostPaddingRequired() const { return m_isPostPaddingRequired; } +void TimerInfoDto::setIsPostPaddingRequired(bool newIsPostPaddingRequired) { + m_isPostPaddingRequired = newIsPostPaddingRequired; + emit isPostPaddingRequiredChanged(newIsPostPaddingRequired); +} + +KeepUntil TimerInfoDto::keepUntil() const { return m_keepUntil; } +void TimerInfoDto::setKeepUntil(KeepUntil newKeepUntil) { + m_keepUntil = newKeepUntil; + emit keepUntilChanged(newKeepUntil); +} + +RecordingStatus TimerInfoDto::status() const { return m_status; } +void TimerInfoDto::setStatus(RecordingStatus newStatus) { + m_status = newStatus; + emit statusChanged(newStatus); +} + +QString TimerInfoDto::seriesTimerId() const { return m_seriesTimerId; } +void TimerInfoDto::setSeriesTimerId(QString newSeriesTimerId) { + m_seriesTimerId = newSeriesTimerId; + emit seriesTimerIdChanged(newSeriesTimerId); +} + +QString TimerInfoDto::externalSeriesTimerId() const { return m_externalSeriesTimerId; } +void TimerInfoDto::setExternalSeriesTimerId(QString newExternalSeriesTimerId) { + m_externalSeriesTimerId = newExternalSeriesTimerId; + emit externalSeriesTimerIdChanged(newExternalSeriesTimerId); +} + +qint64 TimerInfoDto::runTimeTicks() const { return m_runTimeTicks; } +void TimerInfoDto::setRunTimeTicks(qint64 newRunTimeTicks) { + m_runTimeTicks = newRunTimeTicks; + emit runTimeTicksChanged(newRunTimeTicks); +} + +BaseItemDto * TimerInfoDto::programInfo() const { return m_programInfo; } +void TimerInfoDto::setProgramInfo(BaseItemDto * newProgramInfo) { + m_programInfo = newProgramInfo; + emit programInfoChanged(newProgramInfo); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/timerinfodtoqueryresult.cpp b/core/src/DTO/timerinfodtoqueryresult.cpp new file mode 100644 index 0000000..90c7482 --- /dev/null +++ b/core/src/DTO/timerinfodtoqueryresult.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TimerInfoDtoQueryResult::TimerInfoDtoQueryResult(QObject *parent) : QObject(parent) {} + +TimerInfoDtoQueryResult *TimerInfoDtoQueryResult::fromJSON(QJsonObject source, QObject *parent) { + TimerInfoDtoQueryResult *instance = new TimerInfoDtoQueryResult(parent); + instance->updateFromJSON(source); + return instance; +} + +void TimerInfoDtoQueryResult::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TimerInfoDtoQueryResult::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QList TimerInfoDtoQueryResult::items() const { return m_items; } +void TimerInfoDtoQueryResult::setItems(QList newItems) { + m_items = newItems; + emit itemsChanged(newItems); +} + +qint32 TimerInfoDtoQueryResult::totalRecordCount() const { return m_totalRecordCount; } +void TimerInfoDtoQueryResult::setTotalRecordCount(qint32 newTotalRecordCount) { + m_totalRecordCount = newTotalRecordCount; + emit totalRecordCountChanged(newTotalRecordCount); +} + +qint32 TimerInfoDtoQueryResult::startIndex() const { return m_startIndex; } +void TimerInfoDtoQueryResult::setStartIndex(qint32 newStartIndex) { + m_startIndex = newStartIndex; + emit startIndexChanged(newStartIndex); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/trailerinfo.cpp b/core/src/DTO/trailerinfo.cpp new file mode 100644 index 0000000..2a3d77f --- /dev/null +++ b/core/src/DTO/trailerinfo.cpp @@ -0,0 +1,113 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TrailerInfo::TrailerInfo(QObject *parent) : QObject(parent) {} + +TrailerInfo *TrailerInfo::fromJSON(QJsonObject source, QObject *parent) { + TrailerInfo *instance = new TrailerInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void TrailerInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TrailerInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString TrailerInfo::name() const { return m_name; } +void TrailerInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString TrailerInfo::path() const { return m_path; } +void TrailerInfo::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +QString TrailerInfo::metadataLanguage() const { return m_metadataLanguage; } +void TrailerInfo::setMetadataLanguage(QString newMetadataLanguage) { + m_metadataLanguage = newMetadataLanguage; + emit metadataLanguageChanged(newMetadataLanguage); +} + +QString TrailerInfo::metadataCountryCode() const { return m_metadataCountryCode; } +void TrailerInfo::setMetadataCountryCode(QString newMetadataCountryCode) { + m_metadataCountryCode = newMetadataCountryCode; + emit metadataCountryCodeChanged(newMetadataCountryCode); +} + +QJsonObject TrailerInfo::providerIds() const { return m_providerIds; } +void TrailerInfo::setProviderIds(QJsonObject newProviderIds) { + m_providerIds = newProviderIds; + emit providerIdsChanged(newProviderIds); +} + +qint32 TrailerInfo::year() const { return m_year; } +void TrailerInfo::setYear(qint32 newYear) { + m_year = newYear; + emit yearChanged(newYear); +} + +qint32 TrailerInfo::indexNumber() const { return m_indexNumber; } +void TrailerInfo::setIndexNumber(qint32 newIndexNumber) { + m_indexNumber = newIndexNumber; + emit indexNumberChanged(newIndexNumber); +} + +qint32 TrailerInfo::parentIndexNumber() const { return m_parentIndexNumber; } +void TrailerInfo::setParentIndexNumber(qint32 newParentIndexNumber) { + m_parentIndexNumber = newParentIndexNumber; + emit parentIndexNumberChanged(newParentIndexNumber); +} + +QDateTime TrailerInfo::premiereDate() const { return m_premiereDate; } +void TrailerInfo::setPremiereDate(QDateTime newPremiereDate) { + m_premiereDate = newPremiereDate; + emit premiereDateChanged(newPremiereDate); +} + +bool TrailerInfo::isAutomated() const { return m_isAutomated; } +void TrailerInfo::setIsAutomated(bool newIsAutomated) { + m_isAutomated = newIsAutomated; + emit isAutomatedChanged(newIsAutomated); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/trailerinforemotesearchquery.cpp b/core/src/DTO/trailerinforemotesearchquery.cpp new file mode 100644 index 0000000..2992930 --- /dev/null +++ b/core/src/DTO/trailerinforemotesearchquery.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TrailerInfoRemoteSearchQuery::TrailerInfoRemoteSearchQuery(QObject *parent) : QObject(parent) {} + +TrailerInfoRemoteSearchQuery *TrailerInfoRemoteSearchQuery::fromJSON(QJsonObject source, QObject *parent) { + TrailerInfoRemoteSearchQuery *instance = new TrailerInfoRemoteSearchQuery(parent); + instance->updateFromJSON(source); + return instance; +} + +void TrailerInfoRemoteSearchQuery::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TrailerInfoRemoteSearchQuery::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +TrailerInfo * TrailerInfoRemoteSearchQuery::searchInfo() const { return m_searchInfo; } +void TrailerInfoRemoteSearchQuery::setSearchInfo(TrailerInfo * newSearchInfo) { + m_searchInfo = newSearchInfo; + emit searchInfoChanged(newSearchInfo); +} + +QString TrailerInfoRemoteSearchQuery::itemId() const { return m_itemId; } +void TrailerInfoRemoteSearchQuery::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString TrailerInfoRemoteSearchQuery::searchProviderName() const { return m_searchProviderName; } +void TrailerInfoRemoteSearchQuery::setSearchProviderName(QString newSearchProviderName) { + m_searchProviderName = newSearchProviderName; + emit searchProviderNameChanged(newSearchProviderName); +} + +bool TrailerInfoRemoteSearchQuery::includeDisabledProviders() const { return m_includeDisabledProviders; } +void TrailerInfoRemoteSearchQuery::setIncludeDisabledProviders(bool newIncludeDisabledProviders) { + m_includeDisabledProviders = newIncludeDisabledProviders; + emit includeDisabledProvidersChanged(newIncludeDisabledProviders); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/transcodereason.cpp b/core/src/DTO/transcodereason.cpp new file mode 100644 index 0000000..0faccfc --- /dev/null +++ b/core/src/DTO/transcodereason.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TranscodeReasonClass::TranscodeReasonClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/transcodeseekinfo.cpp b/core/src/DTO/transcodeseekinfo.cpp new file mode 100644 index 0000000..38e07a2 --- /dev/null +++ b/core/src/DTO/transcodeseekinfo.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TranscodeSeekInfoClass::TranscodeSeekInfoClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/transcodinginfo.cpp b/core/src/DTO/transcodinginfo.cpp new file mode 100644 index 0000000..8c64040 --- /dev/null +++ b/core/src/DTO/transcodinginfo.cpp @@ -0,0 +1,127 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +TranscodingInfo::TranscodingInfo(QObject *parent) : QObject(parent) {} + +TranscodingInfo *TranscodingInfo::fromJSON(QJsonObject source, QObject *parent) { + TranscodingInfo *instance = new TranscodingInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void TranscodingInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TranscodingInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString TranscodingInfo::audioCodec() const { return m_audioCodec; } +void TranscodingInfo::setAudioCodec(QString newAudioCodec) { + m_audioCodec = newAudioCodec; + emit audioCodecChanged(newAudioCodec); +} + +QString TranscodingInfo::videoCodec() const { return m_videoCodec; } +void TranscodingInfo::setVideoCodec(QString newVideoCodec) { + m_videoCodec = newVideoCodec; + emit videoCodecChanged(newVideoCodec); +} + +QString TranscodingInfo::container() const { return m_container; } +void TranscodingInfo::setContainer(QString newContainer) { + m_container = newContainer; + emit containerChanged(newContainer); +} + +bool TranscodingInfo::isVideoDirect() const { return m_isVideoDirect; } +void TranscodingInfo::setIsVideoDirect(bool newIsVideoDirect) { + m_isVideoDirect = newIsVideoDirect; + emit isVideoDirectChanged(newIsVideoDirect); +} + +bool TranscodingInfo::isAudioDirect() const { return m_isAudioDirect; } +void TranscodingInfo::setIsAudioDirect(bool newIsAudioDirect) { + m_isAudioDirect = newIsAudioDirect; + emit isAudioDirectChanged(newIsAudioDirect); +} + +qint32 TranscodingInfo::bitrate() const { return m_bitrate; } +void TranscodingInfo::setBitrate(qint32 newBitrate) { + m_bitrate = newBitrate; + emit bitrateChanged(newBitrate); +} + +float TranscodingInfo::framerate() const { return m_framerate; } +void TranscodingInfo::setFramerate(float newFramerate) { + m_framerate = newFramerate; + emit framerateChanged(newFramerate); +} + +double TranscodingInfo::completionPercentage() const { return m_completionPercentage; } +void TranscodingInfo::setCompletionPercentage(double newCompletionPercentage) { + m_completionPercentage = newCompletionPercentage; + emit completionPercentageChanged(newCompletionPercentage); +} + +qint32 TranscodingInfo::width() const { return m_width; } +void TranscodingInfo::setWidth(qint32 newWidth) { + m_width = newWidth; + emit widthChanged(newWidth); +} + +qint32 TranscodingInfo::height() const { return m_height; } +void TranscodingInfo::setHeight(qint32 newHeight) { + m_height = newHeight; + emit heightChanged(newHeight); +} + +qint32 TranscodingInfo::audioChannels() const { return m_audioChannels; } +void TranscodingInfo::setAudioChannels(qint32 newAudioChannels) { + m_audioChannels = newAudioChannels; + emit audioChannelsChanged(newAudioChannels); +} + +QList TranscodingInfo::transcodeReasons() const { return m_transcodeReasons; } +void TranscodingInfo::setTranscodeReasons(QList newTranscodeReasons) { + m_transcodeReasons = newTranscodeReasons; + emit transcodeReasonsChanged(newTranscodeReasons); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/transcodingprofile.cpp b/core/src/DTO/transcodingprofile.cpp new file mode 100644 index 0000000..f54a6cd --- /dev/null +++ b/core/src/DTO/transcodingprofile.cpp @@ -0,0 +1,147 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include +#include + +namespace Jellyfin { +namespace DTO { + +TranscodingProfile::TranscodingProfile(QObject *parent) : QObject(parent) {} + +TranscodingProfile *TranscodingProfile::fromJSON(QJsonObject source, QObject *parent) { + TranscodingProfile *instance = new TranscodingProfile(parent); + instance->updateFromJSON(source); + return instance; +} + +void TranscodingProfile::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TranscodingProfile::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString TranscodingProfile::container() const { return m_container; } +void TranscodingProfile::setContainer(QString newContainer) { + m_container = newContainer; + emit containerChanged(newContainer); +} + +DlnaProfileType TranscodingProfile::type() const { return m_type; } +void TranscodingProfile::setType(DlnaProfileType newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString TranscodingProfile::videoCodec() const { return m_videoCodec; } +void TranscodingProfile::setVideoCodec(QString newVideoCodec) { + m_videoCodec = newVideoCodec; + emit videoCodecChanged(newVideoCodec); +} + +QString TranscodingProfile::audioCodec() const { return m_audioCodec; } +void TranscodingProfile::setAudioCodec(QString newAudioCodec) { + m_audioCodec = newAudioCodec; + emit audioCodecChanged(newAudioCodec); +} + +QString TranscodingProfile::protocol() const { return m_protocol; } +void TranscodingProfile::setProtocol(QString newProtocol) { + m_protocol = newProtocol; + emit protocolChanged(newProtocol); +} + +bool TranscodingProfile::estimateContentLength() const { return m_estimateContentLength; } +void TranscodingProfile::setEstimateContentLength(bool newEstimateContentLength) { + m_estimateContentLength = newEstimateContentLength; + emit estimateContentLengthChanged(newEstimateContentLength); +} + +bool TranscodingProfile::enableMpegtsM2TsMode() const { return m_enableMpegtsM2TsMode; } +void TranscodingProfile::setEnableMpegtsM2TsMode(bool newEnableMpegtsM2TsMode) { + m_enableMpegtsM2TsMode = newEnableMpegtsM2TsMode; + emit enableMpegtsM2TsModeChanged(newEnableMpegtsM2TsMode); +} + +TranscodeSeekInfo TranscodingProfile::transcodeSeekInfo() const { return m_transcodeSeekInfo; } +void TranscodingProfile::setTranscodeSeekInfo(TranscodeSeekInfo newTranscodeSeekInfo) { + m_transcodeSeekInfo = newTranscodeSeekInfo; + emit transcodeSeekInfoChanged(newTranscodeSeekInfo); +} + +bool TranscodingProfile::copyTimestamps() const { return m_copyTimestamps; } +void TranscodingProfile::setCopyTimestamps(bool newCopyTimestamps) { + m_copyTimestamps = newCopyTimestamps; + emit copyTimestampsChanged(newCopyTimestamps); +} + +EncodingContext TranscodingProfile::context() const { return m_context; } +void TranscodingProfile::setContext(EncodingContext newContext) { + m_context = newContext; + emit contextChanged(newContext); +} + +bool TranscodingProfile::enableSubtitlesInManifest() const { return m_enableSubtitlesInManifest; } +void TranscodingProfile::setEnableSubtitlesInManifest(bool newEnableSubtitlesInManifest) { + m_enableSubtitlesInManifest = newEnableSubtitlesInManifest; + emit enableSubtitlesInManifestChanged(newEnableSubtitlesInManifest); +} + +QString TranscodingProfile::maxAudioChannels() const { return m_maxAudioChannels; } +void TranscodingProfile::setMaxAudioChannels(QString newMaxAudioChannels) { + m_maxAudioChannels = newMaxAudioChannels; + emit maxAudioChannelsChanged(newMaxAudioChannels); +} + +qint32 TranscodingProfile::minSegments() const { return m_minSegments; } +void TranscodingProfile::setMinSegments(qint32 newMinSegments) { + m_minSegments = newMinSegments; + emit minSegmentsChanged(newMinSegments); +} + +qint32 TranscodingProfile::segmentLength() const { return m_segmentLength; } +void TranscodingProfile::setSegmentLength(qint32 newSegmentLength) { + m_segmentLength = newSegmentLength; + emit segmentLengthChanged(newSegmentLength); +} + +bool TranscodingProfile::breakOnNonKeyFrames() const { return m_breakOnNonKeyFrames; } +void TranscodingProfile::setBreakOnNonKeyFrames(bool newBreakOnNonKeyFrames) { + m_breakOnNonKeyFrames = newBreakOnNonKeyFrames; + emit breakOnNonKeyFramesChanged(newBreakOnNonKeyFrames); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/transportstreamtimestamp.cpp b/core/src/DTO/transportstreamtimestamp.cpp new file mode 100644 index 0000000..4771191 --- /dev/null +++ b/core/src/DTO/transportstreamtimestamp.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TransportStreamTimestampClass::TransportStreamTimestampClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/tunerchannelmapping.cpp b/core/src/DTO/tunerchannelmapping.cpp new file mode 100644 index 0000000..90548cc --- /dev/null +++ b/core/src/DTO/tunerchannelmapping.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TunerChannelMapping::TunerChannelMapping(QObject *parent) : QObject(parent) {} + +TunerChannelMapping *TunerChannelMapping::fromJSON(QJsonObject source, QObject *parent) { + TunerChannelMapping *instance = new TunerChannelMapping(parent); + instance->updateFromJSON(source); + return instance; +} + +void TunerChannelMapping::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TunerChannelMapping::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString TunerChannelMapping::name() const { return m_name; } +void TunerChannelMapping::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString TunerChannelMapping::providerChannelName() const { return m_providerChannelName; } +void TunerChannelMapping::setProviderChannelName(QString newProviderChannelName) { + m_providerChannelName = newProviderChannelName; + emit providerChannelNameChanged(newProviderChannelName); +} + +QString TunerChannelMapping::providerChannelId() const { return m_providerChannelId; } +void TunerChannelMapping::setProviderChannelId(QString newProviderChannelId) { + m_providerChannelId = newProviderChannelId; + emit providerChannelIdChanged(newProviderChannelId); +} + +QString TunerChannelMapping::jellyfinId() const { return m_jellyfinId; } +void TunerChannelMapping::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/tunerhostinfo.cpp b/core/src/DTO/tunerhostinfo.cpp new file mode 100644 index 0000000..3a478c9 --- /dev/null +++ b/core/src/DTO/tunerhostinfo.cpp @@ -0,0 +1,119 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TunerHostInfo::TunerHostInfo(QObject *parent) : QObject(parent) {} + +TunerHostInfo *TunerHostInfo::fromJSON(QJsonObject source, QObject *parent) { + TunerHostInfo *instance = new TunerHostInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void TunerHostInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TunerHostInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString TunerHostInfo::jellyfinId() const { return m_jellyfinId; } +void TunerHostInfo::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString TunerHostInfo::url() const { return m_url; } +void TunerHostInfo::setUrl(QString newUrl) { + m_url = newUrl; + emit urlChanged(newUrl); +} + +QString TunerHostInfo::type() const { return m_type; } +void TunerHostInfo::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QString TunerHostInfo::deviceId() const { return m_deviceId; } +void TunerHostInfo::setDeviceId(QString newDeviceId) { + m_deviceId = newDeviceId; + emit deviceIdChanged(newDeviceId); +} + +QString TunerHostInfo::friendlyName() const { return m_friendlyName; } +void TunerHostInfo::setFriendlyName(QString newFriendlyName) { + m_friendlyName = newFriendlyName; + emit friendlyNameChanged(newFriendlyName); +} + +bool TunerHostInfo::importFavoritesOnly() const { return m_importFavoritesOnly; } +void TunerHostInfo::setImportFavoritesOnly(bool newImportFavoritesOnly) { + m_importFavoritesOnly = newImportFavoritesOnly; + emit importFavoritesOnlyChanged(newImportFavoritesOnly); +} + +bool TunerHostInfo::allowHWTranscoding() const { return m_allowHWTranscoding; } +void TunerHostInfo::setAllowHWTranscoding(bool newAllowHWTranscoding) { + m_allowHWTranscoding = newAllowHWTranscoding; + emit allowHWTranscodingChanged(newAllowHWTranscoding); +} + +bool TunerHostInfo::enableStreamLooping() const { return m_enableStreamLooping; } +void TunerHostInfo::setEnableStreamLooping(bool newEnableStreamLooping) { + m_enableStreamLooping = newEnableStreamLooping; + emit enableStreamLoopingChanged(newEnableStreamLooping); +} + +QString TunerHostInfo::source() const { return m_source; } +void TunerHostInfo::setSource(QString newSource) { + m_source = newSource; + emit sourceChanged(newSource); +} + +qint32 TunerHostInfo::tunerCount() const { return m_tunerCount; } +void TunerHostInfo::setTunerCount(qint32 newTunerCount) { + m_tunerCount = newTunerCount; + emit tunerCountChanged(newTunerCount); +} + +QString TunerHostInfo::userAgent() const { return m_userAgent; } +void TunerHostInfo::setUserAgent(QString newUserAgent) { + m_userAgent = newUserAgent; + emit userAgentChanged(newUserAgent); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/typeoptions.cpp b/core/src/DTO/typeoptions.cpp new file mode 100644 index 0000000..418f8c9 --- /dev/null +++ b/core/src/DTO/typeoptions.cpp @@ -0,0 +1,89 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +TypeOptions::TypeOptions(QObject *parent) : QObject(parent) {} + +TypeOptions *TypeOptions::fromJSON(QJsonObject source, QObject *parent) { + TypeOptions *instance = new TypeOptions(parent); + instance->updateFromJSON(source); + return instance; +} + +void TypeOptions::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject TypeOptions::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString TypeOptions::type() const { return m_type; } +void TypeOptions::setType(QString newType) { + m_type = newType; + emit typeChanged(newType); +} + +QStringList TypeOptions::metadataFetchers() const { return m_metadataFetchers; } +void TypeOptions::setMetadataFetchers(QStringList newMetadataFetchers) { + m_metadataFetchers = newMetadataFetchers; + emit metadataFetchersChanged(newMetadataFetchers); +} + +QStringList TypeOptions::metadataFetcherOrder() const { return m_metadataFetcherOrder; } +void TypeOptions::setMetadataFetcherOrder(QStringList newMetadataFetcherOrder) { + m_metadataFetcherOrder = newMetadataFetcherOrder; + emit metadataFetcherOrderChanged(newMetadataFetcherOrder); +} + +QStringList TypeOptions::imageFetchers() const { return m_imageFetchers; } +void TypeOptions::setImageFetchers(QStringList newImageFetchers) { + m_imageFetchers = newImageFetchers; + emit imageFetchersChanged(newImageFetchers); +} + +QStringList TypeOptions::imageFetcherOrder() const { return m_imageFetcherOrder; } +void TypeOptions::setImageFetcherOrder(QStringList newImageFetcherOrder) { + m_imageFetcherOrder = newImageFetcherOrder; + emit imageFetcherOrderChanged(newImageFetcherOrder); +} + +QList TypeOptions::imageOptions() const { return m_imageOptions; } +void TypeOptions::setImageOptions(QList newImageOptions) { + m_imageOptions = newImageOptions; + emit imageOptionsChanged(newImageOptions); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/unrateditem.cpp b/core/src/DTO/unrateditem.cpp new file mode 100644 index 0000000..533e1fe --- /dev/null +++ b/core/src/DTO/unrateditem.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +UnratedItemClass::UnratedItemClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/updatelibraryoptionsdto.cpp b/core/src/DTO/updatelibraryoptionsdto.cpp new file mode 100644 index 0000000..2fbe1b8 --- /dev/null +++ b/core/src/DTO/updatelibraryoptionsdto.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +UpdateLibraryOptionsDto::UpdateLibraryOptionsDto(QObject *parent) : QObject(parent) {} + +UpdateLibraryOptionsDto *UpdateLibraryOptionsDto::fromJSON(QJsonObject source, QObject *parent) { + UpdateLibraryOptionsDto *instance = new UpdateLibraryOptionsDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void UpdateLibraryOptionsDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject UpdateLibraryOptionsDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString UpdateLibraryOptionsDto::jellyfinId() const { return m_jellyfinId; } +void UpdateLibraryOptionsDto::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +LibraryOptions * UpdateLibraryOptionsDto::libraryOptions() const { return m_libraryOptions; } +void UpdateLibraryOptionsDto::setLibraryOptions(LibraryOptions * newLibraryOptions) { + m_libraryOptions = newLibraryOptions; + emit libraryOptionsChanged(newLibraryOptions); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/updateusereasypassword.cpp b/core/src/DTO/updateusereasypassword.cpp new file mode 100644 index 0000000..8ceebc8 --- /dev/null +++ b/core/src/DTO/updateusereasypassword.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +UpdateUserEasyPassword::UpdateUserEasyPassword(QObject *parent) : QObject(parent) {} + +UpdateUserEasyPassword *UpdateUserEasyPassword::fromJSON(QJsonObject source, QObject *parent) { + UpdateUserEasyPassword *instance = new UpdateUserEasyPassword(parent); + instance->updateFromJSON(source); + return instance; +} + +void UpdateUserEasyPassword::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject UpdateUserEasyPassword::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString UpdateUserEasyPassword::newPassword() const { return m_newPassword; } +void UpdateUserEasyPassword::setNewPassword(QString newNewPassword) { + m_newPassword = newNewPassword; + emit newPasswordChanged(newNewPassword); +} + +QString UpdateUserEasyPassword::newPw() const { return m_newPw; } +void UpdateUserEasyPassword::setNewPw(QString newNewPw) { + m_newPw = newNewPw; + emit newPwChanged(newNewPw); +} + +bool UpdateUserEasyPassword::resetPassword() const { return m_resetPassword; } +void UpdateUserEasyPassword::setResetPassword(bool newResetPassword) { + m_resetPassword = newResetPassword; + emit resetPasswordChanged(newResetPassword); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/updateuserpassword.cpp b/core/src/DTO/updateuserpassword.cpp new file mode 100644 index 0000000..cc32f6d --- /dev/null +++ b/core/src/DTO/updateuserpassword.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +UpdateUserPassword::UpdateUserPassword(QObject *parent) : QObject(parent) {} + +UpdateUserPassword *UpdateUserPassword::fromJSON(QJsonObject source, QObject *parent) { + UpdateUserPassword *instance = new UpdateUserPassword(parent); + instance->updateFromJSON(source); + return instance; +} + +void UpdateUserPassword::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject UpdateUserPassword::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString UpdateUserPassword::currentPassword() const { return m_currentPassword; } +void UpdateUserPassword::setCurrentPassword(QString newCurrentPassword) { + m_currentPassword = newCurrentPassword; + emit currentPasswordChanged(newCurrentPassword); +} + +QString UpdateUserPassword::currentPw() const { return m_currentPw; } +void UpdateUserPassword::setCurrentPw(QString newCurrentPw) { + m_currentPw = newCurrentPw; + emit currentPwChanged(newCurrentPw); +} + +QString UpdateUserPassword::newPw() const { return m_newPw; } +void UpdateUserPassword::setNewPw(QString newNewPw) { + m_newPw = newNewPw; + emit newPwChanged(newNewPw); +} + +bool UpdateUserPassword::resetPassword() const { return m_resetPassword; } +void UpdateUserPassword::setResetPassword(bool newResetPassword) { + m_resetPassword = newResetPassword; + emit resetPasswordChanged(newResetPassword); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/uploadsubtitledto.cpp b/core/src/DTO/uploadsubtitledto.cpp new file mode 100644 index 0000000..eb66d04 --- /dev/null +++ b/core/src/DTO/uploadsubtitledto.cpp @@ -0,0 +1,77 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +UploadSubtitleDto::UploadSubtitleDto(QObject *parent) : QObject(parent) {} + +UploadSubtitleDto *UploadSubtitleDto::fromJSON(QJsonObject source, QObject *parent) { + UploadSubtitleDto *instance = new UploadSubtitleDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void UploadSubtitleDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject UploadSubtitleDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString UploadSubtitleDto::language() const { return m_language; } +void UploadSubtitleDto::setLanguage(QString newLanguage) { + m_language = newLanguage; + emit languageChanged(newLanguage); +} + +QString UploadSubtitleDto::format() const { return m_format; } +void UploadSubtitleDto::setFormat(QString newFormat) { + m_format = newFormat; + emit formatChanged(newFormat); +} + +bool UploadSubtitleDto::isForced() const { return m_isForced; } +void UploadSubtitleDto::setIsForced(bool newIsForced) { + m_isForced = newIsForced; + emit isForcedChanged(newIsForced); +} + +QString UploadSubtitleDto::data() const { return m_data; } +void UploadSubtitleDto::setData(QString newData) { + m_data = newData; + emit dataChanged(newData); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/user.cpp b/core/src/DTO/user.cpp new file mode 100644 index 0000000..e69de29 diff --git a/core/src/DTO/userconfiguration.cpp b/core/src/DTO/userconfiguration.cpp new file mode 100644 index 0000000..deeea58 --- /dev/null +++ b/core/src/DTO/userconfiguration.cpp @@ -0,0 +1,145 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include + +namespace Jellyfin { +namespace DTO { + +UserConfiguration::UserConfiguration(QObject *parent) : QObject(parent) {} + +UserConfiguration *UserConfiguration::fromJSON(QJsonObject source, QObject *parent) { + UserConfiguration *instance = new UserConfiguration(parent); + instance->updateFromJSON(source); + return instance; +} + +void UserConfiguration::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject UserConfiguration::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString UserConfiguration::audioLanguagePreference() const { return m_audioLanguagePreference; } +void UserConfiguration::setAudioLanguagePreference(QString newAudioLanguagePreference) { + m_audioLanguagePreference = newAudioLanguagePreference; + emit audioLanguagePreferenceChanged(newAudioLanguagePreference); +} + +bool UserConfiguration::playDefaultAudioTrack() const { return m_playDefaultAudioTrack; } +void UserConfiguration::setPlayDefaultAudioTrack(bool newPlayDefaultAudioTrack) { + m_playDefaultAudioTrack = newPlayDefaultAudioTrack; + emit playDefaultAudioTrackChanged(newPlayDefaultAudioTrack); +} + +QString UserConfiguration::subtitleLanguagePreference() const { return m_subtitleLanguagePreference; } +void UserConfiguration::setSubtitleLanguagePreference(QString newSubtitleLanguagePreference) { + m_subtitleLanguagePreference = newSubtitleLanguagePreference; + emit subtitleLanguagePreferenceChanged(newSubtitleLanguagePreference); +} + +bool UserConfiguration::displayMissingEpisodes() const { return m_displayMissingEpisodes; } +void UserConfiguration::setDisplayMissingEpisodes(bool newDisplayMissingEpisodes) { + m_displayMissingEpisodes = newDisplayMissingEpisodes; + emit displayMissingEpisodesChanged(newDisplayMissingEpisodes); +} + +QStringList UserConfiguration::groupedFolders() const { return m_groupedFolders; } +void UserConfiguration::setGroupedFolders(QStringList newGroupedFolders) { + m_groupedFolders = newGroupedFolders; + emit groupedFoldersChanged(newGroupedFolders); +} + +SubtitlePlaybackMode UserConfiguration::subtitleMode() const { return m_subtitleMode; } +void UserConfiguration::setSubtitleMode(SubtitlePlaybackMode newSubtitleMode) { + m_subtitleMode = newSubtitleMode; + emit subtitleModeChanged(newSubtitleMode); +} + +bool UserConfiguration::displayCollectionsView() const { return m_displayCollectionsView; } +void UserConfiguration::setDisplayCollectionsView(bool newDisplayCollectionsView) { + m_displayCollectionsView = newDisplayCollectionsView; + emit displayCollectionsViewChanged(newDisplayCollectionsView); +} + +bool UserConfiguration::enableLocalPassword() const { return m_enableLocalPassword; } +void UserConfiguration::setEnableLocalPassword(bool newEnableLocalPassword) { + m_enableLocalPassword = newEnableLocalPassword; + emit enableLocalPasswordChanged(newEnableLocalPassword); +} + +QStringList UserConfiguration::orderedViews() const { return m_orderedViews; } +void UserConfiguration::setOrderedViews(QStringList newOrderedViews) { + m_orderedViews = newOrderedViews; + emit orderedViewsChanged(newOrderedViews); +} + +QStringList UserConfiguration::latestItemsExcludes() const { return m_latestItemsExcludes; } +void UserConfiguration::setLatestItemsExcludes(QStringList newLatestItemsExcludes) { + m_latestItemsExcludes = newLatestItemsExcludes; + emit latestItemsExcludesChanged(newLatestItemsExcludes); +} + +QStringList UserConfiguration::myMediaExcludes() const { return m_myMediaExcludes; } +void UserConfiguration::setMyMediaExcludes(QStringList newMyMediaExcludes) { + m_myMediaExcludes = newMyMediaExcludes; + emit myMediaExcludesChanged(newMyMediaExcludes); +} + +bool UserConfiguration::hidePlayedInLatest() const { return m_hidePlayedInLatest; } +void UserConfiguration::setHidePlayedInLatest(bool newHidePlayedInLatest) { + m_hidePlayedInLatest = newHidePlayedInLatest; + emit hidePlayedInLatestChanged(newHidePlayedInLatest); +} + +bool UserConfiguration::rememberAudioSelections() const { return m_rememberAudioSelections; } +void UserConfiguration::setRememberAudioSelections(bool newRememberAudioSelections) { + m_rememberAudioSelections = newRememberAudioSelections; + emit rememberAudioSelectionsChanged(newRememberAudioSelections); +} + +bool UserConfiguration::rememberSubtitleSelections() const { return m_rememberSubtitleSelections; } +void UserConfiguration::setRememberSubtitleSelections(bool newRememberSubtitleSelections) { + m_rememberSubtitleSelections = newRememberSubtitleSelections; + emit rememberSubtitleSelectionsChanged(newRememberSubtitleSelections); +} + +bool UserConfiguration::enableNextEpisodeAutoPlay() const { return m_enableNextEpisodeAutoPlay; } +void UserConfiguration::setEnableNextEpisodeAutoPlay(bool newEnableNextEpisodeAutoPlay) { + m_enableNextEpisodeAutoPlay = newEnableNextEpisodeAutoPlay; + emit enableNextEpisodeAutoPlayChanged(newEnableNextEpisodeAutoPlay); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/userdata.cpp b/core/src/DTO/userdata.cpp new file mode 100644 index 0000000..e69de29 diff --git a/core/src/DTO/userdto.cpp b/core/src/DTO/userdto.cpp new file mode 100644 index 0000000..43957d6 --- /dev/null +++ b/core/src/DTO/userdto.cpp @@ -0,0 +1,137 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +UserDto::UserDto(QObject *parent) : QObject(parent) {} + +UserDto *UserDto::fromJSON(QJsonObject source, QObject *parent) { + UserDto *instance = new UserDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void UserDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject UserDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString UserDto::name() const { return m_name; } +void UserDto::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString UserDto::serverId() const { return m_serverId; } +void UserDto::setServerId(QString newServerId) { + m_serverId = newServerId; + emit serverIdChanged(newServerId); +} + +QString UserDto::serverName() const { return m_serverName; } +void UserDto::setServerName(QString newServerName) { + m_serverName = newServerName; + emit serverNameChanged(newServerName); +} + +QString UserDto::jellyfinId() const { return m_jellyfinId; } +void UserDto::setJellyfinId(QString newJellyfinId) { + m_jellyfinId = newJellyfinId; + emit jellyfinIdChanged(newJellyfinId); +} + +QString UserDto::primaryImageTag() const { return m_primaryImageTag; } +void UserDto::setPrimaryImageTag(QString newPrimaryImageTag) { + m_primaryImageTag = newPrimaryImageTag; + emit primaryImageTagChanged(newPrimaryImageTag); +} + +bool UserDto::hasPassword() const { return m_hasPassword; } +void UserDto::setHasPassword(bool newHasPassword) { + m_hasPassword = newHasPassword; + emit hasPasswordChanged(newHasPassword); +} + +bool UserDto::hasConfiguredPassword() const { return m_hasConfiguredPassword; } +void UserDto::setHasConfiguredPassword(bool newHasConfiguredPassword) { + m_hasConfiguredPassword = newHasConfiguredPassword; + emit hasConfiguredPasswordChanged(newHasConfiguredPassword); +} + +bool UserDto::hasConfiguredEasyPassword() const { return m_hasConfiguredEasyPassword; } +void UserDto::setHasConfiguredEasyPassword(bool newHasConfiguredEasyPassword) { + m_hasConfiguredEasyPassword = newHasConfiguredEasyPassword; + emit hasConfiguredEasyPasswordChanged(newHasConfiguredEasyPassword); +} + +bool UserDto::enableAutoLogin() const { return m_enableAutoLogin; } +void UserDto::setEnableAutoLogin(bool newEnableAutoLogin) { + m_enableAutoLogin = newEnableAutoLogin; + emit enableAutoLoginChanged(newEnableAutoLogin); +} + +QDateTime UserDto::lastLoginDate() const { return m_lastLoginDate; } +void UserDto::setLastLoginDate(QDateTime newLastLoginDate) { + m_lastLoginDate = newLastLoginDate; + emit lastLoginDateChanged(newLastLoginDate); +} + +QDateTime UserDto::lastActivityDate() const { return m_lastActivityDate; } +void UserDto::setLastActivityDate(QDateTime newLastActivityDate) { + m_lastActivityDate = newLastActivityDate; + emit lastActivityDateChanged(newLastActivityDate); +} + +UserConfiguration * UserDto::configuration() const { return m_configuration; } +void UserDto::setConfiguration(UserConfiguration * newConfiguration) { + m_configuration = newConfiguration; + emit configurationChanged(newConfiguration); +} + +UserPolicy * UserDto::policy() const { return m_policy; } +void UserDto::setPolicy(UserPolicy * newPolicy) { + m_policy = newPolicy; + emit policyChanged(newPolicy); +} + +double UserDto::primaryImageAspectRatio() const { return m_primaryImageAspectRatio; } +void UserDto::setPrimaryImageAspectRatio(double newPrimaryImageAspectRatio) { + m_primaryImageAspectRatio = newPrimaryImageAspectRatio; + emit primaryImageAspectRatioChanged(newPrimaryImageAspectRatio); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/useritemdatadto.cpp b/core/src/DTO/useritemdatadto.cpp new file mode 100644 index 0000000..ac0369f --- /dev/null +++ b/core/src/DTO/useritemdatadto.cpp @@ -0,0 +1,119 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +UserItemDataDto::UserItemDataDto(QObject *parent) : QObject(parent) {} + +UserItemDataDto *UserItemDataDto::fromJSON(QJsonObject source, QObject *parent) { + UserItemDataDto *instance = new UserItemDataDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void UserItemDataDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject UserItemDataDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +double UserItemDataDto::rating() const { return m_rating; } +void UserItemDataDto::setRating(double newRating) { + m_rating = newRating; + emit ratingChanged(newRating); +} + +double UserItemDataDto::playedPercentage() const { return m_playedPercentage; } +void UserItemDataDto::setPlayedPercentage(double newPlayedPercentage) { + m_playedPercentage = newPlayedPercentage; + emit playedPercentageChanged(newPlayedPercentage); +} + +qint32 UserItemDataDto::unplayedItemCount() const { return m_unplayedItemCount; } +void UserItemDataDto::setUnplayedItemCount(qint32 newUnplayedItemCount) { + m_unplayedItemCount = newUnplayedItemCount; + emit unplayedItemCountChanged(newUnplayedItemCount); +} + +qint64 UserItemDataDto::playbackPositionTicks() const { return m_playbackPositionTicks; } +void UserItemDataDto::setPlaybackPositionTicks(qint64 newPlaybackPositionTicks) { + m_playbackPositionTicks = newPlaybackPositionTicks; + emit playbackPositionTicksChanged(newPlaybackPositionTicks); +} + +qint32 UserItemDataDto::playCount() const { return m_playCount; } +void UserItemDataDto::setPlayCount(qint32 newPlayCount) { + m_playCount = newPlayCount; + emit playCountChanged(newPlayCount); +} + +bool UserItemDataDto::isFavorite() const { return m_isFavorite; } +void UserItemDataDto::setIsFavorite(bool newIsFavorite) { + m_isFavorite = newIsFavorite; + emit isFavoriteChanged(newIsFavorite); +} + +bool UserItemDataDto::likes() const { return m_likes; } +void UserItemDataDto::setLikes(bool newLikes) { + m_likes = newLikes; + emit likesChanged(newLikes); +} + +QDateTime UserItemDataDto::lastPlayedDate() const { return m_lastPlayedDate; } +void UserItemDataDto::setLastPlayedDate(QDateTime newLastPlayedDate) { + m_lastPlayedDate = newLastPlayedDate; + emit lastPlayedDateChanged(newLastPlayedDate); +} + +bool UserItemDataDto::played() const { return m_played; } +void UserItemDataDto::setPlayed(bool newPlayed) { + m_played = newPlayed; + emit playedChanged(newPlayed); +} + +QString UserItemDataDto::key() const { return m_key; } +void UserItemDataDto::setKey(QString newKey) { + m_key = newKey; + emit keyChanged(newKey); +} + +QString UserItemDataDto::itemId() const { return m_itemId; } +void UserItemDataDto::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/userpolicy.cpp b/core/src/DTO/userpolicy.cpp new file mode 100644 index 0000000..901ae81 --- /dev/null +++ b/core/src/DTO/userpolicy.cpp @@ -0,0 +1,290 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +#include +#include + +namespace Jellyfin { +namespace DTO { + +UserPolicy::UserPolicy(QObject *parent) : QObject(parent) {} + +UserPolicy *UserPolicy::fromJSON(QJsonObject source, QObject *parent) { + UserPolicy *instance = new UserPolicy(parent); + instance->updateFromJSON(source); + return instance; +} + +void UserPolicy::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject UserPolicy::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +bool UserPolicy::isAdministrator() const { return m_isAdministrator; } +void UserPolicy::setIsAdministrator(bool newIsAdministrator) { + m_isAdministrator = newIsAdministrator; + emit isAdministratorChanged(newIsAdministrator); +} + +bool UserPolicy::isHidden() const { return m_isHidden; } +void UserPolicy::setIsHidden(bool newIsHidden) { + m_isHidden = newIsHidden; + emit isHiddenChanged(newIsHidden); +} + +bool UserPolicy::isDisabled() const { return m_isDisabled; } +void UserPolicy::setIsDisabled(bool newIsDisabled) { + m_isDisabled = newIsDisabled; + emit isDisabledChanged(newIsDisabled); +} + +qint32 UserPolicy::maxParentalRating() const { return m_maxParentalRating; } +void UserPolicy::setMaxParentalRating(qint32 newMaxParentalRating) { + m_maxParentalRating = newMaxParentalRating; + emit maxParentalRatingChanged(newMaxParentalRating); +} + +QStringList UserPolicy::blockedTags() const { return m_blockedTags; } +void UserPolicy::setBlockedTags(QStringList newBlockedTags) { + m_blockedTags = newBlockedTags; + emit blockedTagsChanged(newBlockedTags); +} + +bool UserPolicy::enableUserPreferenceAccess() const { return m_enableUserPreferenceAccess; } +void UserPolicy::setEnableUserPreferenceAccess(bool newEnableUserPreferenceAccess) { + m_enableUserPreferenceAccess = newEnableUserPreferenceAccess; + emit enableUserPreferenceAccessChanged(newEnableUserPreferenceAccess); +} + +QList UserPolicy::accessSchedules() const { return m_accessSchedules; } +void UserPolicy::setAccessSchedules(QList newAccessSchedules) { + m_accessSchedules = newAccessSchedules; + emit accessSchedulesChanged(newAccessSchedules); +} + +QList UserPolicy::blockUnratedItems() const { return m_blockUnratedItems; } +void UserPolicy::setBlockUnratedItems(QList newBlockUnratedItems) { + m_blockUnratedItems = newBlockUnratedItems; + emit blockUnratedItemsChanged(newBlockUnratedItems); +} + +bool UserPolicy::enableRemoteControlOfOtherUsers() const { return m_enableRemoteControlOfOtherUsers; } +void UserPolicy::setEnableRemoteControlOfOtherUsers(bool newEnableRemoteControlOfOtherUsers) { + m_enableRemoteControlOfOtherUsers = newEnableRemoteControlOfOtherUsers; + emit enableRemoteControlOfOtherUsersChanged(newEnableRemoteControlOfOtherUsers); +} + +bool UserPolicy::enableSharedDeviceControl() const { return m_enableSharedDeviceControl; } +void UserPolicy::setEnableSharedDeviceControl(bool newEnableSharedDeviceControl) { + m_enableSharedDeviceControl = newEnableSharedDeviceControl; + emit enableSharedDeviceControlChanged(newEnableSharedDeviceControl); +} + +bool UserPolicy::enableRemoteAccess() const { return m_enableRemoteAccess; } +void UserPolicy::setEnableRemoteAccess(bool newEnableRemoteAccess) { + m_enableRemoteAccess = newEnableRemoteAccess; + emit enableRemoteAccessChanged(newEnableRemoteAccess); +} + +bool UserPolicy::enableLiveTvManagement() const { return m_enableLiveTvManagement; } +void UserPolicy::setEnableLiveTvManagement(bool newEnableLiveTvManagement) { + m_enableLiveTvManagement = newEnableLiveTvManagement; + emit enableLiveTvManagementChanged(newEnableLiveTvManagement); +} + +bool UserPolicy::enableLiveTvAccess() const { return m_enableLiveTvAccess; } +void UserPolicy::setEnableLiveTvAccess(bool newEnableLiveTvAccess) { + m_enableLiveTvAccess = newEnableLiveTvAccess; + emit enableLiveTvAccessChanged(newEnableLiveTvAccess); +} + +bool UserPolicy::enableMediaPlayback() const { return m_enableMediaPlayback; } +void UserPolicy::setEnableMediaPlayback(bool newEnableMediaPlayback) { + m_enableMediaPlayback = newEnableMediaPlayback; + emit enableMediaPlaybackChanged(newEnableMediaPlayback); +} + +bool UserPolicy::enableAudioPlaybackTranscoding() const { return m_enableAudioPlaybackTranscoding; } +void UserPolicy::setEnableAudioPlaybackTranscoding(bool newEnableAudioPlaybackTranscoding) { + m_enableAudioPlaybackTranscoding = newEnableAudioPlaybackTranscoding; + emit enableAudioPlaybackTranscodingChanged(newEnableAudioPlaybackTranscoding); +} + +bool UserPolicy::enableVideoPlaybackTranscoding() const { return m_enableVideoPlaybackTranscoding; } +void UserPolicy::setEnableVideoPlaybackTranscoding(bool newEnableVideoPlaybackTranscoding) { + m_enableVideoPlaybackTranscoding = newEnableVideoPlaybackTranscoding; + emit enableVideoPlaybackTranscodingChanged(newEnableVideoPlaybackTranscoding); +} + +bool UserPolicy::enablePlaybackRemuxing() const { return m_enablePlaybackRemuxing; } +void UserPolicy::setEnablePlaybackRemuxing(bool newEnablePlaybackRemuxing) { + m_enablePlaybackRemuxing = newEnablePlaybackRemuxing; + emit enablePlaybackRemuxingChanged(newEnablePlaybackRemuxing); +} + +bool UserPolicy::forceRemoteSourceTranscoding() const { return m_forceRemoteSourceTranscoding; } +void UserPolicy::setForceRemoteSourceTranscoding(bool newForceRemoteSourceTranscoding) { + m_forceRemoteSourceTranscoding = newForceRemoteSourceTranscoding; + emit forceRemoteSourceTranscodingChanged(newForceRemoteSourceTranscoding); +} + +bool UserPolicy::enableContentDeletion() const { return m_enableContentDeletion; } +void UserPolicy::setEnableContentDeletion(bool newEnableContentDeletion) { + m_enableContentDeletion = newEnableContentDeletion; + emit enableContentDeletionChanged(newEnableContentDeletion); +} + +QStringList UserPolicy::enableContentDeletionFromFolders() const { return m_enableContentDeletionFromFolders; } +void UserPolicy::setEnableContentDeletionFromFolders(QStringList newEnableContentDeletionFromFolders) { + m_enableContentDeletionFromFolders = newEnableContentDeletionFromFolders; + emit enableContentDeletionFromFoldersChanged(newEnableContentDeletionFromFolders); +} + +bool UserPolicy::enableContentDownloading() const { return m_enableContentDownloading; } +void UserPolicy::setEnableContentDownloading(bool newEnableContentDownloading) { + m_enableContentDownloading = newEnableContentDownloading; + emit enableContentDownloadingChanged(newEnableContentDownloading); +} + +bool UserPolicy::enableSyncTranscoding() const { return m_enableSyncTranscoding; } +void UserPolicy::setEnableSyncTranscoding(bool newEnableSyncTranscoding) { + m_enableSyncTranscoding = newEnableSyncTranscoding; + emit enableSyncTranscodingChanged(newEnableSyncTranscoding); +} + +bool UserPolicy::enableMediaConversion() const { return m_enableMediaConversion; } +void UserPolicy::setEnableMediaConversion(bool newEnableMediaConversion) { + m_enableMediaConversion = newEnableMediaConversion; + emit enableMediaConversionChanged(newEnableMediaConversion); +} + +QStringList UserPolicy::enabledDevices() const { return m_enabledDevices; } +void UserPolicy::setEnabledDevices(QStringList newEnabledDevices) { + m_enabledDevices = newEnabledDevices; + emit enabledDevicesChanged(newEnabledDevices); +} + +bool UserPolicy::enableAllDevices() const { return m_enableAllDevices; } +void UserPolicy::setEnableAllDevices(bool newEnableAllDevices) { + m_enableAllDevices = newEnableAllDevices; + emit enableAllDevicesChanged(newEnableAllDevices); +} + +QStringList UserPolicy::enabledChannels() const { return m_enabledChannels; } +void UserPolicy::setEnabledChannels(QStringList newEnabledChannels) { + m_enabledChannels = newEnabledChannels; + emit enabledChannelsChanged(newEnabledChannels); +} + +bool UserPolicy::enableAllChannels() const { return m_enableAllChannels; } +void UserPolicy::setEnableAllChannels(bool newEnableAllChannels) { + m_enableAllChannels = newEnableAllChannels; + emit enableAllChannelsChanged(newEnableAllChannels); +} + +QStringList UserPolicy::enabledFolders() const { return m_enabledFolders; } +void UserPolicy::setEnabledFolders(QStringList newEnabledFolders) { + m_enabledFolders = newEnabledFolders; + emit enabledFoldersChanged(newEnabledFolders); +} + +bool UserPolicy::enableAllFolders() const { return m_enableAllFolders; } +void UserPolicy::setEnableAllFolders(bool newEnableAllFolders) { + m_enableAllFolders = newEnableAllFolders; + emit enableAllFoldersChanged(newEnableAllFolders); +} + +qint32 UserPolicy::invalidLoginAttemptCount() const { return m_invalidLoginAttemptCount; } +void UserPolicy::setInvalidLoginAttemptCount(qint32 newInvalidLoginAttemptCount) { + m_invalidLoginAttemptCount = newInvalidLoginAttemptCount; + emit invalidLoginAttemptCountChanged(newInvalidLoginAttemptCount); +} + +qint32 UserPolicy::loginAttemptsBeforeLockout() const { return m_loginAttemptsBeforeLockout; } +void UserPolicy::setLoginAttemptsBeforeLockout(qint32 newLoginAttemptsBeforeLockout) { + m_loginAttemptsBeforeLockout = newLoginAttemptsBeforeLockout; + emit loginAttemptsBeforeLockoutChanged(newLoginAttemptsBeforeLockout); +} + +qint32 UserPolicy::maxActiveSessions() const { return m_maxActiveSessions; } +void UserPolicy::setMaxActiveSessions(qint32 newMaxActiveSessions) { + m_maxActiveSessions = newMaxActiveSessions; + emit maxActiveSessionsChanged(newMaxActiveSessions); +} + +bool UserPolicy::enablePublicSharing() const { return m_enablePublicSharing; } +void UserPolicy::setEnablePublicSharing(bool newEnablePublicSharing) { + m_enablePublicSharing = newEnablePublicSharing; + emit enablePublicSharingChanged(newEnablePublicSharing); +} + +QStringList UserPolicy::blockedMediaFolders() const { return m_blockedMediaFolders; } +void UserPolicy::setBlockedMediaFolders(QStringList newBlockedMediaFolders) { + m_blockedMediaFolders = newBlockedMediaFolders; + emit blockedMediaFoldersChanged(newBlockedMediaFolders); +} + +QStringList UserPolicy::blockedChannels() const { return m_blockedChannels; } +void UserPolicy::setBlockedChannels(QStringList newBlockedChannels) { + m_blockedChannels = newBlockedChannels; + emit blockedChannelsChanged(newBlockedChannels); +} + +qint32 UserPolicy::remoteClientBitrateLimit() const { return m_remoteClientBitrateLimit; } +void UserPolicy::setRemoteClientBitrateLimit(qint32 newRemoteClientBitrateLimit) { + m_remoteClientBitrateLimit = newRemoteClientBitrateLimit; + emit remoteClientBitrateLimitChanged(newRemoteClientBitrateLimit); +} + +QString UserPolicy::authenticationProviderId() const { return m_authenticationProviderId; } +void UserPolicy::setAuthenticationProviderId(QString newAuthenticationProviderId) { + m_authenticationProviderId = newAuthenticationProviderId; + emit authenticationProviderIdChanged(newAuthenticationProviderId); +} + +QString UserPolicy::passwordResetProviderId() const { return m_passwordResetProviderId; } +void UserPolicy::setPasswordResetProviderId(QString newPasswordResetProviderId) { + m_passwordResetProviderId = newPasswordResetProviderId; + emit passwordResetProviderIdChanged(newPasswordResetProviderId); +} + +SyncPlayUserAccessType UserPolicy::syncPlayAccess() const { return m_syncPlayAccess; } +void UserPolicy::setSyncPlayAccess(SyncPlayUserAccessType newSyncPlayAccess) { + m_syncPlayAccess = newSyncPlayAccess; + emit syncPlayAccessChanged(newSyncPlayAccess); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/utctimeresponse.cpp b/core/src/DTO/utctimeresponse.cpp new file mode 100644 index 0000000..e67586e --- /dev/null +++ b/core/src/DTO/utctimeresponse.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +UtcTimeResponse::UtcTimeResponse(QObject *parent) : QObject(parent) {} + +UtcTimeResponse *UtcTimeResponse::fromJSON(QJsonObject source, QObject *parent) { + UtcTimeResponse *instance = new UtcTimeResponse(parent); + instance->updateFromJSON(source); + return instance; +} + +void UtcTimeResponse::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject UtcTimeResponse::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QDateTime UtcTimeResponse::requestReceptionTime() const { return m_requestReceptionTime; } +void UtcTimeResponse::setRequestReceptionTime(QDateTime newRequestReceptionTime) { + m_requestReceptionTime = newRequestReceptionTime; + emit requestReceptionTimeChanged(newRequestReceptionTime); +} + +QDateTime UtcTimeResponse::responseTransmissionTime() const { return m_responseTransmissionTime; } +void UtcTimeResponse::setResponseTransmissionTime(QDateTime newResponseTransmissionTime) { + m_responseTransmissionTime = newResponseTransmissionTime; + emit responseTransmissionTimeChanged(newResponseTransmissionTime); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/validatepathdto.cpp b/core/src/DTO/validatepathdto.cpp new file mode 100644 index 0000000..884b200 --- /dev/null +++ b/core/src/DTO/validatepathdto.cpp @@ -0,0 +1,71 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +ValidatePathDto::ValidatePathDto(QObject *parent) : QObject(parent) {} + +ValidatePathDto *ValidatePathDto::fromJSON(QJsonObject source, QObject *parent) { + ValidatePathDto *instance = new ValidatePathDto(parent); + instance->updateFromJSON(source); + return instance; +} + +void ValidatePathDto::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject ValidatePathDto::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +bool ValidatePathDto::validateWritable() const { return m_validateWritable; } +void ValidatePathDto::setValidateWritable(bool newValidateWritable) { + m_validateWritable = newValidateWritable; + emit validateWritableChanged(newValidateWritable); +} + +QString ValidatePathDto::path() const { return m_path; } +void ValidatePathDto::setPath(QString newPath) { + m_path = newPath; + emit pathChanged(newPath); +} + +bool ValidatePathDto::isFile() const { return m_isFile; } +void ValidatePathDto::setIsFile(bool newIsFile) { + m_isFile = newIsFile; + emit isFileChanged(newIsFile); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/version.cpp b/core/src/DTO/version.cpp new file mode 100644 index 0000000..963d4e1 --- /dev/null +++ b/core/src/DTO/version.cpp @@ -0,0 +1,89 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +Version::Version(QObject *parent) : QObject(parent) {} + +Version *Version::fromJSON(QJsonObject source, QObject *parent) { + Version *instance = new Version(parent); + instance->updateFromJSON(source); + return instance; +} + +void Version::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject Version::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +qint32 Version::major() const { return m_major; } +void Version::setMajor(qint32 newMajor) { + m_major = newMajor; + emit majorChanged(newMajor); +} + +qint32 Version::minor() const { return m_minor; } +void Version::setMinor(qint32 newMinor) { + m_minor = newMinor; + emit minorChanged(newMinor); +} + +qint32 Version::build() const { return m_build; } +void Version::setBuild(qint32 newBuild) { + m_build = newBuild; + emit buildChanged(newBuild); +} + +qint32 Version::revision() const { return m_revision; } +void Version::setRevision(qint32 newRevision) { + m_revision = newRevision; + emit revisionChanged(newRevision); +} + +qint32 Version::majorRevision() const { return m_majorRevision; } +void Version::setMajorRevision(qint32 newMajorRevision) { + m_majorRevision = newMajorRevision; + emit majorRevisionChanged(newMajorRevision); +} + +qint32 Version::minorRevision() const { return m_minorRevision; } +void Version::setMinorRevision(qint32 newMinorRevision) { + m_minorRevision = newMinorRevision; + emit minorRevisionChanged(newMinorRevision); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/versioninfo.cpp b/core/src/DTO/versioninfo.cpp new file mode 100644 index 0000000..123bc4e --- /dev/null +++ b/core/src/DTO/versioninfo.cpp @@ -0,0 +1,107 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +VersionInfo::VersionInfo(QObject *parent) : QObject(parent) {} + +VersionInfo *VersionInfo::fromJSON(QJsonObject source, QObject *parent) { + VersionInfo *instance = new VersionInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void VersionInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject VersionInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString VersionInfo::version() const { return m_version; } +void VersionInfo::setVersion(QString newVersion) { + m_version = newVersion; + emit versionChanged(newVersion); +} + +Version * VersionInfo::versionNumber() const { return m_versionNumber; } +void VersionInfo::setVersionNumber(Version * newVersionNumber) { + m_versionNumber = newVersionNumber; + emit versionNumberChanged(newVersionNumber); +} + +QString VersionInfo::changelog() const { return m_changelog; } +void VersionInfo::setChangelog(QString newChangelog) { + m_changelog = newChangelog; + emit changelogChanged(newChangelog); +} + +QString VersionInfo::targetAbi() const { return m_targetAbi; } +void VersionInfo::setTargetAbi(QString newTargetAbi) { + m_targetAbi = newTargetAbi; + emit targetAbiChanged(newTargetAbi); +} + +QString VersionInfo::sourceUrl() const { return m_sourceUrl; } +void VersionInfo::setSourceUrl(QString newSourceUrl) { + m_sourceUrl = newSourceUrl; + emit sourceUrlChanged(newSourceUrl); +} + +QString VersionInfo::checksum() const { return m_checksum; } +void VersionInfo::setChecksum(QString newChecksum) { + m_checksum = newChecksum; + emit checksumChanged(newChecksum); +} + +QString VersionInfo::timestamp() const { return m_timestamp; } +void VersionInfo::setTimestamp(QString newTimestamp) { + m_timestamp = newTimestamp; + emit timestampChanged(newTimestamp); +} + +QString VersionInfo::repositoryName() const { return m_repositoryName; } +void VersionInfo::setRepositoryName(QString newRepositoryName) { + m_repositoryName = newRepositoryName; + emit repositoryNameChanged(newRepositoryName); +} + +QString VersionInfo::repositoryUrl() const { return m_repositoryUrl; } +void VersionInfo::setRepositoryUrl(QString newRepositoryUrl) { + m_repositoryUrl = newRepositoryUrl; + emit repositoryUrlChanged(newRepositoryUrl); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/video3dformat.cpp b/core/src/DTO/video3dformat.cpp new file mode 100644 index 0000000..d476d71 --- /dev/null +++ b/core/src/DTO/video3dformat.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +Video3DFormatClass::Video3DFormatClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/videotype.cpp b/core/src/DTO/videotype.cpp new file mode 100644 index 0000000..2527786 --- /dev/null +++ b/core/src/DTO/videotype.cpp @@ -0,0 +1,38 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +VideoTypeClass::VideoTypeClass() {} + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/virtualfolderinfo.cpp b/core/src/DTO/virtualfolderinfo.cpp new file mode 100644 index 0000000..239cfa6 --- /dev/null +++ b/core/src/DTO/virtualfolderinfo.cpp @@ -0,0 +1,101 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +VirtualFolderInfo::VirtualFolderInfo(QObject *parent) : QObject(parent) {} + +VirtualFolderInfo *VirtualFolderInfo::fromJSON(QJsonObject source, QObject *parent) { + VirtualFolderInfo *instance = new VirtualFolderInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void VirtualFolderInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject VirtualFolderInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString VirtualFolderInfo::name() const { return m_name; } +void VirtualFolderInfo::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QStringList VirtualFolderInfo::locations() const { return m_locations; } +void VirtualFolderInfo::setLocations(QStringList newLocations) { + m_locations = newLocations; + emit locationsChanged(newLocations); +} + +QString VirtualFolderInfo::collectionType() const { return m_collectionType; } +void VirtualFolderInfo::setCollectionType(QString newCollectionType) { + m_collectionType = newCollectionType; + emit collectionTypeChanged(newCollectionType); +} + +LibraryOptions * VirtualFolderInfo::libraryOptions() const { return m_libraryOptions; } +void VirtualFolderInfo::setLibraryOptions(LibraryOptions * newLibraryOptions) { + m_libraryOptions = newLibraryOptions; + emit libraryOptionsChanged(newLibraryOptions); +} + +QString VirtualFolderInfo::itemId() const { return m_itemId; } +void VirtualFolderInfo::setItemId(QString newItemId) { + m_itemId = newItemId; + emit itemIdChanged(newItemId); +} + +QString VirtualFolderInfo::primaryImageItemId() const { return m_primaryImageItemId; } +void VirtualFolderInfo::setPrimaryImageItemId(QString newPrimaryImageItemId) { + m_primaryImageItemId = newPrimaryImageItemId; + emit primaryImageItemIdChanged(newPrimaryImageItemId); +} + +double VirtualFolderInfo::refreshProgress() const { return m_refreshProgress; } +void VirtualFolderInfo::setRefreshProgress(double newRefreshProgress) { + m_refreshProgress = newRefreshProgress; + emit refreshProgressChanged(newRefreshProgress); +} + +QString VirtualFolderInfo::refreshStatus() const { return m_refreshStatus; } +void VirtualFolderInfo::setRefreshStatus(QString newRefreshStatus) { + m_refreshStatus = newRefreshStatus; + emit refreshStatusChanged(newRefreshStatus); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/wakeonlaninfo.cpp b/core/src/DTO/wakeonlaninfo.cpp new file mode 100644 index 0000000..c84803b --- /dev/null +++ b/core/src/DTO/wakeonlaninfo.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +WakeOnLanInfo::WakeOnLanInfo(QObject *parent) : QObject(parent) {} + +WakeOnLanInfo *WakeOnLanInfo::fromJSON(QJsonObject source, QObject *parent) { + WakeOnLanInfo *instance = new WakeOnLanInfo(parent); + instance->updateFromJSON(source); + return instance; +} + +void WakeOnLanInfo::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject WakeOnLanInfo::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString WakeOnLanInfo::macAddress() const { return m_macAddress; } +void WakeOnLanInfo::setMacAddress(QString newMacAddress) { + m_macAddress = newMacAddress; + emit macAddressChanged(newMacAddress); +} + +qint32 WakeOnLanInfo::port() const { return m_port; } +void WakeOnLanInfo::setPort(qint32 newPort) { + m_port = newPort; + emit portChanged(newPort); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/DTO/xmlattribute.cpp b/core/src/DTO/xmlattribute.cpp new file mode 100644 index 0000000..5148053 --- /dev/null +++ b/core/src/DTO/xmlattribute.cpp @@ -0,0 +1,65 @@ +/* + * Sailfin: a Jellyfin client written using Qt + * Copyright (C) 2021 Chris Josten and the Sailfin Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * WARNING: THIS IS AN AUTOMATICALLY GENERATED FILE! PLEASE DO NOT EDIT THIS, AS YOUR EDITS WILL GET + * OVERWRITTEN AT SOME POINT! + * + * If there is a bug in this file, please fix the code generator used to generate this file found in + * core/openapigenerator.d. + * + * This file is generated based on Jellyfin's OpenAPI description, "openapi.json". Please update that + * file with a newer file if needed instead of manually updating the files. + */ + +#include + +namespace Jellyfin { +namespace DTO { + +XmlAttribute::XmlAttribute(QObject *parent) : QObject(parent) {} + +XmlAttribute *XmlAttribute::fromJSON(QJsonObject source, QObject *parent) { + XmlAttribute *instance = new XmlAttribute(parent); + instance->updateFromJSON(source); + return instance; +} + +void XmlAttribute::updateFromJSON(QJsonObject source) { + Q_UNIMPLEMENTED(); +} +QJsonObject XmlAttribute::toJSON() { + Q_UNIMPLEMENTED(); + QJsonObject result; + return result; +} +QString XmlAttribute::name() const { return m_name; } +void XmlAttribute::setName(QString newName) { + m_name = newName; + emit nameChanged(newName); +} + +QString XmlAttribute::value() const { return m_value; } +void XmlAttribute::setValue(QString newValue) { + m_value = newValue; + emit valueChanged(newValue); +} + + +} // NS Jellyfin +} // NS DTO diff --git a/core/src/jellyfinapiclient.cpp b/core/src/apiclient.cpp similarity index 97% rename from core/src/jellyfinapiclient.cpp rename to core/src/apiclient.cpp index 196a989..c5cb54a 100644 --- a/core/src/jellyfinapiclient.cpp +++ b/core/src/apiclient.cpp @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -17,7 +17,7 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "JellyfinQt/jellyfinapiclient.h" +#include "JellyfinQt/apiclient.h" namespace Jellyfin { @@ -45,7 +45,7 @@ void ApiClient::addBaseRequestHeaders(QNetworkRequest &request, const QString &p request.setRawHeader("Accept", "application/json;"); // profile=\"CamelCase\""); request.setHeader(QNetworkRequest::UserAgentHeader, QString("Sailfin/%1").arg(version())); QString url = this->m_baseUrl + path; - if (!params.isEmpty()) url += "?" + params.toString(); + if (!params.isEmpty()) url += "?" + params.toString(QUrl::EncodeReserved); request.setUrl(url); } @@ -269,8 +269,8 @@ void ApiClient::defaultNetworkErrorHandler(QNetworkReply::NetworkError error) { rep->deleteLater(); } -void ApiClient::onUserDataChanged(const QString &itemId, QSharedPointer userData) { - userDataChanged(itemId, userData); +void ApiClient::onUserDataChanged(const QString &itemId, UserData *userData) { + emit userDataChanged(itemId, userData); } void ApiClient::setAuthenticated(bool authenticated) { diff --git a/core/src/jellyfinapimodel.cpp b/core/src/apimodel.cpp similarity index 51% rename from core/src/jellyfinapimodel.cpp rename to core/src/apimodel.cpp index 468b860..1893105 100644 --- a/core/src/jellyfinapimodel.cpp +++ b/core/src/apimodel.cpp @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -17,81 +17,77 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "JellyfinQt/jellyfinapimodel.h" +#include "JellyfinQt/apimodel.h" + +#include "JellyfinQt/DTO/item.h" +#include "JellyfinQt/DTO/useritemdatadto.h" +#include "JellyfinQt/DTO/userdto.h" namespace Jellyfin { -ApiModel::ApiModel(QString path, bool hasRecordResponse, bool addUserId, QObject *parent) - : QAbstractListModel (parent), + +// BaseApiModel +namespace DTO { + using UserData = DTO::UserItemDataDto; + using User = DTO::UserDto; +} +using User = DTO::UserDto; + +BaseApiModel::BaseApiModel(QString path, bool hasRecordResponse, bool addUserId, QObject *parent) + : QAbstractListModel(parent), m_path(path), m_hasRecordResponse(hasRecordResponse), - m_addUserId(addUserId){ + m_addUserId(addUserId) { + } -void ApiModel::reload() { +void BaseApiModel::setApiClient(ApiClient *apiClient) { + m_apiClient = apiClient; + emit apiClientChanged(m_apiClient); +} + +void BaseApiModel::setLimit(int newLimit) { + m_limit = newLimit; + emit limitChanged(newLimit); + if (m_apiClient != nullptr && !m_isBeingParsed) { + load(LOAD_MORE); + } +} + +void BaseApiModel::reload() { this->setStatus(Loading); m_startIndex = 0; load(RELOAD); } -void ApiModel::load(LoadType type) { + +void BaseApiModel::load(LoadType type) { qDebug() << (type == RELOAD ? "RELOAD" : "LOAD_MORE"); if (m_apiClient == nullptr) { qWarning() << "Please set the apiClient property before (re)loading"; return; } - if (m_path.contains("{{user}}")) { - m_path = m_path.replace("{{user}}", m_apiClient->userId()); - } - if (m_path.contains("{{show}}") && !m_show.isEmpty()) { - m_path = m_path.replace("{{show}}", m_show); - } + + QString path(m_path); + replacePathPlaceholders(path); QUrlQuery query; - if (m_limit >= 0) { - query.addQueryItem("Limit", QString::number(m_limit)); - } else { - query.addQueryItem("Limit", QString::number(DEFAULT_LIMIT)); - } - if (m_startIndex > 0) { - query.addQueryItem("StartIndex", QString::number(m_startIndex)); - } - if (!m_parentId.isEmpty()) { - query.addQueryItem("ParentId", m_parentId); - } - if (!m_sortBy.empty()) { - query.addQueryItem("SortBy", m_sortBy.join(",")); - } - if (m_sortOrder != Unspecified) { - query.addQueryItem("SortOrder", m_sortOrder == Ascending ? "Ascending" : "Descending"); - } - if (!m_imageTypes.empty()) { - query.addQueryItem("ImageTypes", m_imageTypes.join(",")); - } - if (!m_includeItemTypes.empty()) { - query.addQueryItem("IncludeItemTypes", m_includeItemTypes.join(",")); - } - if (!m_fields.empty()) { - query.addQueryItem("Fields", m_fields.join(",")); - } - if (!m_seasonId.isEmpty()) { - query.addQueryItem("seasonId", m_seasonId); - } - if (m_addUserId) { - query.addQueryItem("userId", m_apiClient->userId()); - } - if (m_recursive) { - query.addQueryItem("Recursive", "true"); - } addQueryParameters(query); - QNetworkReply *rep = m_apiClient->get(m_path, query); + + QNetworkReply *rep = m_apiClient->get(path, query); connect(rep, &QNetworkReply::finished, this, [this, type, rep]() { + qDebug() << rep->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() << ": " << rep->request().url(); QJsonDocument doc = QJsonDocument::fromJson(rep->readAll()); + if (doc.isNull()) { + qWarning() << "JSON parse error"; + this->setStatus(Error); + } if (!m_hasRecordResponse) { if (!doc.isArray()) { qWarning() << "Object is not an array!"; this->setStatus(Error); return; } - this->m_array = doc.array(); + QJsonArray items = doc.array(); + setModelData(items); } else { if (!doc.isObject()) { qWarning() << "Object is not an object!"; @@ -123,42 +119,108 @@ void ApiModel::load(LoadType type) { QJsonArray items = obj["Items"].toArray(); switch(type) { case RELOAD: - this->m_array = items; + setModelData(items); break; case LOAD_MORE: - this->beginInsertRows(QModelIndex(), m_array.size(), m_array.size() + items.size() - 1); - // QJsonArray apparently doesn't allow concatenating lists like QList or std::vector - for (auto it = items.begin(); it != items.end(); it++) { - JsonHelper::convertToCamelCase(*it); - } - foreach (const QJsonValue &val, items) { - m_array.append(val); - } - this->endInsertRows(); + appendModelData(items); break; } } - if (type == RELOAD) { - generateFields(); - } this->setStatus(Ready); rep->deleteLater(); }); } -void ApiModel::generateFields() { - if (m_array.size() == 0) return; - this->beginResetModel(); +void BaseApiModel::addQueryParameters(QUrlQuery &query) { + if (m_limit >= 0) { + query.addQueryItem("Limit", QString::number(m_limit)); + } else { + query.addQueryItem("Limit", QString::number(DEFAULT_LIMIT)); + } + if (m_startIndex > 0) { + query.addQueryItem("StartIndex", QString::number(m_startIndex)); + } + if (!m_sortBy.empty()) { + query.addQueryItem("SortBy", m_sortBy.join(",")); + } + if (m_sortOrder != Unspecified) { + query.addQueryItem("SortOrder", m_sortOrder == Ascending ? "Ascending" : "Descending"); + } + if (!m_fields.empty()) { + query.addQueryItem("Fields", m_fields.join(",")); + } + if (m_addUserId) { + query.addQueryItem("userId", m_apiClient->userId()); + } +} + +void BaseApiModel::replacePathPlaceholders(QString &path) { + if (path.contains("{{user}}")) { + path = path.replace("{{user}}", m_apiClient->userId()); + } +} + +void BaseApiModel::classBegin() { + m_isBeingParsed = true; +} + +void BaseApiModel::componentComplete() { + m_isBeingParsed = false; +} + +// ApiModel +template +ApiModel::ApiModel(QString path, bool hasRecordResponse, bool addUserId, QObject *parent) + : BaseApiModel(path, hasRecordResponse, addUserId, parent) { + // If based on QObject, we know our role names before the first request + generateFields(); +} + +template <> +ApiModel::ApiModel(QString path, bool hasRecordResponse, bool addUserId, QObject *parent) + : BaseApiModel(path, hasRecordResponse, addUserId, parent) { + // But we only know our role names after our first request. +} + + +template +T *ApiModel::deserializeResult(QJsonValueRef source) { + T *result = T::fromJSON(source.toObject(), this); + return result; +} + +template <> +QJsonValue *ApiModel::deserializeResult(QJsonValueRef source) { + QJsonValue *result = new QJsonValue(source); + JsonHelper::convertToCamelCase(*result); + return result; +} + +template +void ApiModel::generateFields() { + const QMetaObject *obj = &T::staticMetaObject; + m_roles[Qt::UserRole + 1] = "qtObject"; + for (int i = 0; i < obj->propertyCount(); i++) { + QMetaProperty property = obj->property(i); + m_roles.insert(Qt::UserRole + 2 + i, property.name()); + } +} + +template <> +void ApiModel::generateFields() { + // We can only generate field names if there is a first item. Redefining role names later leads to + // unexpected results, so prevent it as well. + if (m_array.size() == 0 || m_roles.size() > 0) return; int i = Qt::UserRole + 1; - if (!m_array[0].isObject()) { + if (!m_array[0]->isObject()) { qWarning() << "Iterator is not an object?"; return; } // Walks over the keys in the first record and adds them to the rolenames. // This assumes the back-end has the same keys for every record. I could technically - // go over all records to be really sure, but no-one got time for a O(n²) algorithm, so + // go over all records to be really sure, but no-one got time for a O(n) algorithm, so // this heuristic hopefully suffices. - QJsonObject ob = m_array[0].toObject(); + QJsonObject ob = m_array[0]->toObject(); for (auto jt = ob.begin(); jt != ob.end(); jt++) { QString keyName = jt.key(); keyName[0] = keyName[0].toLower(); @@ -167,20 +229,78 @@ void ApiModel::generateFields() { m_roles.insert(i++, keyArr); } } - for (auto it = m_array.begin(); it != m_array.end(); it++){ - JsonHelper::convertToCamelCase(*it); +} + +template +void ApiModel::setModelData(QJsonArray &data) { + this->beginResetModel(); + for (T* value : m_array) { + value->deleteLater(); + } + m_array.clear(); + for(QJsonValueRef value : data) { + m_array.append(deserializeResult(value)); } this->endResetModel(); } -QVariant ApiModel::data(const QModelIndex &index, int role) const { +template <> +void ApiModel::setModelData(QJsonArray &data) { + generateFields(); + this->beginResetModel(); + for (QJsonValue* value : m_array) { + delete value; + } + m_array.clear(); + for(QJsonValueRef value : data) { + m_array.append(deserializeResult(value)); + } + this->endResetModel(); +} + +template +void ApiModel::appendModelData(QJsonArray &data) { + this->beginInsertRows(QModelIndex(), m_array.size(), m_array.size() + data.size() - 1); + // QJsonArray apparently doesn't allow concatenating lists like QList or std::vector + for (auto it = data.begin(); it != data.end(); it++) { + JsonHelper::convertToCamelCase(*it); + } + for(QJsonValueRef val : data) { + m_array.append(deserializeResult(val)); + } + this->endInsertRows(); +} + +template +QVariant ApiModel::data(const QModelIndex &index, int role) const { // Ignore roles we don't know if (role <= Qt::UserRole || role >= Qt::UserRole + m_roles.size()) return QVariant(); // Ignore invalid indices. if (!index.isValid()) return QVariant(); - QJsonObject obj = m_array.at(index.row()).toObject(); + T* obj = m_array.at(index.row()); + // m_roleNames[role] == "qtObject" + if (role == Qt::UserRole + 1) { + return QVariant::fromValue(obj); + } + + const QString &key = m_roles[role]; + + if (role - Qt::UserRole - 2 < obj->metaObject()->propertyCount() ) { + return obj->property(key.toLocal8Bit()); + } + return QVariant(); +} +template <> +QVariant ApiModel::data(const QModelIndex &index, int role) const { + // Ignore roles we don't know + if (role <= Qt::UserRole || role >= Qt::UserRole + m_roles.size()) return QVariant(); + // Ignore invalid indices. + if (!index.isValid()) return QVariant(); + + + QJsonObject obj = m_array.at(index.row())->toObject(); const QString &key = m_roles[role]; @@ -190,7 +310,9 @@ QVariant ApiModel::data(const QModelIndex &index, int role) const { return QVariant(); } -bool ApiModel::canFetchMore(const QModelIndex &parent) const { + +template +bool ApiModel::canFetchMore(const QModelIndex &parent) const { if (parent.isValid()) return false; switch(m_status) { case Uninitialised: @@ -206,50 +328,99 @@ bool ApiModel::canFetchMore(const QModelIndex &parent) const { } else { return false; } - } -void ApiModel::fetchMore(const QModelIndex &parent) { +template +void ApiModel::fetchMore(const QModelIndex &parent) { if (parent.isValid()) return; this->setStatus(LoadingMore); load(LOAD_MORE); } -void ApiModel::addQueryParameters(QUrlQuery &query) { Q_UNUSED(query)} +template +void ApiModel::addQueryParameters(QUrlQuery &query) { + BaseApiModel::addQueryParameters(query); +} +template +void ApiModel::replacePathPlaceholders(QString &path) { + BaseApiModel::replacePathPlaceholders(path); +} +template +void ApiModel::insert(int index, T* object) { + Q_ASSERT(index >=0 && index <= size()); + this->beginInsertRows(QModelIndex(), index, index); + m_array.insert(index, object); + this->endInsertRows(); +} +template +void ApiModel::removeAt(int index) { + this->beginRemoveRows(QModelIndex(), index, index); + m_array.removeAt(index); + this->endRemoveRows(); +} + +template +void ApiModel::removeOne(T* object) { + int idx = m_array.indexOf(object); + if (idx >= 0) { + removeAt(idx); + } +} // Itemmodel - ItemModel::ItemModel(QString path, bool hasRecordFields, bool replaceUser, QObject *parent) : ApiModel (path, hasRecordFields, replaceUser, parent){ - connect(this, &ApiModel::apiClientChanged, this, [this](ApiClient *newApiClient) { - connect(newApiClient, &ApiClient::userDataChanged, this, &ItemModel::onUserDataChanged); + QObject::connect(this, &BaseApiModel::apiClientChanged, static_cast(this), [this](ApiClient *newApiClient) { + QObject::connect(newApiClient, &ApiClient::userDataChanged, this, &ItemModel::onUserDataChanged); }); } -void ItemModel::onUserDataChanged(const QString &itemId, QSharedPointer userData) { +void ItemModel::onUserDataChanged(const QString &itemId, DTO::UserData *userData) { int i = 0; - for (QJsonValueRef val: m_array) { - QJsonObject item = val.toObject(); - if (item.contains("id") && item["id"].toString() == itemId) { - if (item.contains("userData")) { - QModelIndex cell = this->index(i); - item["userData"] = userData->serialize(false); - val = item; - this->dataChanged(cell, cell); - } + for (Item *val: m_array) { + if (val->userData() != nullptr && val->jellyfinId() == itemId) { + QModelIndex cell = this->index(i); + // val->userData()->onUpdated(userData); + this->dataChanged(cell, cell); } i++; } } +void ItemModel::addQueryParameters(QUrlQuery &query) { + ApiModel::addQueryParameters(query); + if (!m_parentId.isEmpty()) { + query.addQueryItem("ParentId", m_parentId); + } + if (!m_imageTypes.empty()) { + query.addQueryItem("ImageTypes", m_imageTypes.join(",")); + } + if (!m_includeItemTypes.empty()) { + query.addQueryItem("IncludeItemTypes", m_includeItemTypes.join(",")); + } + if (!m_seasonId.isEmpty()) { + query.addQueryItem("seasonId", m_seasonId); + } + if (m_recursive) { + query.addQueryItem("Recursive", "true"); + } +} + +void ItemModel::replacePathPlaceholders(QString &path) { + ApiModel::replacePathPlaceholders(path); + if (path.contains("{{show}}") && !m_show.isEmpty()) { + path = m_path.replace("{{show}}", m_show); + } +} + PublicUserModel::PublicUserModel(QObject *parent) : ApiModel ("/users/public", false, false, parent) { } UserViewModel::UserViewModel(QObject *parent) - : ApiModel ("/Users/{{user}}/Views", true, false, parent) {} + : ItemModel ("/Users/{{user}}/Views", true, false, parent) {} UserItemModel::UserItemModel(QObject *parent) : ItemModel ("/Users/{{user}}/Items", true, false, parent) {} @@ -270,7 +441,7 @@ ShowEpisodesModel::ShowEpisodesModel(QObject *parent) : ItemModel ("/Shows/{{show}}/Episodes", true, true, parent) {} void registerModels(const char *URI) { - qmlRegisterUncreatableType(URI, 1, 0, "ApiModel", "Is enum and base class"); + qmlRegisterUncreatableType(URI, 1, 0, "ApiModel", "Is enum and base class"); qmlRegisterUncreatableType(URI, 1, 0, "SortOptions", "Is enum"); qmlRegisterType(URI, 1, 0, "PublicUserModel"); qmlRegisterType(URI, 1, 0, "UserViewModel"); diff --git a/core/src/credentialmanager.cpp b/core/src/credentialmanager.cpp index 3a469cb..63aea27 100644 --- a/core/src/credentialmanager.cpp +++ b/core/src/credentialmanager.cpp @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -27,7 +27,13 @@ CredentialsManager * CredentialsManager::newInstance(QObject *parent) { // FallbackCredentialsManager // //////////////////////////////////////////////////////////////////////////////////////////////////// FallbackCredentialsManager::FallbackCredentialsManager(QObject *parent) - : CredentialsManager (parent) { + : CredentialsManager (parent) + #if PLATFORM_SAILFISHOS + // I'd rather not hardcoded this here, but I don´t know a better, quick solution. + // since this file must be placed in this path due to sandboxing. + , m_settings("nl.netsoj.chris/Sailfin/sailfin") + #endif +{ m_settings.beginGroup("Credentials"); } diff --git a/core/src/jellyfindeviceprofile.cpp b/core/src/deviceprofile.cpp similarity index 99% rename from core/src/jellyfindeviceprofile.cpp rename to core/src/deviceprofile.cpp index a70c18b..8d08715 100644 --- a/core/src/jellyfindeviceprofile.cpp +++ b/core/src/deviceprofile.cpp @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -17,7 +17,7 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "JellyfinQt/jellyfindeviceprofile.h" +#include "JellyfinQt/deviceprofile.h" namespace Jellyfin { diff --git a/core/src/jellyfin.cpp b/core/src/jellyfin.cpp index 877eaba..f489f47 100644 --- a/core/src/jellyfin.cpp +++ b/core/src/jellyfin.cpp @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -31,6 +31,7 @@ void registerTypes(const char *uri) { // API models Jellyfin::registerModels(uri); - Jellyfin::registerSerializableJsonTypes(uri); + //Jellyfin::DTO::registerTypes(uri); + Jellyfin::registerRemoteTypes(uri); } } diff --git a/core/src/jsonhelper.cpp b/core/src/jsonhelper.cpp index e78a760..7273ebc 100644 --- a/core/src/jsonhelper.cpp +++ b/core/src/jsonhelper.cpp @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -19,7 +19,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #include "JellyfinQt/jsonhelper.h" namespace Jellyfin { - namespace JsonHelper { void convertToCamelCase(QJsonValueRef val) { @@ -52,6 +51,37 @@ void convertToCamelCase(QJsonValueRef val) { break; } } +void convertToCamelCase(QJsonValue &val) { + switch(val.type()) { + case QJsonValue::Object: { + QJsonObject obj = val.toObject(); + for(const QString &key: obj.keys()) { + QJsonValueRef ref = obj[key]; + convertToCamelCase(ref); + obj[convertToCamelCaseHelper(key)] = ref; + if (key[0].isLower() || !key[0].isLetter()) { + obj[key] = ref; + } else { + obj[convertToCamelCaseHelper(key)] = ref; + obj.remove(key); + } + } + val = obj; + break; + } + case QJsonValue::Array: { + QJsonArray arr = val.toArray(); + for (auto it = arr.begin(); it != arr.end(); it++) { + convertToCamelCase(*it); + } + val = arr; + break; + } + default: + break; + } +} + QString convertToCamelCaseHelper(const QString &str) { QString res(str); diff --git a/core/src/jellyfinplaybackmanager.cpp b/core/src/playbackmanager.cpp similarity index 56% rename from core/src/jellyfinplaybackmanager.cpp rename to core/src/playbackmanager.cpp index 4476472..55defbf 100644 --- a/core/src/jellyfinplaybackmanager.cpp +++ b/core/src/playbackmanager.cpp @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -17,25 +17,42 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "JellyfinQt/jellyfinplaybackmanager.h" +#include "JellyfinQt/playbackmanager.h" + +#include "JellyfinQt/apimodel.h" + +// #include "JellyfinQt/DTO/dto.h" +#include +#include namespace Jellyfin { +class ItemModel; + +namespace DTO { + using UserData = UserItemDataDto; +} PlaybackManager::PlaybackManager(QObject *parent) - : QObject(parent) { + : QObject(parent), m_mediaPlayer1(new QMediaPlayer(this)), m_mediaPlayer2(new QMediaPlayer(this)), + m_item(new RemoteItem(this)){ + // Set up connections. + swapMediaPlayer(); m_updateTimer.setInterval(10000); // 10 seconds m_updateTimer.setSingleShot(false); connect(&m_updateTimer, &QTimer::timeout, this, &PlaybackManager::updatePlaybackInfo); } -void PlaybackManager::fetchStreamUrl() { - if (m_item == nullptr || m_apiClient == nullptr) { +void PlaybackManager::setApiClient(ApiClient *apiClient) { + m_item->setApiClient(apiClient); +} + +void PlaybackManager::fetchStreamUrl(const Item *item, bool autoOpen, const FetchCallback &callback) { + if (item == nullptr || m_apiClient == nullptr) { qDebug() << "Item or apiClient not set"; - return; } m_resumePosition = 0; - if (m_resumePlayback && !m_item->property("userData").isNull()) { - UserData* userData = qvariant_cast(m_item->property("userData")); + if (m_resumePlayback && !item->property("userData").isNull()) { + UserData* userData = m_item->data()->userData(); if (userData != nullptr) { m_resumePosition = userData->playbackPositionTicks(); } @@ -44,16 +61,16 @@ void PlaybackManager::fetchStreamUrl() { params.addQueryItem("UserId", m_apiClient->userId()); params.addQueryItem("StartTimeTicks", QString::number(m_resumePosition)); params.addQueryItem("IsPlayback", "true"); - params.addQueryItem("AutoOpenLiveStream", this->m_autoOpen ? "true" : "false"); - params.addQueryItem("MediaSourceId", this->m_item->jellyfinId()); + params.addQueryItem("AutoOpenLiveStream", autoOpen? "true" : "false"); + params.addQueryItem("MediaSourceId", item->jellyfinId()); params.addQueryItem("SubtitleStreamIndex", QString::number(m_subtitleIndex)); params.addQueryItem("AudioStreamIndex", QString::number(m_audioIndex)); QJsonObject root; root["DeviceProfile"] = m_apiClient->playbackDeviceProfile(); - QNetworkReply *rep = m_apiClient->post("/Items/" + this->m_item->jellyfinId() + "/PlaybackInfo", QJsonDocument(root), params); - connect(rep, &QNetworkReply::finished, this, [this, rep]() { + QNetworkReply *rep = m_apiClient->post("/Items/" + item->jellyfinId() + "/PlaybackInfo", QJsonDocument(root), params); + connect(rep, &QNetworkReply::finished, this, [this, rep, callback]() { QJsonObject root = QJsonDocument::fromJson(rep->readAll()).object(); this->m_playSessionId = root["PlaySessionId"].toString(); qDebug() << "Session id: " << this->m_playSessionId; @@ -71,43 +88,47 @@ void PlaybackManager::fetchStreamUrl() { query.addQueryItem("api_key", m_apiClient->token()); query.addQueryItem("Static", "True"); QString mediaType = "unknown"; - if (m_item->mediaType() == "Audio") { + if (m_item->data()->mediaType() == "Audio") { mediaType = "Audio"; - } else if (m_item->mediaType() == "Video") { + } else if (m_item->data()->mediaType() == "Video") { mediaType = "Videos"; } QString streamUrl = this->m_apiClient->baseUrl() + "/" + mediaType + "/" + m_item->jellyfinId() + "/stream." + firstMediaSource["Container"].toString() + "?" + query.toString(QUrl::EncodeReserved); - setStreamUrl(streamUrl); - this->m_playMethod = DirectPlay; + callback(QUrl(streamUrl), DirectPlay); } else if (firstMediaSource["SupportsTranscoding"].toBool() && !firstMediaSource["TranscodingUrl"].isNull()) { QString streamUrl = this->m_apiClient->baseUrl() + firstMediaSource["TranscodingUrl"].toString(); this->m_playMethod = Transcode; - setStreamUrl(streamUrl); + callback(QUrl(streamUrl), Transcode); } else { qDebug() << "No stream url found"; return; } - qDebug() << "Found stream url: " << this->m_streamUrl; } - rep->deleteLater(); }); } +void PlaybackManager::fetchAndSetStreamUrl(const Item *item) { + fetchStreamUrl(item, m_autoOpen, [this, item](QUrl &&url, PlayMethod playbackMethod) { + if (m_item->data() == item) { + setStreamUrl(url.toString()); + m_playMethod = playbackMethod; + emit playMethodChanged(m_playMethod); + m_mediaPlayer->setMedia(QMediaContent(url)); + m_mediaPlayer->play(); + } + }); + +} + void PlaybackManager::setItem(Item *newItem) { if (m_mediaPlayer != nullptr) m_mediaPlayer->stop(); - // If we own the item, delete it. - if (m_item != nullptr && m_item->parent() == this) { - m_item->deleteLater(); - } - this->m_item = newItem; + this->m_item->setData(newItem); emit itemChanged(newItem); - // Don't try to start fetching when we're not completely parsed yet. - if (m_qmlIsParsingComponent) return; if (m_apiClient == nullptr) { qWarning() << "apiClient is not set on this MediaSource instance! Aborting."; @@ -116,38 +137,34 @@ void PlaybackManager::setItem(Item *newItem) { // Deinitialize the streamUrl setStreamUrl(""); if (newItem != nullptr) { - if (newItem->parent() != this) { - // The new item may outlive the lifetime of the element it was created on. In the Sailfish - // application for example, the player is given an Jellyfin::Item that sits on a Page on a PageStack. - // As soon as the user pops the Page from the PageStack, newItem would be destroyed. Therefore, we - // take ownership of the given newItem, as this object will usually exist throughout the lifetime of - // the application. A better solution would be to create a copy of the newItem, but no way I'm going - // to create an handwritten copy of that. - QQmlEngine::setObjectOwnership(newItem, QQmlEngine::ObjectOwnership::CppOwnership); - newItem->setParent(this); - } - if (m_item->status() == RemoteData::Ready) { - fetchStreamUrl(); + if (m_item->status() == RemoteDataBase::Ready) { + fetchAndSetStreamUrl(m_item->data()); } else { - connect(m_item, &RemoteData::ready, [this]() -> void { - fetchStreamUrl(); + connect(m_item, &RemoteDataBase::ready, [this]() -> void { + fetchAndSetStreamUrl(m_item->data()); }); } } } + void PlaybackManager::setStreamUrl(const QString &streamUrl) { this->m_streamUrl = streamUrl; // Inspired by PHP naming schemes QUrl realStreamUrl(streamUrl); Q_ASSERT_X(realStreamUrl.isValid(), "setStreamUrl", "StreamURL Jellyfin returned is not valid"); - if (m_mediaPlayer != nullptr) { - m_mediaPlayer->setMedia(QMediaContent(realStreamUrl)); - } emit streamUrlChanged(streamUrl); } +void PlaybackManager::setPlaybackState(QMediaPlayer::State newState) { + if (newState != m_playbackState) { + m_playbackState = newState; + emit playbackStateChanged(newState); + } +} + void PlaybackManager::mediaPlayerPositionChanged(qint64 position) { + emit positionChanged(position); if (position == 0 && m_oldPosition != 0) { // Save the old position when stop gets called. The QMediaPlayer will try to set // position to 0 when stopped, but we don't want to report that to Jellyfin. We @@ -168,6 +185,7 @@ void PlaybackManager::mediaPlayerStateChanged(QMediaPlayer::State newState) { // We've stopped playing the media. Post a stop signal. m_updateTimer.stop(); postPlaybackInfo(Stopped); + setPlaybackState(QMediaPlayer::StoppedState); } else { postPlaybackInfo(Progress); } @@ -175,8 +193,10 @@ void PlaybackManager::mediaPlayerStateChanged(QMediaPlayer::State newState) { } void PlaybackManager::mediaPlayerMediaStatusChanged(QMediaPlayer::MediaStatus newStatus) { + emit mediaStatusChanged(newStatus); if (newStatus == QMediaPlayer::LoadedMedia) { m_mediaPlayer->play(); + setPlaybackState(playbackState()); if (m_resumePlayback) { qDebug() << "Resuming playback by seeking to " << (m_resumePosition / MS_TICK_FACTOR); m_mediaPlayer->setPosition(m_resumePosition / MS_TICK_FACTOR); @@ -184,24 +204,9 @@ void PlaybackManager::mediaPlayerMediaStatusChanged(QMediaPlayer::MediaStatus ne } } -void PlaybackManager::setMediaPlayer(QObject *qmlMediaPlayer) { - if (m_mediaPlayer != nullptr) { - // Clean up the old media player. - disconnect(m_mediaPlayer, &QMediaPlayer::stateChanged, this, &PlaybackManager::mediaPlayerStateChanged); - disconnect(m_mediaPlayer, &QMediaPlayer::positionChanged, this, &PlaybackManager::mediaPlayerPositionChanged); - disconnect(m_mediaPlayer, &QMediaPlayer::mediaStatusChanged, this, &PlaybackManager::mediaPlayerMediaStatusChanged); - } - - m_qmlMediaPlayer = qmlMediaPlayer; - if (qmlMediaPlayer != nullptr) { - m_mediaPlayer = qvariant_cast(qmlMediaPlayer->property("mediaObject")); - Q_ASSERT_X(m_mediaPlayer != nullptr, "setMediaPlayer", "The mediaPlayer property must contain a qml MediaPlayer with the mediaObject property"); - - // Connect signals from the new media player - connect(m_mediaPlayer, &QMediaPlayer::stateChanged, this, &PlaybackManager::mediaPlayerStateChanged); - connect(m_mediaPlayer, &QMediaPlayer::positionChanged, this, &PlaybackManager::mediaPlayerPositionChanged); - connect(m_mediaPlayer, &QMediaPlayer::mediaStatusChanged, this, &PlaybackManager::mediaPlayerMediaStatusChanged); - } +void PlaybackManager::mediaPlayerError(QMediaPlayer::Error error) { + emit errorChanged(error); + emit errorStringChanged(m_mediaPlayer->errorString()); } void PlaybackManager::updatePlaybackInfo() { @@ -209,10 +214,46 @@ void PlaybackManager::updatePlaybackInfo() { } void PlaybackManager::playItem(const QString &itemId) { - Item *newItem = new Item(itemId, m_apiClient, this); - setItem(newItem); + RemoteItem *newItem = new RemoteItem(itemId, m_apiClient, this); + ItemModel *queue = new UserItemModel(this); + setQueue(queue); + connect(newItem, &RemoteItem::ready, this, [this, queue, newItem](){ + QString parentId = newItem->data()->parentId(); + queue->setParentId(parentId); + queue->setLimit(10000); + queue->setApiClient(m_apiClient); + queue->reload(); + setItem(newItem->data()); + }); + connect(queue, &BaseApiModel::ready, this, [this, queue, newItem]() { + for (int i = 0; i < queue->size(); i++) { + if (queue->at(i)->jellyfinId() == newItem->jellyfinId()) { + m_queueIndex = i; + emit queueIndexChanged(m_queueIndex); + break; + } + } + }); + setPlaybackState(QMediaPlayer::PlayingState); } +void PlaybackManager::playItemInList(ItemModel *playlist, int itemIdx) { + playlist->setParent(this); + setQueue(playlist); + m_queueIndex = itemIdx; + emit queueIndexChanged(m_queueIndex); + setItem(playlist->at(itemIdx)); +} + +void PlaybackManager::next() { + Q_UNIMPLEMENTED(); +} + +void PlaybackManager::previous() { + Q_UNIMPLEMENTED(); +} + + void PlaybackManager::postPlaybackInfo(PlaybackInfoType type) { QJsonObject root; @@ -261,15 +302,62 @@ void PlaybackManager::postPlaybackInfo(PlaybackInfoType type) { m_apiClient->setDefaultErrorHandler(rep); } +void PlaybackManager::swapMediaPlayer() { + if (m_mediaPlayer != nullptr) { + disconnect(m_mediaPlayer, &QMediaPlayer::stateChanged, this, &PlaybackManager::mediaPlayerStateChanged); + disconnect(m_mediaPlayer, &QMediaPlayer::positionChanged, this, &PlaybackManager::mediaPlayerPositionChanged); + disconnect(m_mediaPlayer, &QMediaPlayer::durationChanged, this, &PlaybackManager::durationChanged); + disconnect(m_mediaPlayer, &QMediaPlayer::mediaStatusChanged, this, &PlaybackManager::mediaPlayerMediaStatusChanged); + disconnect(m_mediaPlayer, &QMediaPlayer::videoAvailableChanged, this, &PlaybackManager::hasVideoChanged); + // I do not like the complicated overload cast + disconnect(m_mediaPlayer, SIGNAL(error(QMediaPlayer::error)), this, SLOT(mediaPlayerError(QmediaPlayer::error))); + } + if (m_mediaPlayer == m_mediaPlayer1) { + m_mediaPlayer = m_mediaPlayer2; + emit mediaPlayerChanged(m_mediaPlayer); + } else { + m_mediaPlayer = m_mediaPlayer1; + emit mediaPlayerChanged(m_mediaPlayer); + } + connect(m_mediaPlayer, &QMediaPlayer::stateChanged, this, &PlaybackManager::mediaPlayerStateChanged); + connect(m_mediaPlayer, &QMediaPlayer::positionChanged, this, &PlaybackManager::mediaPlayerPositionChanged); + connect(m_mediaPlayer, &QMediaPlayer::durationChanged, this, &PlaybackManager::durationChanged); + connect(m_mediaPlayer, &QMediaPlayer::mediaStatusChanged, this, &PlaybackManager::mediaPlayerMediaStatusChanged); + connect(m_mediaPlayer, &QMediaPlayer::videoAvailableChanged, this, &PlaybackManager::hasVideoChanged); + // I do not like the complicated overload cast + connect(m_mediaPlayer, SIGNAL(error(QMediaPlayer::error)), this, SLOT(mediaPlayerError(QmediaPlayer::error))); +} + +Item *PlaybackManager::nextItem() { + if (m_queue == nullptr) return nullptr; + // TODO: shuffle etc. + if (m_queueIndex < m_queue->size()) { + return m_queue->at(m_queueIndex + 1); + } + return nullptr; +} + +void PlaybackManager::setQueue(ItemModel *model) { + if (m_queue != nullptr) { + if (QQmlEngine::objectOwnership(m_queue) == QQmlEngine::CppOwnership) { + m_queue->deleteLater(); + } else { + m_queue->setParent(nullptr); + } + } + m_queue = model; + emit queueChanged(m_queue); +} + void PlaybackManager::componentComplete() { if (m_apiClient == nullptr) qWarning() << "No ApiClient set for PlaybackManager"; m_qmlIsParsingComponent = false; if (m_item != nullptr) { - if (m_item->status() == RemoteData::Ready) { - fetchStreamUrl(); + if (m_item->status() == RemoteItem::Ready) { + fetchAndSetStreamUrl(m_item->data()); } else { - connect(m_item, &RemoteData::ready, [this]() -> void { - fetchStreamUrl(); + connect(m_item, &RemoteItem::ready, [this]() -> void { + fetchAndSetStreamUrl(m_item->data()); }); } } diff --git a/core/src/jellyfinitem.cpp b/core/src/remotedata.cpp similarity index 53% rename from core/src/jellyfinitem.cpp rename to core/src/remotedata.cpp index 25357c3..47309eb 100644 --- a/core/src/jellyfinitem.cpp +++ b/core/src/remotedata.cpp @@ -1,27 +1,34 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten - +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. - This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "JellyfinQt/jellyfinitem.h" +#include "JellyfinQt/remotedata.h" +#include "JellyfinQt/apiclient.h" namespace Jellyfin { -const QRegularExpression JsonSerializable::m_listExpression = QRegularExpression("^QList<\\s*([a-zA-Z0-9]*)\\s*\\*?\\s*>$"); -JsonSerializable::JsonSerializable(QObject *parent) : QObject(parent) { + +/*const QRegularExpression JsonSerializable::m_listExpression = QRegularExpression("^QList<\\s*([a-zA-Z0-9]*)\\s*\\*?\\s*>$"); +const QRegularExpression JsonSerializable::m_hashExpression = QRegularExpression("^QHash<\\s*([a-zA-Z0-9]*)\\s*\\*?\\s*,\\s*([a-zA-Z0-9]*)\\s*\\*?\\s*>$"); +JsonSerializable::JsonSerializable(QObject *parent) : QObject(parent) { } +JsonSerializable::~JsonSerializable() { + if (parent() == nullptr) { + qDebug() << "Deleting" << metaObject()->className() << ", parent: nullptr, ownership: " << QQmlEngine::objectOwnership(this); + } else { + qDebug() << "Deleting" << metaObject()->className() << ", parent: " << parent()->metaObject()->className() + << ", ownership: " << QQmlEngine::objectOwnership(this); + } } void JsonSerializable::deserialize(const QJsonObject &jObj) { @@ -92,45 +99,55 @@ QVariant JsonSerializable::jsonToVariant(QMetaProperty prop, const QJsonValue &v JsonHelper::convertToCamelCase(QJsonValueRef(&tmp, 0)); return QVariant(innerObj); } else { - return deserializeQobject(innerObj, prop); + return deserializeQObject(innerObj, prop); } } return QVariant(); } -QVariant JsonSerializable::deserializeQobject(const QJsonObject &innerObj, const QMetaProperty &prop) { +QVariant JsonSerializable::deserializeQObject(const QJsonObject &innerObj, const QMetaProperty &prop) { int typeNo = prop.userType(); - const QMetaObject *metaType = QMetaType::metaObjectForType(prop.userType()); - if (metaType == nullptr) { - // Try to determine if the type is a qlist - QRegularExpressionMatch match = m_listExpression.match(prop.typeName()); - if (match.hasMatch()) { - // It is a qList! Now extract the inner type - // There should be an easier way, shouldn't there? - QString listType = match.captured(1).prepend("Jellyfin::").append("*"); - // UGLY CODE HERE WE COME - typeNo = QMetaType::type(listType.toUtf8()); - if (typeNo == QMetaType::UnknownType) { - qDebug() << "Unknown type: " << listType; - return QVariant(); - } - metaType = QMetaType::metaObjectForType(typeNo); - } else { - qDebug() << "No metaObject for " << prop.typeName() << ", " << prop.type() << ", " << prop.userType(); - return QVariant(); - } - } - QObject *deserializedInnerObj = metaType->newInstance(); - deserializedInnerObj->setParent(this); - if (JsonSerializable *ser = dynamic_cast(deserializedInnerObj)) { - qDebug() << "Deserializing user type " << deserializedInnerObj->metaObject()->className(); - ser->deserialize(innerObj); - return QVariant(typeNo, &ser); + const QMetaObject *metaType = QMetaType::metaObjectForType(prop.userType()); + if (metaType == nullptr) { + // Try to determine if the type is a qlist + QRegularExpressionMatch listMatch = m_listExpression.match(prop.typeName()); + QRegularExpressionMatch hashMatch = m_hashExpression.match(prop.typeName()); + if (listMatch.hasMatch()) { + // It is a qList! Now extract the inner type + // There should be an easier way, shouldn't there? + QString listType = listMatch.captured(1); + typeNo = findTypeIdForProperty(listType); + metaType = QMetaType::metaObjectForType(typeNo); } else { - deserializedInnerObj->deleteLater(); - qDebug() << "Object is not a serializable one!"; + qDebug() << "No metaObject for " << prop.typeName() << ", " << prop.type() << ", " << prop.userType(); return QVariant(); } + } + QObject *deserializedInnerObj = metaType->newInstance(); + deserializedInnerObj->setParent(this); + if (JsonSerializable *ser = dynamic_cast(deserializedInnerObj)) { + // qDebug() << "Deserializing user type " << deserializedInnerObj->metaObject()->className(); + ser->deserialize(innerObj); + return QVariant(typeNo, &ser); + } else { + deserializedInnerObj->deleteLater(); + qDebug() << "Object is not a serializable one!"; + return QVariant(); + } +} + +int JsonSerializable::findTypeIdForProperty(QString type) { + // UGLY CODE HERE WE COME + // We assume the type is either in no namespace (Qt Types) or in the Jellyfin::DTO namespace. + int typeNo = QMetaType::type(type.toUtf8()); + if (typeNo == QMetaType::UnknownType) { + typeNo = QMetaType::type(type.prepend("Jellyfin::DTO::").append("*").toUtf8()); + if (typeNo == QMetaType::UnknownType) { + qDebug() << "Unknown type: " << type; + return typeNo; + } + } + return typeNo; } QJsonObject JsonSerializable::serialize(bool capitalize) const { @@ -189,43 +206,57 @@ QString JsonSerializable::toPascalCase(QString str) { QString JsonSerializable::fromPascalCase(QString str) { str[0] = str[0].toLower(); return str; -} +}*/ // RemoteData -RemoteData::RemoteData(QObject *parent) : JsonSerializable (parent) {} -void RemoteData::setStatus(Status newStatus) { +bool RemoteDataBase::canReload() const { + return m_apiClient != nullptr && !m_isParsing; +} + +void RemoteDataBase::setStatus(Status newStatus) { m_status = newStatus; emit statusChanged(newStatus); if (newStatus == Ready) emit ready(); } -void RemoteData::setError(QNetworkReply::NetworkError error) { +void RemoteDataBase::setError(QNetworkReply::NetworkError error) { m_error = error; emit errorChanged(error); } -void RemoteData::setErrorString(const QString &newErrorString) { +void RemoteDataBase::setErrorString(const QString &newErrorString) { m_errorString = newErrorString; emit errorStringChanged(newErrorString); } -void RemoteData::setApiClient(ApiClient *newApiClient) { +void RemoteDataBase::setApiClient(ApiClient *newApiClient) { m_apiClient = newApiClient; emit apiClientChanged(newApiClient); - reload(); + if (canReload()) reload(); } -void RemoteData::reload() { +void RemoteDataBase::setExtraFields(const QStringList &extraFields) { + if (extraFields != m_extraFields) { + emit extraFieldsChanged(extraFields); + if (canReload()) reload(); + } +} + +void RemoteDataBase::reload() { if (!canReload() || m_apiClient == nullptr) { setStatus(Uninitialised); return; } else { setStatus(Loading); } - QNetworkReply *rep = m_apiClient->get(getDataUrl()); - connect(rep, &QNetworkReply::finished, this, [this, rep]() { + QUrlQuery params; + if (m_extraFields.length() > 0) { + params.addQueryItem("fields", m_extraFields.join(",")); + } + QNetworkReply *rep = m_apiClient->get(getDataUrl() + QStringLiteral("?") + params.toString(QUrl::EncodeReserved)); + QObject::connect(rep, &QNetworkReply::finished, this, [this, rep]() { rep->deleteLater(); QJsonParseError error; @@ -242,10 +273,10 @@ void RemoteData::reload() { this->setErrorString(tr("Invalid response from the server: root element is not an object.")); return; } - this->deserialize(doc.object()); + this->dataFetched(doc.object()); this->setStatus(Ready); }); - connect(rep, static_cast(&QNetworkReply::error), + QObject::connect(rep, static_cast(&QNetworkReply::error), this, [this, rep](QNetworkReply::NetworkError error) { this->setError(error); this->setErrorString(rep->errorString()); @@ -254,116 +285,20 @@ void RemoteData::reload() { }); } -NameGuidPair::NameGuidPair(QObject *parent) : JsonSerializable (parent) {} -// User -User::User(QObject *parent) : RemoteData (parent) {} - -QString User::getDataUrl() const { - return QString("/Users/") + m_apiClient->userId(); +RemoteItem::RemoteItem(QObject *parent) + : RemoteData(parent) { } +RemoteItem::RemoteItem(QString itemId, ApiClient *apiClient, QObject *parent) + : RemoteData(parent) { + m_data = new BaseItemDto(this); + m_data->setJellyfinId(itemId); + m_apiClient = apiClient; + connect(m_data, &BaseItemDto::jellyfinIdChanged, this, &RemoteItem::jellyfinIdChanged); } -bool User::canReload() const { - return true; +void registerRemoteTypes(const char *uri) { + qmlRegisterUncreatableType(uri, 1, 0, "JellyfinItem", "Please use RemoteItem instead"); + qmlRegisterType(uri, 1, 0, "JellyfinItem"); } -// MediaStream -MediaStream::MediaStream(QObject *parent) : JsonSerializable (parent) {} -MediaStream::MediaStream(const MediaStream &other) - : JsonSerializable (other.parent()), - m_codec(other.m_codec), - m_codecTag(other.m_codecTag), - m_language(other.m_language), - m_displayTitle(other.m_displayTitle), - m_type(other.m_type), - m_index(other.m_index){ -} -bool MediaStream::operator==(const MediaStream &other) { - // displayTitle is explicitly left out, since it's generated based on other properties - // in the Jellyfin source code. - return m_codec == other.m_codec && m_codecTag == other.m_codecTag - && m_language == other.m_language && m_type == other.m_type - && m_index == other.m_index; -} - -// UserData -UserData::UserData(QObject *parent) : JsonSerializable (parent) {} - -void UserData::updateOnServer() { - //TODO: implement -} - -void UserData::onUpdated(QSharedPointer other) { - // The reason I'm not using setLikes and similar is that they don't work with std::nullopt, - // since QML does not like it. - // THe other reason is that the setLikes method will send a post request to the server, to update the contents - // we don't want that to happen, obviously, since the application could end in an infinite loop. - if (this->m_playedPercentage != other->m_playedPercentage) { - this->m_playedPercentage = other->m_playedPercentage; - emit playedPercentageChanged(playedPercentage()); - } - if (m_playbackPositionTicks!= other->m_playbackPositionTicks) { - this->m_playbackPositionTicks = other->m_playbackPositionTicks; - emit playbackPositionTicksChanged(this->m_playbackPositionTicks); - } - if (m_isFavorite != other->m_isFavorite) { - this->m_isFavorite = other->m_isFavorite; - emit isFavoriteChanged(this->m_isFavorite); - } - if (this->m_likes != other->m_likes) { - this->m_likes = other->m_likes; - emit likesChanged(likes()); - } - if (this->m_played != other->m_played) { - this->m_played = other->m_played; - emit playedChanged(this->m_played); - } -} - -// Item - -Item::Item(QObject *parent) : RemoteData(parent) { - connect(this, &RemoteData::apiClientChanged, this, [this](ApiClient *newApiClient) { - connect(newApiClient, &ApiClient::userDataChanged, this, &Item::onUserDataChanged); - }); -} - -Item::Item(QString id, ApiClient *apiClient, QObject *parent) - : RemoteData(parent), m_id(id) { - connect(this, &RemoteData::apiClientChanged, this, [this](ApiClient *newApiClient) { - connect(newApiClient, &ApiClient::userDataChanged, this, &Item::onUserDataChanged); - }); - setApiClient(apiClient); -} - -QString Item::getDataUrl() const { - return QString("/Users/") + m_apiClient->userId() + "/Items/" + m_id; -} - -bool Item::canReload() const { - return !m_id.isNull(); -} - -void Item::setJellyfinId(QString newId) { - m_id = newId.trimmed(); - if (m_id != newId) { - emit jellyfinIdChanged(m_id); - reload(); - } -} - - - -void Item::onUserDataChanged(const QString &itemId, QSharedPointer userData) { - if (itemId != m_id || m_userData == nullptr) return; - m_userData->onUpdated(userData); -} - -void registerSerializableJsonTypes(const char* URI) { - qmlRegisterType(URI, 1, 0, "MediaStream"); - qmlRegisterType(URI, 1, 0, "NameGuidPair"); - qmlRegisterType(URI, 1, 0, "User"); - qmlRegisterType(URI, 1, 0, "UserData"); - qmlRegisterType(URI, 1, 0, "JellyfinItem"); -} -} +} // NS Jellyfin diff --git a/core/src/serverdiscoverymodel.cpp b/core/src/serverdiscoverymodel.cpp index daa21bf..56aafba 100644 --- a/core/src/serverdiscoverymodel.cpp +++ b/core/src/serverdiscoverymodel.cpp @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff --git a/core/src/support/loader.cpp b/core/src/support/loader.cpp new file mode 100644 index 0000000..127fa1a --- /dev/null +++ b/core/src/support/loader.cpp @@ -0,0 +1,6 @@ +#include + +Loader::Loader() +{ + +} diff --git a/core/src/jellyfinwebsocket.cpp b/core/src/websocket.cpp similarity index 95% rename from core/src/jellyfinwebsocket.cpp rename to core/src/websocket.cpp index 803e1ed..9e494a7 100644 --- a/core/src/jellyfinwebsocket.cpp +++ b/core/src/websocket.cpp @@ -1,6 +1,6 @@ /* Sailfin: a Jellyfin client written using Qt -Copyright (C) 2020 Chris Josten +Copyright (C) 2021 Chris Josten This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -16,7 +16,10 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "JellyfinQt/jellyfinwebsocket.h" + +#include "JellyfinQt/websocket.h" + +#include namespace Jellyfin { WebSocket::WebSocket(ApiClient *client) @@ -102,9 +105,9 @@ void WebSocket::textMessageReceived(const QString &message) { } QJsonArray userDataList = data2["UserDataList"].toArray(); for (QJsonValue val: userDataList) { - QSharedPointer userData(new UserData, &QObject::deleteLater); - userData->deserialize(val.toObject()); + UserData* userData = UserItemDataDto::fromJSON(val.toObject(), this); m_apiClient->onUserDataChanged(userData->itemId(), userData); + userData->deleteLater(); } } diff --git a/rpm/harbour-sailfin.yaml b/rpm/harbour-sailfin.yaml index 41db878..22e1d5e 100644 --- a/rpm/harbour-sailfin.yaml +++ b/rpm/harbour-sailfin.yaml @@ -48,8 +48,7 @@ Macros: - '_unpackaged_files_terminate_build; 0 ' ConfigOptions: - - -DCMAKE_BUILD_TYPE=Release - - -DSAILFISHOS=1 + - -DPLATFORM_SAILFISHOS=1 - -DSAILFIN_VERSION='%{version}-%{release}' # ExtraInstall: | diff --git a/sailfish/CMakeLists.txt b/sailfish/CMakeLists.txt index f45763f..be10c20 100644 --- a/sailfish/CMakeLists.txt +++ b/sailfish/CMakeLists.txt @@ -30,7 +30,8 @@ set(sailfin_QML_SOURCES qml/components/MoreSection.qml qml/components/PlainLabel.qml qml/components/PlaybackBar.qml - qml/components/PlayToolbar.qml + qml/components/PlayQueue.qml + qml/components/PlayToolbar.qml qml/components/RemoteImage.qml qml/components/Shim.qml qml/components/UserGridDelegate.qml @@ -65,6 +66,8 @@ target_link_libraries(harbour-sailfin PRIVATE Qt5::Gui Qt5::Qml Qt5::Quick Sailf # Note: this may break when the compiler changes. -rdynamic and -pie seem to be needed for the # invoker/booster to work jellyfin-qt "-Wl,-rpath,${CMAKE_INSTALL_LIBDIR} -rdynamic -pie") +target_compile_definitions(harbour-sailfin + PRIVATE $<$,$>:QT_QML_DEBUG>) install(TARGETS harbour-sailfin RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) @@ -107,5 +110,5 @@ install(FILES icons/172x172/harbour-sailfin.png # format. file(WRITE "${CMAKE_BINARY_DIR}/QtCreatorDeployment.txt" "${CMAKE_INSTALL_PREFIX} - sailfish/harbour-sailfin:bin + ${CMAKE_BINARY_DIR}/sailfish/harbour-sailfin:bin ") diff --git a/sailfish/harbour-sailfin.desktop b/sailfish/harbour-sailfin.desktop index 5491e87..ef6febb 100644 --- a/sailfish/harbour-sailfin.desktop +++ b/sailfish/harbour-sailfin.desktop @@ -3,7 +3,7 @@ Type=Application Version=1.1 X-Nemo-Application-Type=silica-qt5 Icon=harbour-sailfin -Exec=harbour-sailfin +Exec=harbour-sailfin --attempt-sandbox Name=Sailfin @@ -17,3 +17,8 @@ GenericName=Jellyfin client Comment=Stream audio and video from your Jellyfin media server Categories=AudioVideo;Player + +[X-Sailjail] +Permissions=Internet;Audio +OrganizationName=nl.netsoj.chris +ApplicationName=Sailfin diff --git a/sailfish/qml/Utils.js b/sailfish/qml/Utils.js index 01c1efe..6ac575e 100644 --- a/sailfish/qml/Utils.js +++ b/sailfish/qml/Utils.js @@ -48,7 +48,7 @@ function ticksToText(ticks, showHours) { } function itemImageUrl(baseUrl, item, type, options) { - if (!item.imageTags[type]) { return "" } + if (item === null || !item.imageTags[type]) { return "" } return itemModelImageUrl(baseUrl, item.jellyfinId, item.imageTags[type], type, options) } diff --git a/sailfish/qml/components/PlayQueue.qml b/sailfish/qml/components/PlayQueue.qml new file mode 100644 index 0000000..73ddffe --- /dev/null +++ b/sailfish/qml/components/PlayQueue.qml @@ -0,0 +1,16 @@ +import QtQuick 2.6 +import Sailfish.Silica 1.0 + +import nl.netsoj.chris.Jellyfin 1.0 + +import "music" + +SilicaListView { + header: SectionHeader { text: qsTr("Play queue") } + delegate: SongDelegate { + artists: model.artists + name: model.name + width: parent.width + indexNumber: ListView.index + } +} diff --git a/sailfish/qml/components/PlaybackBar.qml b/sailfish/qml/components/PlaybackBar.qml index e9a3d35..5068537 100644 --- a/sailfish/qml/components/PlaybackBar.qml +++ b/sailfish/qml/components/PlaybackBar.qml @@ -43,6 +43,8 @@ PanelBackground { property PlaybackManager manager property bool open property real visibleSize: height + property bool isFullPage: false + property bool showQueue: false property bool _pageWasShowingNavigationIndicator @@ -53,7 +55,7 @@ PanelBackground { id: backgroundItem width: parent.width height: parent.height - onClicked: playbackBar.state = (playbackBar.state == "large" ? "open" : "large") + onClicked: playbackBar.state = "large" RemoteImage { @@ -64,7 +66,10 @@ PanelBackground { top: parent.top } width: height - blurhash: manager.item.imageBlurHashes["Primary"][manager.item.imageTags["Primary"]] + Binding on blurhash { + when: manager.item !== null && "Primary" in manager.item.imageBlurHashes + value: manager.item.imageBlurHashes["Primary"][manager.item.imageTags["Primary"]] + } source: largeAlbumArt.source fillMode: Image.PreserveAspectCrop @@ -77,6 +82,20 @@ PanelBackground { Behavior on opacity { FadeAnimation {} } } } + Loader { + id: queueLoader + source: Qt.resolvedUrl("PlayQueue.qml") + anchors.fill: albumArt + active: false + visible: false + Binding { + when: queueLoader.item !== null + target: queueLoader.item + property: "model" + value: manager.queue + //currentIndex: manager.queueIndex + } + } Column { id: artistInfo @@ -106,6 +125,7 @@ PanelBackground { case "Audio": return manager.item.artists.join(", ") } + return qsTr("Not audio") } width: Math.min(contentWidth, parent.width) font.pixelSize: Theme.fontSizeSmall @@ -146,11 +166,11 @@ PanelBackground { rightMargin: Theme.paddingMedium verticalCenter: parent.verticalCenter } - icon.source: appWindow.mediaPlayer.playbackState === MediaPlayer.PlayingState + icon.source: manager.playbackState === MediaPlayer.PlayingState ? "image://theme/icon-m-pause" : "image://theme/icon-m-play" - onClicked: appWindow.mediaPlayer.playbackState === MediaPlayer.PlayingState - ? appWindow.mediaPlayer.pause() - : appWindow.mediaPlayer.play() + onClicked: manager.playbackState === MediaPlayer.PlayingState + ? manager.pause() + : manager.play() } IconButton { id: nextButton @@ -171,8 +191,10 @@ PanelBackground { verticalCenter: playButton.verticalCenter } icon.source: "image://theme/icon-m-menu" + icon.highlighted: showQueue enabled: false opacity: 0 + onClicked: showQueue = !showQueue } ProgressBar { @@ -182,9 +204,9 @@ PanelBackground { leftMargin: Theme.itemSizeLarge rightMargin: 0 minimumValue: 0 - value: appWindow.mediaPlayer.position - maximumValue: appWindow.mediaPlayer.duration - indeterminate: [MediaPlayer.Loading, MediaPlayer.Buffering].indexOf(appWindow.mediaPlayer.status) >= 0 + value: manager.position + maximumValue: manager.duration + indeterminate: [MediaPlayer.Loading, MediaPlayer.Buffering].indexOf(manager.mediaStatus) >= 0 } Slider { @@ -192,17 +214,17 @@ PanelBackground { animateValue: false anchors.verticalCenter: progressBar.top minimumValue: 0 - value: appWindow.mediaPlayer.position - maximumValue: appWindow.mediaPlayer.duration + value: manager.position + maximumValue: manager.duration width: parent.width stepSize: 1000 valueText: Utils.timeToText(value) enabled: false visible: false onDownChanged: { if (!down) { - appWindow.mediaPlayer.seek(value); + manager.seek(value); // For some reason, the binding breaks when dragging the slider. - value = Qt.binding(function() { return appWindow.mediaPlayer.position}) + value = Qt.binding(function() { return manager.position}) } } } @@ -212,7 +234,7 @@ PanelBackground { states: [ State { name: "" - when: appWindow.mediaPlayer.playbackState !== MediaPlayer.StoppedState && state != "page" && !("__hidePlaybackBar" in pageStack.currentPage) + when: manager.playbackState !== MediaPlayer.StoppedState && !isFullPage && !("__hidePlaybackBar" in pageStack.currentPage) }, State { name: "large" @@ -328,27 +350,46 @@ PanelBackground { } }, - State { - name: "hidden" - when: (appWindow.mediaPlayer.playbackState === MediaPlayer.StoppedState || "__hidePlaybackBar" in pageStack.currentPage) && state != "page" - PropertyChanges { - target: playbackBarTranslate - // + small padding since the ProgressBar otherwise would stick out - y: playbackBar.height + Theme.paddingSmall - } - PropertyChanges { - target: playbackBar - visibleSize: 0 - } - PropertyChanges { - target: albumArt - source: "" - } - }, - State { - name: "page" - extend: "large" - } + State { + name: "hidden" + when: (manager.playbackState === MediaPlayer.StoppedState || "__hidePlaybackBar" in pageStack.currentPage) && !isFullPage + PropertyChanges { + target: playbackBarTranslate + // + small padding since the ProgressBar otherwise would stick out + y: playbackBar.height + Theme.paddingSmall + } + PropertyChanges { + target: playbackBar + visibleSize: 0 + } + PropertyChanges { + target: albumArt + source: "" + } + }, + State { + name: "page" + when: isFullPage && !showQueue + extend: "large" + PropertyChanges { + target: queueLoader + active: true + } + }, + State { + name: "pageQueue" + when: isFullPage && showQueue + extend: "page" + PropertyChanges { + target: queueLoader + visible: true + } + PropertyChanges { + target: largeAlbumArt + opacity: 0 + visible: false + } + } ] Component { @@ -371,7 +412,7 @@ PanelBackground { } Loader { Component.onCompleted: setSource(Qt.resolvedUrl("PlaybackBar.qml"), - {"state": "page", "manager": manager, "y": 0}) + {"isFullPage": true, "manager": manager, "y": 0}) anchors.fill: parent } } @@ -421,23 +462,19 @@ PanelBackground { }, Transition { from: "hidden" - SequentialAnimation { - ParallelAnimation { - NumberAnimation { - targets: [playbackBarTranslate, playbackBar] - properties: "y,visibileSize" - duration: 250 - easing.type: Easing.OutQuad - } + NumberAnimation { + targets: [playbackBarTranslate, playbackBar] + properties: "y,visibileSize" + duration: 250 + easing.type: Easing.OutQuad + } - NumberAnimation { - target: appWindow - property: "bottomMargin" - duration: 250 - to: Theme.itemSizeLarge - easing.type: Easing.OutQuad - } - } + NumberAnimation { + target: appWindow + property: "bottomMargin" + duration: 250 + to: Theme.itemSizeLarge + easing.type: Easing.OutQuad } }, Transition { diff --git a/sailfish/qml/components/VideoPlayer.qml b/sailfish/qml/components/VideoPlayer.qml index b062eb0..827e6ff 100644 --- a/sailfish/qml/components/VideoPlayer.qml +++ b/sailfish/qml/components/VideoPlayer.qml @@ -36,10 +36,10 @@ SilicaItem { property bool resume property int progress readonly property bool landscape: videoOutput.contentRect.width > videoOutput.contentRect.height - property MediaPlayer player - readonly property bool hudVisible: !hud.hidden || player.error !== MediaPlayer.NoError + readonly property bool hudVisible: !hud.hidden || manager.error !== MediaPlayer.NoError property int audioTrack: 0 property int subtitleTrack: 0 + property PlaybackManager manager; // Blackground to prevent the ambience from leaking through Rectangle { @@ -49,27 +49,27 @@ SilicaItem { VideoOutput { id: videoOutput - source: player + source: manager anchors.fill: parent } VideoHud { id: hud anchors.fill: parent - player: playerRoot.player + manager: playerRoot.manager title: videoPlayer.title Label { anchors.fill: parent anchors.margins: Theme.horizontalPageMargin text: item.jellyfinId + "\n" + appWindow.playbackManager.streamUrl + "\n" - + (appWindow.playbackManager.playMethod == PlaybackManager.DirectPlay ? "Direct Play" : "Transcoding") + "\n" - + player.position + "\n" - + player.status + "\n" - + player.bufferProgress + "\n" - + player.metaData.videoCodec + "@" + player.metaData.videoFrameRate + "(" + player.metaData.videoBitRate + ")" + "\n" - + player.metaData.audioCodec + "(" + player.metaData.audioBitRate + ")" + "\n" - + player.errorString + "\n" + + (manager.playMethod === PlaybackManager.DirectPlay ? "Direct Play" : "Transcoding") + "\n" + + manager.position + "\n" + + manager.mediaStatus + "\n" + // + player.bufferProgress + "\n" + // + player.metaData.videoCodec + "@" + player.metaData.videoFrameRate + "(" + player.metaData.videoBitRate + ")" + "\n" + // + player.metaData.audioCodec + "(" + player.metaData.audioBitRate + ")" + "\n" + // + player.errorString + "\n" font.pixelSize: Theme.fontSizeExtraSmall wrapMode: "WordWrap" visible: appWindow.showDebugInfo @@ -78,17 +78,17 @@ SilicaItem { VideoError { anchors.fill: videoOutput - player: playerRoot.player + player: manager } function start() { - appWindow.playbackManager.audioIndex = audioTrack - appWindow.playbackManager.subtitleIndex = subtitleTrack - appWindow.playbackManager.resumePlayback = resume - appWindow.playbackManager.item = item + manager.audioIndex = audioTrack + manager.subtitleIndex = subtitleTrack + manager.resumePlayback = resume + manager.playItem(item.jellyfinId) } function stop() { - player.stop() + manager.stop(); } } diff --git a/sailfish/qml/components/videoplayer/VideoError.qml b/sailfish/qml/components/videoplayer/VideoError.qml index 3214116..1a1aa84 100644 --- a/sailfish/qml/components/videoplayer/VideoError.qml +++ b/sailfish/qml/components/videoplayer/VideoError.qml @@ -20,9 +20,11 @@ import QtQuick 2.6 import Sailfish.Silica 1.0 import QtMultimedia 5.6 +import nl.netsoj.chris.Jellyfin 1.0 + Rectangle { id: videoError - property MediaPlayer player + property PlaybackManager player color: pal.palette.overlayBackgroundColor opacity: player.error === MediaPlayer.NoError ? 0.0 : 1.0 Behavior on opacity { FadeAnimator {} } diff --git a/sailfish/qml/components/videoplayer/VideoHud.qml b/sailfish/qml/components/videoplayer/VideoHud.qml index 8ea41f8..4876f5f 100644 --- a/sailfish/qml/components/videoplayer/VideoHud.qml +++ b/sailfish/qml/components/videoplayer/VideoHud.qml @@ -20,6 +20,8 @@ import QtQuick 2.6 import QtMultimedia 5.6 import Sailfish.Silica 1.0 +import nl.netsoj.chris.Jellyfin 1.0 + import "../../Utils.js" as Utils /** @@ -28,7 +30,7 @@ import "../../Utils.js" as Utils */ Item { id: videoHud - property MediaPlayer player + property PlaybackManager manager property string title property bool _manuallyActivated: false readonly property bool hidden: opacity == 0.0 @@ -76,19 +78,19 @@ Item { id: busyIndicator anchors.centerIn: parent size: BusyIndicatorSize.Medium - running: [MediaPlayer.Loading, MediaPlayer.Stalled].indexOf(player.status) >= 0 + running: [MediaPlayer.Loading, MediaPlayer.Stalled].indexOf(manager.mediaStatus) >= 0 } IconButton { id: playPause enabled: !hidden anchors.centerIn: parent - icon.source: player.playbackState == MediaPlayer.PausedState ? "image://theme/icon-l-play" : "image://theme/icon-l-pause" + icon.source: manager.playbackState === MediaPlayer.PausedState ? "image://theme/icon-l-play" : "image://theme/icon-l-pause" onClicked: { - if (player.playbackState == MediaPlayer.PlayingState) { - player.pause() + if (manager.playbackState === MediaPlayer.PlayingState) { + manager.pause() } else { - player.play() + manager.play() } } visible: !busyIndicator.running @@ -99,7 +101,7 @@ Item { anchors.bottom: parent.bottom width: parent.width height: progress.height - visible: [MediaPlayer.Unavailable, MediaPlayer.Loading, MediaPlayer.NoMedia].indexOf(player.status) == -1 + visible: [MediaPlayer.Unavailable, MediaPlayer.Loading, MediaPlayer.NoMedia].indexOf(manager.mediaStatus) == -1 gradient: Gradient { GradientStop { position: 0.0; color: Theme.rgba(palette.overlayBackgroundColor, 0.15); } @@ -116,19 +118,19 @@ Item { anchors.left: parent.left anchors.leftMargin: Theme.horizontalPageMargin anchors.verticalCenter: progressSlider.verticalCenter - text: Utils.timeToText(player.position) + text: Utils.timeToText(manager.position) } Slider { id: progressSlider - enabled: player.seekable - value: player.position - maximumValue: player.duration + enabled: manager.seekable + value: manager.position + maximumValue: manager.duration stepSize: 1000 anchors.left: playedTime.right anchors.right: totalTime.left anchors.verticalCenter: parent.verticalCenter - onDownChanged: if (!down) { player.seek(value) } + onDownChanged: if (!down) { manager.seek(value) } } Label { @@ -136,7 +138,7 @@ Item { anchors.right: parent.right anchors.rightMargin: Theme.horizontalPageMargin anchors.verticalCenter: progress.verticalCenter - text: Utils.timeToText(player.duration) + text: Utils.timeToText(manager.duration) } } } @@ -144,10 +146,10 @@ Item { Connections { - target: player - onStatusChanged: { - console.log("New mediaPlayer status: " + player.status) - switch(player.status) { + target: manager + onMediaStatusChanged: { + console.log("New mediaPlayer status: " + manager.mediaStatus) + switch(manager.mediaStatus) { case MediaPlayer.Loaded: case MediaPlayer.Buffering: show(false) diff --git a/sailfish/qml/harbour-sailfin.qml b/sailfish/qml/harbour-sailfin.qml index 2522a45..44af789 100644 --- a/sailfish/qml/harbour-sailfin.qml +++ b/sailfish/qml/harbour-sailfin.qml @@ -32,7 +32,7 @@ ApplicationWindow { id: appWindow property bool _hasInitialized: false // The global mediaPlayer instance - readonly property MediaPlayer mediaPlayer: _mediaPlayer + //readonly property MediaPlayer mediaPlayer: _mediaPlayer readonly property PlaybackManager playbackManager: _playbackManager // Data of the currently selected item. For use on the cover. @@ -41,7 +41,7 @@ ApplicationWindow { property string collectionId // Bad way to implement settings, but it'll do for now. - property bool showDebugInfo: false + property bool showDebugInfo: true property bool _hidePlaybackBar: false @@ -65,13 +65,13 @@ ApplicationWindow { } } cover: { - if ([MediaPlayer.NoMedia, MediaPlayer.InvalidMedia, MediaPlayer.UnknownStatus].indexOf(mediaPlayer.status) >= 0) { + if ([MediaPlayer.NoMedia, MediaPlayer.InvalidMedia, MediaPlayer.UnknownStatus].indexOf(playbackManager.status) >= 0) { if (itemData) { return Qt.resolvedUrl("cover/PosterCover.qml") } else { return Qt.resolvedUrl("cover/CoverPage.qml") } - } else if (mediaPlayer.hasVideo){ + } else if (playbackManager.hasVideo){ return Qt.resolvedUrl("cover/VideoCover.qml") } } @@ -87,26 +87,25 @@ ApplicationWindow { } } - MediaPlayer { + /*MediaPlayer { id: _mediaPlayer autoPlay: true - } + }*/ PlaybackManager { id: _playbackManager apiClient: ApiClient - mediaPlayer: _mediaPlayer audioIndex: 0 autoOpen: true } // Keep the sytem alive while playing media KeepAlive { - enabled: _mediaPlayer.playbackState == MediaPlayer.PlayingState + enabled: playbackManager.playbackState === MediaPlayer.PlayingState } DisplayBlanking { - preventBlanking: _mediaPlayer.playbackState == MediaPlayer.PlayingState && _mediaPlayer.hasVideo + preventBlanking: playbackManager.playbackState === MediaPlayer.PlayingState && playbackManager.hasVideo } PlaybackBar { diff --git a/sailfish/qml/pages/MainPage.qml b/sailfish/qml/pages/MainPage.qml index c164b06..6cd44b0 100644 --- a/sailfish/qml/pages/MainPage.qml +++ b/sailfish/qml/pages/MainPage.qml @@ -78,7 +78,7 @@ Page { //- Section header for films and TV shows that an user hasn't completed yet. text: qsTr("Resume watching") clickable: false - busy: userResumeModel.status == ApiModel.Loading + busy: userResumeModel.status === ApiModel.Loading Loader { width: parent.width sourceComponent: carrouselView @@ -97,7 +97,7 @@ Page { //- Section header for next episodes in a TV show that an user was watching. text: qsTr("Next up") clickable: false - busy: showNextUpModel.status == ApiModel.Loading + busy: showNextUpModel.status === ApiModel.Loading Loader { width: parent.width @@ -121,9 +121,9 @@ Page { model: mediaLibraryModel MoreSection { text: model.name - busy: userItemModel.status != ApiModel.Ready + busy: userItemModel.status !== ApiModel.Ready - onHeaderClicked: pageStack.push(Qt.resolvedUrl("itemdetails/CollectionPage.qml"), {"itemId": model.id}) + onHeaderClicked: pageStack.push(Qt.resolvedUrl("itemdetails/CollectionPage.qml"), {"itemId": model.jellyfinId}) Loader { width: parent.width sourceComponent: carrouselView @@ -133,16 +133,12 @@ Page { UserItemLatestModel { id: userItemModel apiClient: ApiClient - parentId: model.id + parentId: jellyfinId limit: 16 } Connections { target: mediaLibraryModel - onStatusChanged: { - if (status == ApiModel.Ready) { - userItemModel.reload() - } - } + onReady: userItemModel.reload() } } } @@ -154,7 +150,6 @@ Page { anchors.fill: parent visible: false opacity: 0 - contentHeight: errorColumn.height Loader { sourceComponent: commonPullDownMenu; } @@ -220,15 +215,18 @@ Page { rightMargin: Theme.horizontalPageMargin spacing: Theme.paddingLarge delegate: LibraryItemDelegate { - property string id: model.id + property string id: model.jellyfinId title: model.name - poster: Utils.itemModelImageUrl(ApiClient.baseUrl, model.id, model.imageTags["primary"], "Primary", {"maxHeight": height}) - blurhash: model.imageBlurHashes["primary"][model.imageTags["primary"]] + poster: Utils.itemModelImageUrl(ApiClient.baseUrl, model.jellyfinId, model.imageTags["Primary"], "Primary", {"maxHeight": height}) + Binding on blurhash { + when: poster !== "" + value: model.imageBlurHashes["Primary"][model.imageTags["Primary"]] + } landscape: !Utils.usePortraitCover(collectionType) progress: (typeof model.userData !== "undefined") ? model.userData.playedPercentage / 100 : 0.0 onClicked: { - pageStack.push(Utils.getPageUrl(model.mediaType, model.type, model.isFolder), {"itemId": model.id}) + pageStack.push(Utils.getPageUrl(model.mediaType, model.type, model.isFolder), {"itemId": model.jellyfinId, "itemData": model.qtObject}) } } } diff --git a/sailfish/qml/pages/VideoPage.qml b/sailfish/qml/pages/VideoPage.qml index 6ebb7d2..4ea545b 100644 --- a/sailfish/qml/pages/VideoPage.qml +++ b/sailfish/qml/pages/VideoPage.qml @@ -44,7 +44,7 @@ Page { VideoPlayer { id: videoPlayer anchors.fill: parent - player: appWindow.mediaPlayer + manager: appWindow.playbackManager title: itemData.name audioTrack: videoPage.audioTrack subtitleTrack: videoPage.subtitleTrack @@ -61,7 +61,7 @@ Page { onStatusChanged: { switch(status) { - case PageStatus.Inactive: + case PageStatus.Deactivating: videoPlayer.stop() break; case PageStatus.Active: diff --git a/sailfish/qml/pages/itemdetails/BaseDetailPage.qml b/sailfish/qml/pages/itemdetails/BaseDetailPage.qml index 6be2fbb..bdcefcc 100644 --- a/sailfish/qml/pages/itemdetails/BaseDetailPage.qml +++ b/sailfish/qml/pages/itemdetails/BaseDetailPage.qml @@ -18,7 +18,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ import QtQuick 2.6 import Sailfish.Silica 1.0 -import Sailfish.Silica.Background 1.0 import nl.netsoj.chris.Jellyfin 1.0 @@ -54,23 +53,7 @@ Page { } } - allowedOrientations: Orientation.All - background: _chosenBackdropImage ? backdropBackground : null - - Component { - id: backdropBackground - ThemeBackground { - sourceItem: backdrop - backgroundMaterial: "blur" - } - } - - ThemeWallpaper { - id: backdrop - source: _chosenBackdropImage - visible: false - } PageBusyIndicator { running: pageRoot._loading @@ -105,8 +88,7 @@ Page { id: jItem apiClient: ApiClient onStatusChanged: { - console.log("Status changed: " + newStatus, JSON.stringify(jItem)) - console.log(jItem.mediaStreams) + //console.log("Status changed: " + newStatus, JSON.stringify(jItem)) if (status == JellyfinItem.Ready) { updateBackdrop() } diff --git a/sailfish/qml/pages/itemdetails/CollectionPage.qml b/sailfish/qml/pages/itemdetails/CollectionPage.qml index 05bc79a..9a9f89d 100644 --- a/sailfish/qml/pages/itemdetails/CollectionPage.qml +++ b/sailfish/qml/pages/itemdetails/CollectionPage.qml @@ -40,7 +40,7 @@ BaseDetailPage { anchors.fill: parent model: collectionModel cellWidth: Constants.libraryDelegateWidth - cellHeight: Utils.usePortraitCover(itemData.type) ? Constants.libraryDelegatePosterHeight + cellHeight: Utils.usePortraitCover(itemData.collectionType) ? Constants.libraryDelegatePosterHeight : Constants.libraryDelegateHeight visible: itemData.status !== JellyfinItem.Error @@ -54,14 +54,14 @@ BaseDetailPage { text: qsTr("Sort by") onClicked: pageStack.push(sortPageComponent) } - busy: collectionModel.status == ApiModel.Loading + busy: collectionModel.status === ApiModel.Loading } delegate: GridItem { RemoteImage { id: itemImage anchors.fill: parent - source: Utils.itemModelImageUrl(ApiClient.baseUrl, model.id, model.imageTags.primary, "Primary", {"maxWidth": width}) - blurhash: model.imageBlurHashes.primary[model.imageTags.primary] + source: Utils.itemModelImageUrl(ApiClient.baseUrl, model.jellyfinId, model.imageTags.Primary, "Primary", {"maxWidth": width}) + blurhash: model.imageBlurHashes.Primary[model.imageTags.Primary] fallbackColor: Utils.colorFromString(model.name) fillMode: Image.PreserveAspectCrop clip: true @@ -90,7 +90,7 @@ BaseDetailPage { horizontalAlignment: Text.AlignLeft font.pixelSize: Theme.fontSizeSmall } - onClicked: pageStack.push(Utils.getPageUrl(model.mediaType, model.type, model.isFolder), {"itemId": model.id}) + onClicked: pageStack.push(Utils.getPageUrl(model.mediaType, model.type, model.isFolder), {"itemId": model.jellyfinId}) } ViewPlaceholder { diff --git a/sailfish/qml/pages/itemdetails/MusicAlbumPage.qml b/sailfish/qml/pages/itemdetails/MusicAlbumPage.qml index 0bee381..37cc64e 100644 --- a/sailfish/qml/pages/itemdetails/MusicAlbumPage.qml +++ b/sailfish/qml/pages/itemdetails/MusicAlbumPage.qml @@ -29,7 +29,6 @@ import "../.." BaseDetailPage { id: albumPageRoot readonly property int _songIndexWidth: 100 - property string _albumArtistText: itemData.albumArtist width: 800 * Theme.pixelRatio readonly property bool _twoColumns: albumPageRoot.width / Theme.pixelRatio >= 800 @@ -78,7 +77,7 @@ BaseDetailPage { artists: model.artists duration: model.runTimeTicks indexNumber: model.indexNumber - onClicked: window.playbackManager.playItem(model.id) + onClicked: window.playbackManager.playItem(model.jellyfinId) } VerticalScrollDecorator {} @@ -88,11 +87,6 @@ BaseDetailPage { Connections { target: itemData onAlbumArtistsChanged: { - console.log(itemData.albumArtists) - _albumArtistText = "" - for (var i = 0; i < itemData.albumArtists.length; i++) { - _albumArtistText += itemData.albumArtists[i]["name"] - } } } @@ -100,7 +94,7 @@ BaseDetailPage { item.albumArt = Qt.binding(function(){ return Utils.itemImageUrl(ApiClient.baseUrl, itemData, "Primary", {"maxWidth": parent.width})}) item.name = Qt.binding(function(){ return itemData.name}) item.releaseYear = Qt.binding(function() { return itemData.productionYear}) - item.albumArtist = Qt.binding(function() { return _albumArtistText}) + item.albumArtist = Qt.binding(function() { return itemData.albumArtist}) item.duration = Qt.binding(function() { return itemData.runTimeTicks}) item.songCount = Qt.binding(function() { return itemData.childCount}) item.listview = Qt.binding(function() { return list}) diff --git a/sailfish/qml/pages/itemdetails/SeasonPage.qml b/sailfish/qml/pages/itemdetails/SeasonPage.qml index 80e94cb..99c690a 100644 --- a/sailfish/qml/pages/itemdetails/SeasonPage.qml +++ b/sailfish/qml/pages/itemdetails/SeasonPage.qml @@ -60,7 +60,8 @@ BaseDetailPage { } width: Constants.libraryDelegateWidth height: Constants.libraryDelegateHeight - source: Utils.itemModelImageUrl(ApiClient.baseUrl, model.id, model.imageTags.primary, "Primary", {"maxHeight": height}) + source: Utils.itemModelImageUrl(ApiClient.baseUrl, model.jellyfinId, model.imageTags.Primary, "Primary", {"maxHeight": height}) + blurhash: model.imageBlurHashes.Primary[model.imageTags.Primary] fillMode: Image.PreserveAspectCrop clip: true @@ -140,7 +141,7 @@ BaseDetailPage { wrapMode: Text.WordWrap elide: Text.ElideRight } - onClicked: pageStack.push(Utils.getPageUrl(model.mediaType, model.type), {"itemId": model.id}) + onClicked: pageStack.push(Utils.getPageUrl(model.mediaType, model.type), {"itemId": model.jellyfinId}) } VerticalScrollDecorator {} diff --git a/sailfish/qml/pages/itemdetails/SeriesPage.qml b/sailfish/qml/pages/itemdetails/SeriesPage.qml index 9a7b9b7..933dc25 100644 --- a/sailfish/qml/pages/itemdetails/SeriesPage.qml +++ b/sailfish/qml/pages/itemdetails/SeriesPage.qml @@ -84,10 +84,10 @@ BaseDetailPage { leftMargin: Theme.horizontalPageMargin rightMargin: Theme.horizontalPageMargin delegate: LibraryItemDelegate { - poster: Utils.itemModelImageUrl(ApiClient.baseUrl, model.id, model.imageTags.primary, "Primary", {"maxHeight": height}) - blurhash: model.imageBlurHashes["primary"][model.imageTags.primary] + poster: Utils.itemModelImageUrl(ApiClient.baseUrl, model.jellyfinId, model.imageTags.Primary, "Primary", {"maxHeight": height}) + blurhash: model.imageBlurHashes["Primary"][model.imageTags.Primary] title: model.name - onClicked: pageStack.push(Utils.getPageUrl(model.mediaType, model.type), {"itemId": model.id}) + onClicked: pageStack.push(Utils.getPageUrl(model.mediaType, model.type), {"itemId": model.jellyfinId}) } } diff --git a/sailfish/qml/pages/itemdetails/VideoPage.qml b/sailfish/qml/pages/itemdetails/VideoPage.qml index bf2f0eb..4c8bc4f 100644 --- a/sailfish/qml/pages/itemdetails/VideoPage.qml +++ b/sailfish/qml/pages/itemdetails/VideoPage.qml @@ -33,6 +33,7 @@ BaseDetailPage { property alias subtitle: pageHeader.description default property alias _data: content.data property real _playbackProsition: itemData.userData.playbackPositionTicks + readonly property bool _userdataReady: itemData.status == JellyfinItem.Ready && itemData.userData != null SilicaFlickable { anchors.fill: parent contentHeight: content.height + Theme.paddingLarge @@ -57,8 +58,14 @@ BaseDetailPage { imageSource: Utils.itemImageUrl(ApiClient.baseUrl, itemData, "Primary", {"maxWidth": parent.width}) imageAspectRatio: Constants.horizontalVideoAspectRatio imageBlurhash: itemData.imageBlurHashes["Primary"][itemData.imageTags["Primary"]] - favourited: itemData.userData.isFavorite - playProgress: itemData.userData.playedPercentage / 100 + Binding on favourited { + when: _userdataReady + value: itemData.userData.isFavorite + } + Binding on playProgress { + when: _userdataReady + value: itemData.userData.playedPercentage / 100 + } onPlayPressed: pageStack.push(Qt.resolvedUrl("../VideoPage.qml"), {"itemData": itemData, "audioTrack": trackSelector.audioTrack, diff --git a/sailfish/qml/pages/setup/LoginDialog.qml b/sailfish/qml/pages/setup/LoginDialog.qml index 44fdafd..569bfe9 100644 --- a/sailfish/qml/pages/setup/LoginDialog.qml +++ b/sailfish/qml/pages/setup/LoginDialog.qml @@ -31,6 +31,7 @@ Dialog { id: loginDialog property string loginMessage property Page firstPage + property User selectedUser: null property string error @@ -92,16 +93,25 @@ Dialog { width: parent.width Flow { + id: userList width: parent.width Repeater { + id: userRepeater model: userModel delegate: UserGridDelegate { name: model.name - image: model.primaryImageTag ? "%1/Users/%2/Images/Primary?tag=%3".arg(ApiClient.baseUrl).arg(model.id).arg(model.primaryImageTag) : "" + image: model.primaryImageTag ? "%1/Users/%2/Images/Primary?tag=%3".arg(ApiClient.baseUrl).arg(model.jellyfinId).arg(model.primaryImageTag) : "" highlighted: model.name === username.text + onHighlightedChanged: { + if (highlighted) { + selectedUser = model.qtObject + } + } onClicked: { username.text = model.name - password.focus = true + if (!password.activeFocus) { + password.focus = true + } } } } @@ -119,18 +129,23 @@ Dialog { placeholderText: qsTr("Username") label: placeholderText errorHighlight: error - EnterKey.iconSource: "image://theme/icon-m-enter-next" - EnterKey.onClicked: password.focus = true + EnterKey.iconSource: "image://theme/icon-m-enter-" + (password.enabled ? "next" : "accept") + EnterKey.onClicked: password.enabled ? password.focus = true : accept() + onTextChanged: { + // Wil be executed before the onHighlightChanged of the UserDelegate + // This is done to update the UI after an user is selected and this field has + // been changed, to not let the UI be in an invalid state (e.g. no user selected, password field disabled) + selectedUser = null + } } - TextField { + PasswordField { id: password width: parent.width //: Label placeholder for password field placeholderText: qsTr("Password") label: placeholderText - echoMode: TextInput.Password errorHighlight: error EnterKey.iconSource: "image://theme/icon-m-enter-accept" @@ -169,4 +184,41 @@ Dialog { } } canAccept: username.text + + states: [ + State { + name: "noUsers" + when: userRepeater.count == 0 + PropertyChanges { + target: userList + visible: false + } + }, + State { + name: "users" + when: userRepeater.count != 0 && selectedUser === null + PropertyChanges { + target: userList + visible: true + } + }, + State { + name: "selectedUserPassword" + when: selectedUser !== null && selectedUser.hasPassword + extend: "users" + PropertyChanges { + target: password + enabled: true + } + }, + State { + name: "selectedUserNoPassword" + when: selectedUser !== null && !selectedUser.hasPassword + extend: "users" + PropertyChanges { + target: password + enabled: false + } + } + ] } diff --git a/sailfish/src/harbour-sailfin.cpp b/sailfish/src/harbour-sailfin.cpp index c1216f3..f3a86ca 100644 --- a/sailfish/src/harbour-sailfin.cpp +++ b/sailfish/src/harbour-sailfin.cpp @@ -21,17 +21,25 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #include #endif +#include +#include +#include #include #include #include #include #include +#include #include #include +static const char *SANDBOX_PROGRAM = "/usr/bin/sailjail"; + int main(int argc, char *argv[]) { + //QQmlDebuggingEnabler enabler; + //enabler.startTcpDebugServer(9999); // SailfishApp::main() will display "qml/harbour-sailfin.qml", if you need more // control over initialization, you can use: // @@ -42,6 +50,30 @@ int main(int argc, char *argv[]) { // // To display the view, call "show()" (will show fullscreen on device). QGuiApplication *app = SailfishApp::application(argc, argv); + app->setOrganizationName("nl.netsoj.chris"); + app->setOrganizationDomain("nl.netsoj.chris"); + app->setApplicationName("Sailfin"); + //: Application display name + app->setApplicationDisplayName(QObject::tr("Sailfin")); + + bool canSanbox = QFile::exists(SANDBOX_PROGRAM); + QCommandLineParser cmdParser; + cmdParser.addHelpOption(); + cmdParser.addVersionOption(); + QCommandLineOption sandboxOption("attempt-sandbox", app->translate("Command line argument description", "Try to start with FireJail.")); + if (canSanbox) { + cmdParser.addOption(sandboxOption); + } + cmdParser.process(*app); + + if (canSanbox && cmdParser.isSet(sandboxOption)) { + qDebug() << "Restarting in Sanbox mode"; + QProcess::execute(QString(SANDBOX_PROGRAM), + QStringList() << "-p" << "harbour-sailfin.desktop" << "/usr/bin/harbour-sailfin"); + return 0; + } + + Jellyfin::registerTypes(); QQuickView *view = SailfishApp::createView(); view->setSource(SailfishApp::pathToMainQml());